annotate dmd/VersionSymbol.d @ 178:e3afd1303184

Many small bugs fixed Made all classes derive from TObject to detect memory leaks (functionality is disabled for now) Began work on overriding backend memory allocations (to avoid memory leaks)
author korDen
date Sun, 17 Oct 2010 07:42:00 +0400
parents 010eb8f0e18d
children b0d41ff5e0df
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
1 module dmd.VersionSymbol;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
2
114
e28b18c23469 added a module dmd.common for commonly used stuff
Trass3r
parents: 72
diff changeset
3 import dmd.common;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
4 import dmd.Dsymbol;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
5 import dmd.Loc;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
6 import dmd.Identifier;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
7 import dmd.Module;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
8 import dmd.Array;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
9 import dmd.VersionCondition;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
10 import dmd.Scope;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
11 import dmd.ScopeDsymbol;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
12 import dmd.HdrGenState;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
13 import dmd.String;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
14 import dmd.OutBuffer;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
15
129
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
16 /* VersionSymbol's happen for statements like:
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
17 * version = identifier;
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
18 * version = integer;
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
19 */
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
20 class VersionSymbol : Dsymbol
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
21 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
22 uint level;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
23
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
24 this(Loc loc, Identifier ident)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
25 {
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
26 register();
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
27 super(ident);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
28 this.loc = loc;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
29 }
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
30
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
31 this(Loc loc, uint level)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
32 {
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
33 register();
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
34 super();
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
35
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
36 this.level = level;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
37 this.loc = loc;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
38 }
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
39
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 13
diff changeset
40 override Dsymbol syntaxCopy(Dsymbol s)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
41 {
129
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
42 assert(!s);
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
43 VersionSymbol ds = new VersionSymbol(loc, ident);
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
44 ds.level = level;
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
45 return ds;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
46 }
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
47
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 13
diff changeset
48 override bool addMember(Scope sc, ScopeDsymbol s, bool memnum)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
49 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
50 //printf("VersionSymbol::addMember('%s') %s\n", sd->toChars(), toChars());
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
51
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
52 // Do not add the member to the symbol table,
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
53 // just make sure subsequent debug declarations work.
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
54 Module m = s.isModule();
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
55 if (ident)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
56 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
57 VersionCondition.checkPredefined(loc, ident.toChars());
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
58 if (!m)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
59 error("declaration must be at module level");
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
60 else
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
61 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
62 if (findCondition(m.versionidsNot, ident))
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
63 error("defined after use");
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
64 m.versionids.push(ident.toChars());
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
65 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
66 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
67 else
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
68 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
69 if (!m)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
70 error("level declaration must be at module level");
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
71 else
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
72 m.versionlevel = level;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
73 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
74
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
75 return false;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
76 }
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
77
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 13
diff changeset
78 override void semantic(Scope sc)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
79 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
80 }
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
81
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 13
diff changeset
82 override void toCBuffer(OutBuffer buf, HdrGenState* hgs)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
83 {
129
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
84 buf.writestring("version = ");
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
85 if (ident)
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
86 buf.writestring(ident.toChars());
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
87 else
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
88 buf.printf("%u", level);
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
89 buf.writestring(";");
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
90 buf.writenl();
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
91 }
178
e3afd1303184 Many small bugs fixed
korDen
parents: 129
diff changeset
92
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 13
diff changeset
93 override string kind()
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
94 {
129
010eb8f0e18d further work on dmd test suite
korDen
parents: 114
diff changeset
95 return "version";
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
96 }
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 13
diff changeset
97 }