Mercurial > projects > ddmd
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 */ |