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