annotate tests/mini/interface3.d @ 979:523bf4f166bc

Fix some assembler issues: The assembler was miscompiling "add" (specifically, the "add reg/mem, imm" variations). The change that caused this seems to have been made because without it, some "add"s didn't compile at all. This patch reverts the previous change, and makes sure assembler operands are remapped correctly even though the input operands auto-generated due to updating operations aren't explicitly used.
author Frits van Bommel <fvbommel wxs.nl>
date Wed, 18 Feb 2009 21:46:14 +0100
parents 340acf1535d0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
113
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
1 module interface3;
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
2
133
44a95ac7368a [svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents: 113
diff changeset
3 extern(C) int printf(char*,...);
44a95ac7368a [svn r137] Many fixes towards tango.io.Console working, but not quite there yet...
lindquist
parents: 113
diff changeset
4
113
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
5 interface I
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
6 {
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
7 void func();
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
8 }
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
9
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
10 class C : I
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
11 {
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
12 int i = 42;
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
13 override void func()
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
14 {
797
340acf1535d0 Removed KDevelop3 project files, CMake can generate them just fine!
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 341
diff changeset
15 printf("hello %d from %p\n", i, this);
113
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
16 i++;
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
17 }
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
18 }
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
19
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
20 void main()
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
21 {
797
340acf1535d0 Removed KDevelop3 project files, CMake can generate them just fine!
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 341
diff changeset
22 auto c = new C;
113
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
23 {c.func();}
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
24 {
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
25 I i = c;
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
26 {i.func();}
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
27 }
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
28 {printf("final %d\n", c.i);}
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
29 {assert(c.i == 44);}
27b9f749d9fe [svn r117] Initial working implementation of interfaces.
lindquist
parents:
diff changeset
30 }