Mercurial > projects > ddmd
annotate dmd/Package.d @ 169:e7769d53e750
Moves static variables from Module to Global
author | korDen |
---|---|
date | Thu, 30 Sep 2010 13:29:54 +0400 |
parents | e6e542f37b94 |
children | e3afd1303184 |
rev | line source |
---|---|
0 | 1 module dmd.Package; |
2 | |
114 | 3 import dmd.common; |
0 | 4 import dmd.ScopeDsymbol; |
5 import dmd.Identifier; | |
128
e6e542f37b94
Some more Array -> Vector conversions
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
114
diff
changeset
|
6 import dmd.ArrayTypes; |
0 | 7 import dmd.DsymbolTable; |
8 import dmd.Scope; | |
9 import dmd.Dsymbol; | |
10 import dmd.Module; | |
169 | 11 import dmd.Global; |
0 | 12 import dmd.Util; |
13 | |
14 class Package : ScopeDsymbol | |
15 { | |
16 this(Identifier ident) | |
17 { | |
18 super(ident); | |
19 } | |
20 | |
72 | 21 override string kind() |
0 | 22 { |
23 assert(false); | |
24 } | |
25 | |
128
e6e542f37b94
Some more Array -> Vector conversions
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
114
diff
changeset
|
26 static DsymbolTable resolve(Identifiers packages, Dsymbol* pparent, Package* ppkg) |
0 | 27 { |
169 | 28 DsymbolTable dst = global.modules; |
0 | 29 Dsymbol parent = null; |
30 | |
31 //printf("Package::resolve()\n"); | |
32 if (ppkg) | |
33 *ppkg = null; | |
34 | |
35 if (packages) | |
36 { | |
128
e6e542f37b94
Some more Array -> Vector conversions
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents:
114
diff
changeset
|
37 foreach (pid; packages) |
0 | 38 { |
39 Dsymbol p = dst.lookup(pid); | |
40 if (!p) | |
41 { | |
42 p = new Package(pid); | |
43 dst.insert(p); | |
44 p.parent = parent; | |
45 (cast(ScopeDsymbol)p).symtab = new DsymbolTable(); | |
46 } | |
47 else | |
48 { | |
49 assert(p.isPackage()); | |
50 version (TARGET_NET) { //dot net needs modules and packages with same name | |
51 } else { | |
52 if (p.isModule()) | |
53 { | |
54 p.error("module and package have the same name"); | |
55 fatal(); | |
56 break; | |
57 } | |
58 } | |
59 } | |
60 parent = p; | |
61 dst = (cast(Package)p).symtab; | |
62 if (ppkg && !*ppkg) | |
63 *ppkg = cast(Package)p; | |
64 } | |
65 if (pparent) | |
66 { | |
67 *pparent = parent; | |
68 } | |
69 } | |
70 return dst; | |
71 } | |
72 | |
72 | 73 override Package isPackage() { return this; } |
0 | 74 |
72 | 75 override void semantic(Scope sc) { } |
76 } |