Mercurial > projects > dang
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;