comparison dmd/CondExp.d @ 129:010eb8f0e18d

further work on dmd test suite
author korDen
date Sun, 05 Sep 2010 15:32:22 +0400
parents 9e39c7de8438
children 60bb0fe4563e
comparison
equal deleted inserted replaced
128:e6e542f37b94 129:010eb8f0e18d
4 import dmd.BinExp; 4 import dmd.BinExp;
5 import dmd.Loc; 5 import dmd.Loc;
6 import dmd.PtrExp; 6 import dmd.PtrExp;
7 import dmd.MATCH; 7 import dmd.MATCH;
8 import dmd.Expression; 8 import dmd.Expression;
9 import dmd.GlobalExpressions;
9 import dmd.Scope; 10 import dmd.Scope;
10 import dmd.InterState; 11 import dmd.InterState;
11 import dmd.OutBuffer; 12 import dmd.OutBuffer;
12 import dmd.HdrGenState; 13 import dmd.HdrGenState;
13 import dmd.Type; 14 import dmd.Type;
159 return e; 160 return e;
160 } 161 }
161 162
162 override Expression interpret(InterState istate) 163 override Expression interpret(InterState istate)
163 { 164 {
164 assert(false); 165 version (LOG) {
166 printf("CondExp.interpret() %.*s\n", toChars());
167 }
168 Expression e = econd.interpret(istate);
169 if (e !is EXP_CANT_INTERPRET)
170 {
171 if (e.isBool(true))
172 e = e1.interpret(istate);
173 else if (e.isBool(false))
174 e = e2.interpret(istate);
175 else
176 e = EXP_CANT_INTERPRET;
177 }
178 return e;
165 } 179 }
166 180
167 override void checkEscape() 181 override void checkEscape()
168 { 182 {
169 e1.checkEscape(); 183 e1.checkEscape();