diff ast/Stmt.d @ 143:d76cc5cad4fc

Added partial support for switches. Added support for extern(C) in CodeGen.
author Anders Johnsen <skabet@gmail.com>
date Mon, 21 Jul 2008 01:05:20 +0200
parents a22e3663de89
children 393a1f47a6d2 6c5a3c0bb4fb
line wrap: on
line diff
--- a/ast/Stmt.d	Sun Jul 20 23:41:53 2008 +0200
+++ b/ast/Stmt.d	Mon Jul 21 01:05:20 2008 +0200
@@ -175,16 +175,17 @@
         cond = target;
     }
 
-    void addCase(IntegerLit[] values, Stmt[] stmts)
+    void addCase(Exp[] values, Stmt[] stmts)
     {
-        long[] new_values;
-        foreach (lit; values)
-            new_values ~= Integer.parse(lit.get);
-        cases ~= Case(values, stmts, new_values);
+//        long[] new_values;
+//        foreach (lit; values)
+//            new_values ~= Integer.parse(lit.get);
+//        cases ~= Case(values, stmts, new_values);
+        cases ~= Case(values, stmts);
 
         // Make sure there is no two cases with the same value
         // Does it belong here?
-        new_values = new_values.dup;
+/+        new_values = new_values.dup;
         Array.sort(new_values);
         long[] all_values = Array.unionOf(old_values, new_values);
         if (all_values.length != old_values.length + new_values.length)
@@ -211,6 +212,7 @@
             throw e;+/
         }
         old_values = all_values;
+        +/
     }
 
     void setDefault(Stmt[] stmts)
@@ -241,7 +243,7 @@
 
     struct Case
     {
-        IntegerLit[] values;
+        Exp[] values;
         Stmt[] stmts;
         long[] values_converted;
         bool followedByDefault = false;