comparison dmd/MulAssignExp.d @ 130:60bb0fe4563e

dmdfe 2.037 first main iteration
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Thu, 09 Sep 2010 22:51:44 +0100
parents 9e39c7de8438
children e3afd1303184
comparison
equal deleted inserted replaced
129:010eb8f0e18d 130:60bb0fe4563e
12 import dmd.Identifier; 12 import dmd.Identifier;
13 import dmd.IRState; 13 import dmd.IRState;
14 import dmd.TOK; 14 import dmd.TOK;
15 import dmd.Type; 15 import dmd.Type;
16 import dmd.TY; 16 import dmd.TY;
17 import dmd.ArrayLengthExp;
17 18
18 import dmd.backend.elem; 19 import dmd.backend.elem;
19 import dmd.backend.OPER; 20 import dmd.backend.OPER;
20 import dmd.expression.Mul; 21 import dmd.expression.Mul;
21 import dmd.expression.Util; 22 import dmd.expression.Util;
36 37
37 e = op_overload(sc); 38 e = op_overload(sc);
38 if (e) 39 if (e)
39 return e; 40 return e;
40 41
42 version(DMDV2) {
43 if (e1.op == TOK.TOKarraylength)
44 {
45 e = ArrayLengthExp.rewriteOpAssign(this);
46 e = e.semantic(sc);
47 return e;
48 }
49 }
50
41 if (e1.op == TOKslice) 51 if (e1.op == TOKslice)
42 { // T[] -= ... 52 { // T[] -= ...
43 typeCombine(sc); 53 typeCombine(sc);
44 type = e1.type; 54 type = e1.type;
45 return arrayOp(sc); 55 return arrayOp(sc);
94 override void buildArrayIdent(OutBuffer buf, Expressions arguments) 104 override void buildArrayIdent(OutBuffer buf, Expressions arguments)
95 { 105 {
96 AssignExp_buildArrayIdent(buf, arguments, "Mul"); 106 AssignExp_buildArrayIdent(buf, arguments, "Mul");
97 } 107 }
98 108
99 override Expression buildArrayLoop(Arguments fparams) 109 override Expression buildArrayLoop(Parameters fparams)
100 { 110 {
101 return AssignExp_buildArrayLoop!(typeof(this))(fparams); 111 return AssignExp_buildArrayLoop!(typeof(this))(fparams);
102 } 112 }
103 113
104 override Identifier opId() /* For operator overloading */ 114 override Identifier opId() /* For operator overloading */