Merged DMD commit c1176ad9218c7a733867a5cc3d0da628a641d8fb:

bugzilla 4941 Built-in tuple slice boundaries are not CTFE'd
This commit is contained in:
David Nadlinger
2011-04-22 15:05:07 +02:00
parent b14a8ad6d0
commit 5bb5069ec3
2 changed files with 6 additions and 6 deletions

View File

@@ -7532,8 +7532,8 @@ Expression *SliceExp::semantic(Scope *sc)
if (t->ty == Ttuple)
{
lwr = lwr->optimize(WANTvalue);
upr = upr->optimize(WANTvalue);
lwr = lwr->optimize(WANTvalue | WANTinterpret);
upr = upr->optimize(WANTvalue | WANTinterpret);
uinteger_t i1 = lwr->toUInteger();
uinteger_t i2 = upr->toUInteger();

View File

@@ -5492,11 +5492,11 @@ Type *TypeSlice::semantic(Loc loc, Scope *sc)
TypeTuple *tt = (TypeTuple *)tbn;
lwr = semanticLength(sc, tbn, lwr);
lwr = lwr->optimize(WANTvalue);
lwr = lwr->optimize(WANTvalue | WANTinterpret);
uinteger_t i1 = lwr->toUInteger();
upr = semanticLength(sc, tbn, upr);
upr = upr->optimize(WANTvalue);
upr = upr->optimize(WANTvalue | WANTinterpret);
uinteger_t i2 = upr->toUInteger();
if (!(i1 <= i2 && i2 <= tt->arguments->dim))
@@ -5536,11 +5536,11 @@ void TypeSlice::resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol
sc = sc->push(sym);
lwr = lwr->semantic(sc);
lwr = lwr->optimize(WANTvalue);
lwr = lwr->optimize(WANTvalue | WANTinterpret);
uinteger_t i1 = lwr->toUInteger();
upr = upr->semantic(sc);
upr = upr->optimize(WANTvalue);
upr = upr->optimize(WANTvalue | WANTinterpret);
uinteger_t i2 = upr->toUInteger();
sc = sc->pop();