Mercurial > projects > ldc
annotate tests/mini/d.d @ 1512:09734fb929c0
Make == for associative arrays test for equality, not identity.
_aaEq was added to runtime/internal/aaA.d which forwards to
TypeInfo_AssociativeArray.equals in genobj.d. On the codegen side, DtoAAEquals
was added to gen/aa.cpp and is called from EqualExp::toElem in gen/toir.cpp.
I assume that the frontend will produce an error if == is used on associative
arrays of different type.
This fixes DMD bug 1429.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sun, 21 Jun 2009 19:05:24 +0200 |
parents | 1bb99290e03a |
children |
rev | line source |
---|---|
1 | 1 module d; |
73 | 2 |
1 | 3 void main() |
4 { | |
5 int delegate() dg; | |
6 | |
7 struct S | |
8 { | |
9 int i; | |
10 long l; | |
11 float f; | |
12 | |
13 int func() | |
14 { | |
15 return 42; | |
16 } | |
17 } | |
18 | |
19 S s; | |
20 auto dg2 = &s.func; | |
73 | 21 int i = dg2(); |
22 assert(i == 42); | |
1 | 23 |
24 i = f(dg2, 1); | |
73 | 25 assert(i == 43); |
1 | 26 } |
27 | |
28 int f(int delegate() dg, int i) | |
29 { | |
30 return dg() + i; | |
31 } | |
32 | |
73 | 33 /* |
1 | 34 struct S |
35 { | |
36 int i; | |
37 float f; | |
38 int square() | |
39 { | |
40 return i*i; | |
41 } | |
42 } | |
43 | |
44 S s; | |
45 | |
46 void main() | |
47 { | |
48 auto dg = &s.square; | |
49 } | |
73 | 50 */ |