annotate dmd/module.h @ 468:45a67b6f1310

Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially in this regard. Code for accessing nested variables and contexts rewritten. Probably more. Fairly well tested.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Mon, 04 Aug 2008 02:59:34 +0200
parents ecf70fe065b9
children a34078905d01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
1
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
2 // Compiler implementation of the D programming language
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
3 // Copyright (c) 1999-2008 by Digital Mars
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
4 // All Rights Reserved
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
5 // written by Walter Bright
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
6 // http://www.digitalmars.com
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
7 // License for redistribution is by either the Artistic License
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
9 // See the included readme.txt for details.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
10
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
11 #ifndef DMD_MODULE_H
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
12 #define DMD_MODULE_H
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
13
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
14 #ifdef __DMC__
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
15 #pragma once
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
16 #endif /* __DMC__ */
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
17
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
18 #include "root.h"
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
19 #include "dsymbol.h"
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
20
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
21 struct ModuleInfoDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
22 struct ClassDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
23 struct ModuleDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
24 struct Macro;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
25 struct Escape;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
26 struct VarDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
27 struct Library;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
28
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
29 // Back end
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
30 #if IN_LLVM
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
31 struct DValue;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
32 typedef DValue elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
33 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
34 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
35 union tree_node; typedef union tree_node elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
36 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
37 struct elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
38 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
39 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
40
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
41 struct Package : ScopeDsymbol
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
42 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
43 Package(Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
44 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
45
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
46 static DsymbolTable *resolve(Array *packages, Dsymbol **pparent, Package **ppkg);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
47
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
48 Package *isPackage() { return this; }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
49
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
50 virtual void semantic(Scope *sc) { }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
51 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
52
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
53 struct Module : Package
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
54 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
55 static Module *rootModule;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
56 static DsymbolTable *modules; // symbol table of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
57 static Array amodules; // array of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
58 static Array deferred; // deferred Dsymbol's needing semantic() run on them
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
59 static unsigned dprogress; // progress resolving the deferred list
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
60 static void init();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
61
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
62 static ClassDeclaration *moduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
63
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
64
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
65 const char *arg; // original argument name
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
66 ModuleDeclaration *md; // if !NULL, the contents of the ModuleDeclaration declaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
67 File *srcfile; // input source file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
68 File *objfile; // output .obj file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
69 File *bcfile; // output .bc file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
70 File *llfile; // output .ll file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
71 File *hdrfile; // 'header' file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
72 File *symfile; // output symbol file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
73 File *docfile; // output documentation file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
74 unsigned errors; // if any errors in file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
75 unsigned numlines; // number of lines in source file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
76 int isHtml; // if it is an HTML file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
77 int isDocFile; // if it is a documentation input file, not D source
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
78 int needmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
79 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
80 int strictlyneedmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
81 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
82
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
83 int insearch;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
84 Identifier *searchCacheIdent;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
85 Dsymbol *searchCacheSymbol; // cached value of search
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
86 int searchCacheFlags; // cached flags
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
87
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
88 int semanticstarted; // has semantic() been started?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
89 int semanticdone; // has semantic() been done?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
90 int root; // != 0 if this is a 'root' module,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
91 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
92 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
93 Module *importedFrom; // module from command line we're imported from,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
94 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
95 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
96
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
97 Array *decldefs; // top level declarations for this Module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
98
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
99 Array aimports; // all imported modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
100
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
101 ModuleInfoDeclaration *vmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
102
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
103 unsigned debuglevel; // debug level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
104 Array *debugids; // debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
105 Array *debugidsNot; // forward referenced debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
106
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
107 unsigned versionlevel; // version level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
108 Array *versionids; // version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
109 Array *versionidsNot; // forward referenced version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
110
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
111 Macro *macrotable; // document comment macros
432
ecf70fe065b9 fixed configuration file loading issues on windows
elrood
parents: 336
diff changeset
112 struct Escape *escapetable; // document comment escapes
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
113
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
114 Module(char *arg, Identifier *ident, int doDocComment, int doHdrGen);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
115 ~Module();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
116
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
117 static Module *load(Loc loc, Array *packages, Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
118
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
119 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
120 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
121 void setDocfile(); // set docfile member
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
122 void read(Loc loc); // read file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
123 #if IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
124 void parse(bool dump_source = false); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
125 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
126 void parse(); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
127 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
128 void semantic(); // semantic analysis
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
129 void semantic2(); // pass 2 semantic analysis
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
130 void semantic3(); // pass 3 semantic analysis
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
131 void inlineScan(); // scan for functions to inline
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
132 void setHdrfile(); // set hdrfile member
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
133 #ifdef _DH
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
134 void genhdrfile(); // generate D import file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
135 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
136 void genobjfile(int multiobj);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
137 void gensymfile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
138 void gendocfile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
139 int needModuleInfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
140 Dsymbol *search(Loc loc, Identifier *ident, int flags);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
141 void deleteObjFile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
142 void addDeferredSemantic(Dsymbol *s);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
143 void runDeferredSemantic();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
144
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
145 // Back end
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
146
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
147 int doppelganger; // sub-module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
148 Symbol *cov; // private uint[] __coverage;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
149 unsigned *covb; // bit array of valid code line numbers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
150
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
151 Symbol *sictor; // module order independent constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
152 Symbol *sctor; // module constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
153 Symbol *sdtor; // module destructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
154 Symbol *stest; // module unit test
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
155
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
156 Symbol *sfilename; // symbol for filename
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
157
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
158 Symbol *massert; // module assert function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
159 Symbol *toModuleAssert(); // get module assert function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
160
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
161 Symbol *marray; // module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
162 Symbol *toModuleArray(); // get module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
163
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
164
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
165 static Symbol *gencritsec();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
166 elem *toEfilename();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
167 elem *toEmodulename();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
168
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
169 Symbol *toSymbol();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
170 void genmoduleinfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
171
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
172 // LLVMDC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
173 Module *isModule() { return this; }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
174 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
175
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
176
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
177 struct ModuleDeclaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
178 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
179 Identifier *id;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
180 Array *packages; // array of Identifier's representing packages
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
181
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
182 ModuleDeclaration(Array *packages, Identifier *id);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
183
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
184 char *toChars();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
185 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
186
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
187 #endif /* DMD_MODULE_H */