annotate tests/mini/nested6a.d @ 1602:a413ae7329bf

Merge DMD r243: some harmonization with D2 dmd --- dmd/aggregate.h | 24 ++++- dmd/attrib.c | 63 ++++++---- dmd/attrib.h | 10 +- dmd/declaration.h | 5 +- dmd/func.c | 337 ++++++++++++++++++++++------------------------------- dmd/mars.c | 2 +- dmd/mars.h | 7 + dmd/mtype.h | 13 ++- dmd/parse.c | 32 ++++- dmd/parse.h | 14 ++- dmd/scope.h | 2 +- 11 files changed, 263 insertions(+), 246 deletions(-)
author Leandro Lucarella <llucax@gmail.com>
date Wed, 06 Jan 2010 15:18:19 -0300
parents 45a67b6f1310
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
1 module nested6a;
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
2 extern(C) int printf(char*, ...);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
3
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
4 void main()
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
5 {
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
6 int i = 42;
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
7
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
8 printf("main() %d\n", i++);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
9
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
10 class C
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
11 {
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
12 int j;
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
13 void func()
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
14 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
15 int k;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
16 printf("C.func() %d\n", i++);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
17
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
18 class C2
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
19 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
20 int l;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
21 void func2()
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
22 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
23 printf("in C2.func2()\n");
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
24 printf("C2.func2() %d\n", i++);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
25 }
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
26 int m;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
27 }
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
28
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
29 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
30 printf("new C2\n");
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
31 auto c2 = new C2;
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
32 printf("C2.func2()\n");
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
33 c2.func2();
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
34 }
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
35 int n;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
36 }
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
37 int o;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
38 }
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
39
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
40 auto c = new C;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
41 c.func();
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
42 }