Mercurial > projects > ldc
comparison tests/mini/s.d @ 341:1bb99290e03a trunk
[svn r362] Started merging the old 'test' dir as well as the newer 'tangotests' dir into 'tests/mini' and 'tests/minicomplex'.
author | lindquist |
---|---|
date | Sun, 13 Jul 2008 02:51:19 +0200 |
parents | tangotests/s.d@aeddd4d533b3 |
children | d92acb81a583 |
comparison
equal
deleted
inserted
replaced
340:351c0077d0b3 | 341:1bb99290e03a |
---|---|
1 module s; | |
2 | |
3 interface Inter | |
4 { | |
5 void inter(); | |
6 } | |
7 | |
8 interface Inter2 | |
9 { | |
10 void inter2(); | |
11 } | |
12 | |
13 interface InterOne : Inter | |
14 { | |
15 void interOne(); | |
16 } | |
17 | |
18 abstract class ClassAbstract : InterOne | |
19 { | |
20 abstract void inter(); | |
21 abstract void interOne(); | |
22 } | |
23 | |
24 class TheClassOne : ClassAbstract | |
25 { | |
26 void inter() | |
27 { | |
28 } | |
29 void interOne() | |
30 { | |
31 } | |
32 } | |
33 | |
34 class TheClassTwo : TheClassOne, Inter2 | |
35 { | |
36 long l; | |
37 double d; | |
38 | |
39 void inter2() | |
40 { | |
41 } | |
42 } | |
43 | |
44 extern(C) int printf(char*, ...); | |
45 | |
46 void main() | |
47 { | |
48 printf("classinfo test\n"); | |
49 { | |
50 auto c = new TheClassOne; | |
51 { | |
52 auto ci = c.classinfo; | |
53 printf("ci = %.*s\n", ci.name.length, ci.name.ptr); | |
54 printf("ci.interfaces.length = %lu\n", ci.interfaces.length); | |
55 printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr); | |
56 printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr); | |
57 } | |
58 } | |
59 { | |
60 auto c = new TheClassTwo; | |
61 { | |
62 auto ci = c.classinfo; | |
63 printf("ci = %.*s\n", ci.name.length, ci.name.ptr); | |
64 printf("ci.interfaces.length = %lu\n", ci.interfaces.length); | |
65 printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr); | |
66 printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr); | |
67 printf("i[2] = %.*s\n", ci.interfaces[2].classinfo.name.length, ci.interfaces[2].classinfo.name.ptr); | |
68 } | |
69 auto i = cast(InterOne)c; | |
70 { | |
71 auto ci = i.classinfo; | |
72 printf("ci = %.*s\n", ci.name.length, ci.name.ptr); | |
73 } | |
74 auto i2 = cast(Inter2)i; | |
75 { | |
76 auto ci = i2.classinfo; | |
77 printf("ci = %.*s\n", ci.name.length, ci.name.ptr); | |
78 } | |
79 auto o = cast(Object)i2; | |
80 { | |
81 auto ci = o.classinfo; | |
82 printf("ci = %.*s\n", ci.name.length, ci.name.ptr); | |
83 } | |
84 } | |
85 } |