annotate dmd/module.h @ 650:aa6a0b7968f7

Added test case for bug #100 Removed dubious check for not emitting static private global in other modules without access. This should be handled properly somewhere else, it's causing unresolved global errors for stuff that should work (in MiniD)
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Sun, 05 Oct 2008 17:28:15 +0200
parents a30fc28e8f23
children eef8ac26c66c
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
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
68
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
69 File *objfile; // output object file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
70 File *docfile; // output doc file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
71 File *hdrfile; // output hdr file
486
a34078905d01 Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 432
diff changeset
72
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
73 unsigned errors; // if any errors in file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
74 unsigned numlines; // number of lines in source file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
75 int isHtml; // if it is an HTML file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
76 int isDocFile; // if it is a documentation input file, not D source
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
77 int needmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
78 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
79 int strictlyneedmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
80 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
81
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
82 int insearch;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
83 Identifier *searchCacheIdent;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
84 Dsymbol *searchCacheSymbol; // cached value of search
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
85 int searchCacheFlags; // cached flags
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
86
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
87 int semanticstarted; // has semantic() been started?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
88 int semanticdone; // has semantic() been done?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
89 int root; // != 0 if this is a 'root' module,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
90 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
91 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
92 Module *importedFrom; // module from command line we're imported from,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
93 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
94 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
95
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
96 Array *decldefs; // top level declarations for this Module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
97
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
98 Array aimports; // all imported modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
99
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
100 ModuleInfoDeclaration *vmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
101
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
102 unsigned debuglevel; // debug level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
103 Array *debugids; // debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
104 Array *debugidsNot; // forward referenced debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
105
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
106 unsigned versionlevel; // version level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
107 Array *versionids; // version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
108 Array *versionidsNot; // forward referenced version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
109
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
110 Macro *macrotable; // document comment macros
432
ecf70fe065b9 fixed configuration file loading issues on windows
elrood
parents: 336
diff changeset
111 struct Escape *escapetable; // document comment escapes
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
112
604
a30fc28e8f23 Make creating and deleting of doc and hdr files dependent on whether doc and
Christian Kamm <kamm incasoftware de>
parents: 580
diff changeset
113 int doDocComment; // enable generating doc comments for this module
a30fc28e8f23 Make creating and deleting of doc and hdr files dependent on whether doc and
Christian Kamm <kamm incasoftware de>
parents: 580
diff changeset
114 int doHdrGen; // enable generating header file for this module
a30fc28e8f23 Make creating and deleting of doc and hdr files dependent on whether doc and
Christian Kamm <kamm incasoftware de>
parents: 580
diff changeset
115
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
116 Module(char *arg, Identifier *ident, int doDocComment, int doHdrGen);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
117 ~Module();
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 static Module *load(Loc loc, Array *packages, Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
120
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
121 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
122 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
123 void read(Loc loc); // read file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
124 #if IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
125 void parse(bool dump_source = false); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
126 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
127 void parse(); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
128 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
129 void semantic(); // semantic analysis
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
130 void semantic2(); // pass 2 semantic analysis
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
131 void semantic3(); // pass 3 semantic analysis
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
132 void inlineScan(); // scan for functions to inline
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);
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
137 // void gensymfile();
336
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
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
173 void buildTargetFiles();
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
174 File* buildFilePath(char* forcename, char* path, char* ext);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
175 Module *isModule() { return this; }
486
a34078905d01 Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 432
diff changeset
176
a34078905d01 Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 432
diff changeset
177 bool llvmForceLogging;
336
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
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
180
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
181 struct ModuleDeclaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
182 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
183 Identifier *id;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
184 Array *packages; // array of Identifier's representing packages
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 ModuleDeclaration(Array *packages, Identifier *id);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
187
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
188 char *toChars();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
189 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
190
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
191 #endif /* DMD_MODULE_H */