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++)