mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-10-22 02:37:26 +02:00
Merged DMD commit c1176ad9218c7a733867a5cc3d0da628a641d8fb:
bugzilla 4941 Built-in tuple slice boundaries are not CTFE'd
This commit is contained in:
+2
-2
@@ -7532,8 +7532,8 @@ Expression *SliceExp::semantic(Scope *sc)
|
|||||||
|
|
||||||
if (t->ty == Ttuple)
|
if (t->ty == Ttuple)
|
||||||
{
|
{
|
||||||
lwr = lwr->optimize(WANTvalue);
|
lwr = lwr->optimize(WANTvalue | WANTinterpret);
|
||||||
upr = upr->optimize(WANTvalue);
|
upr = upr->optimize(WANTvalue | WANTinterpret);
|
||||||
uinteger_t i1 = lwr->toUInteger();
|
uinteger_t i1 = lwr->toUInteger();
|
||||||
uinteger_t i2 = upr->toUInteger();
|
uinteger_t i2 = upr->toUInteger();
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -5492,11 +5492,11 @@ Type *TypeSlice::semantic(Loc loc, Scope *sc)
|
|||||||
TypeTuple *tt = (TypeTuple *)tbn;
|
TypeTuple *tt = (TypeTuple *)tbn;
|
||||||
|
|
||||||
lwr = semanticLength(sc, tbn, lwr);
|
lwr = semanticLength(sc, tbn, lwr);
|
||||||
lwr = lwr->optimize(WANTvalue);
|
lwr = lwr->optimize(WANTvalue | WANTinterpret);
|
||||||
uinteger_t i1 = lwr->toUInteger();
|
uinteger_t i1 = lwr->toUInteger();
|
||||||
|
|
||||||
upr = semanticLength(sc, tbn, upr);
|
upr = semanticLength(sc, tbn, upr);
|
||||||
upr = upr->optimize(WANTvalue);
|
upr = upr->optimize(WANTvalue | WANTinterpret);
|
||||||
uinteger_t i2 = upr->toUInteger();
|
uinteger_t i2 = upr->toUInteger();
|
||||||
|
|
||||||
if (!(i1 <= i2 && i2 <= tt->arguments->dim))
|
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);
|
sc = sc->push(sym);
|
||||||
|
|
||||||
lwr = lwr->semantic(sc);
|
lwr = lwr->semantic(sc);
|
||||||
lwr = lwr->optimize(WANTvalue);
|
lwr = lwr->optimize(WANTvalue | WANTinterpret);
|
||||||
uinteger_t i1 = lwr->toUInteger();
|
uinteger_t i1 = lwr->toUInteger();
|
||||||
|
|
||||||
upr = upr->semantic(sc);
|
upr = upr->semantic(sc);
|
||||||
upr = upr->optimize(WANTvalue);
|
upr = upr->optimize(WANTvalue | WANTinterpret);
|
||||||
uinteger_t i2 = upr->toUInteger();
|
uinteger_t i2 = upr->toUInteger();
|
||||||
|
|
||||||
sc = sc->pop();
|
sc = sc->pop();
|
||||||
|
|||||||
Reference in New Issue
Block a user