Mercurial > projects > ddmd
comparison dmd/MinAssignExp.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.TY; | 14 import dmd.TY; |
15 import dmd.TOK; | 15 import dmd.TOK; |
16 import dmd.Id; | 16 import dmd.Id; |
17 import dmd.ArrayLengthExp; | |
17 | 18 |
18 import dmd.backend.elem; | 19 import dmd.backend.elem; |
19 import dmd.backend.Util; | 20 import dmd.backend.Util; |
20 import dmd.backend.OPER; | 21 import dmd.backend.OPER; |
21 | 22 |
37 e2 = resolveProperties(sc, e2); | 38 e2 = resolveProperties(sc, e2); |
38 | 39 |
39 e = op_overload(sc); | 40 e = op_overload(sc); |
40 if (e) | 41 if (e) |
41 return e; | 42 return e; |
43 | |
44 if (e1.op == TOKarraylength) | |
45 { | |
46 e = ArrayLengthExp.rewriteOpAssign(this); | |
47 e = e.semantic(sc); | |
48 return e; | |
49 } | |
42 | 50 |
43 if (e1.op == TOKslice) | 51 if (e1.op == TOKslice) |
44 { // T[] -= ... | 52 { // T[] -= ... |
45 typeCombine(sc); | 53 typeCombine(sc); |
46 type = e1.type; | 54 type = e1.type; |
77 override void buildArrayIdent(OutBuffer buf, Expressions arguments) | 85 override void buildArrayIdent(OutBuffer buf, Expressions arguments) |
78 { | 86 { |
79 AssignExp_buildArrayIdent(buf, arguments, "Min"); | 87 AssignExp_buildArrayIdent(buf, arguments, "Min"); |
80 } | 88 } |
81 | 89 |
82 override Expression buildArrayLoop(Arguments fparams) | 90 override Expression buildArrayLoop(Parameters fparams) |
83 { | 91 { |
84 return AssignExp_buildArrayLoop!(typeof(this))(fparams); | 92 return AssignExp_buildArrayLoop!(typeof(this))(fparams); |
85 } | 93 } |
86 | 94 |
87 override Identifier opId() /* For operator overloading */ | 95 override Identifier opId() /* For operator overloading */ |