comparison dmd/GlobalExpressions.d @ 167:50a6d232176c

rewrite GlobalExpressions, moved DsymbolTable to Global, some cleanup
author korDen
date Thu, 30 Sep 2010 12:13:49 +0400
parents e28b18c23469
children eb38fdcb3e62
comparison
equal deleted inserted replaced
166:d8565fbd755c 167:50a6d232176c
1 module dmd.GlobalExpressions; 1 module dmd.GlobalExpressions;
2 2
3 import dmd.common; 3 import dmd.common;
4 import dmd.Expression; 4 import dmd.Expression;
5 import dmd.TOK;
6 import dmd.Loc;
7 5
8 Expression EXP_CANT_INTERPRET; 6 __gshared Expression EXP_CANT_INTERPRET = castToExpression(1);
9 Expression EXP_CONTINUE_INTERPRET; 7 __gshared Expression EXP_CONTINUE_INTERPRET = castToExpression(2);
10 Expression EXP_BREAK_INTERPRET; 8 __gshared Expression EXP_BREAK_INTERPRET = castToExpression(3);
11 Expression EXP_GOTO_INTERPRET; 9 __gshared Expression EXP_GOTO_INTERPRET = castToExpression(4);
12 Expression EXP_VOID_INTERPRET; 10 __gshared Expression EXP_VOID_INTERPRET = castToExpression(5);
13 11
14 void* castToVoid(int i) 12 Expression castToExpression(int i)
15 { 13 {
16 return cast(void*)i; 14 union U
15 {
16 int i;
17 Expression e;
18 }
19
20 U u;
21 u.i = i;
22 return u.e;
17 } 23 }
18
19 static this()
20 {
21 //EXP_CANT_INTERPRET = new Expression(Loc(0), TOK.init, 0);
22 //EXP_CONTINUE_INTERPRET = new Expression(Loc(0), TOK.init, 0);
23 //EXP_BREAK_INTERPRET = new Expression(Loc(0), TOK.init, 0);
24 //EXP_GOTO_INTERPRET = new Expression(Loc(0), TOK.init, 0);
25 //EXP_VOID_INTERPRET = new Expression(Loc(0), TOK.init, 0);
26
27 EXP_CANT_INTERPRET = cast(Expression)castToVoid(1);
28 EXP_CONTINUE_INTERPRET = cast(Expression)castToVoid(2);
29 EXP_BREAK_INTERPRET = cast(Expression)castToVoid(3);
30 EXP_GOTO_INTERPRET = cast(Expression)castToVoid(4);
31 EXP_VOID_INTERPRET = cast(Expression)castToVoid(5);
32 }