Mercurial > projects > ddmd
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(); |