Mercurial > projects > ddmd
diff main.d @ 79:43073c7c7769
updated to 2.035
also implemented a few missing functions
still crashes in Import.importAll though
author | Trass3r |
---|---|
date | Mon, 30 Aug 2010 03:57:51 +0200 |
parents | 7e0d548de9e6 |
children | 903b95002d4e |
line wrap: on
line diff
--- a/main.d Sun Aug 29 14:39:08 2010 +0100 +++ b/main.d Mon Aug 30 03:57:51 2010 +0200 @@ -13,6 +13,7 @@ import dmd.File; import dmd.Id; import dmd.Identifier; +import dmd.Json; import dmd.Library; import dmd.TOK; import dmd.String; @@ -438,6 +439,25 @@ } } ///} + else if (p[1] == 'X') + { + global.params.doXGeneration = 1; + switch (p[2]) + { + case 'f': + if (!p[3]) + goto Lnoarg; + global.params.xfilename = arg[(p - arg.ptr) + 3..$]; + break; + + case 0: + break; + + default: + goto Lerror; + } + } + else if (arg == "ignore") global.params.ignoreUnsupportedPragmas = 1; else if (arg == "inline") @@ -819,8 +839,16 @@ global.params.ddocfiles.push(files.data[i]); continue; } + + if (FileName.equals(ext, global.json_ext)) + { + global.params.doXGeneration = 1; + global.params.xfilename = (cast(immutable(char)*)files.data[i])[0..0]; + continue; + } -version (TARGET_WINDOS) { +version (TARGET_WINDOS) +{ if (FileName.equals(ext, "res")) { global.params.resfile = (cast(immutable(char)*)files.data[i])[0..0]; /// !!! @@ -967,7 +995,8 @@ } if (global.errors) fatal(); -version (_DH) { +version (_DH) +{ if (global.params.doHdrGeneration) { /* Generate 'header' import files. @@ -977,7 +1006,7 @@ */ for (i = 0; i < modules.dim; i++) { - m = cast(Module *)modules.data[i]; + m = cast(Module)modules.data[i]; if (global.params.verbose) writef("import %s\n", m.toChars()); m.genhdrfile(); @@ -986,6 +1015,16 @@ if (global.errors) fatal(); } + //load all unconditional imports for better symbol resolving + for (int i = 0; i < modules.dim; i++) + { + m = cast(Module)modules.data[i]; + if (global.params.verbose) + writef("importall %s\n", m.toChars()); + m.importAll(null); + } + if (global.errors) + fatal(); // Do semantic analysis for (int i = 0; i < modules.dim; i++) @@ -1081,6 +1120,9 @@ } // Generate output files + if (global.params.doXGeneration) + json_generate(modules); + if (global.params.oneobj) { for (int i = 0; i < modules.dim; i++)