]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gdc.test/runnable/test5.d
d: Import dmd b8384668f, druntime e6caaab9, phobos 5ab9ad256 (v2.098.0-beta.1)
[thirdparty/gcc.git] / gcc / testsuite / gdc.test / runnable / test5.d
CommitLineData
b4c522fa
IB
1// PERMUTE_ARGS:
2
3extern(C) int printf(const char*, ...);
4
5interface foo
6{
7 extern (C) int testc(int i);
8 extern (Windows) int testw(int i);
9 extern (D) int testd(int i);
10}
11
12class bar : foo
13{
14 int x = 47;
15
16 extern (C)
17 int testc(int i)
18 {
19 printf("foo.testc(%p)\n", this);
20 assert(x == 47);
21 return i + x;
22 }
23
24 extern (Windows)
25 int testw(int i)
26 {
27 printf("foo.testw(%p)\n", this);
28 assert(x == 47);
29 return i + x;
30 }
31
32 extern (D)
33 int testd(int i)
34 {
35 printf("foo.testd(%p)\n", this);
36 assert(x == 47);
37 return i + x;
38 }
39}
40
41int def(foo f)
42{
5fee5ec3 43 printf("def(%p), %d\n", f, (cast(int*)f)[0]);
b4c522fa
IB
44 assert(f.testc(3) == 50);
45 assert(f.testd(7) == 54);
46 assert(f.testd(10) == 57);
47 return 0;
48}
49
50void abc(bar b)
51{
5fee5ec3 52 printf("abc(%p), %d\n", b, (cast(int*)b)[3]);
b4c522fa
IB
53 def(b);
54}
55
56int main()
57{
58 bar b = new bar();
59
5fee5ec3
IB
60 printf("b.size = x%zx\n", b.classinfo.initializer.length);
61 printf("bar.size = x%zx\n", bar.classinfo.initializer.length);
b4c522fa
IB
62 assert(b.classinfo.initializer.length == bar.classinfo.initializer.length);
63 abc(b);
64 return 0;
65}