mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-11 18:33:14 +01:00
Merged DMD commit 59c07625e84aadd2f684ea77f925ae540d5c8906:
bugzilla 4926 ICE: PREC_zero assertion failure due to unset precedence
This commit is contained in:
@@ -5283,7 +5283,8 @@ Expression *AssertExp::semantic(Scope *sc)
|
||||
if (e1->isBool(FALSE))
|
||||
{
|
||||
FuncDeclaration *fd = sc->parent->isFuncDeclaration();
|
||||
fd->hasReturnExp |= 4;
|
||||
if (fd)
|
||||
fd->hasReturnExp |= 4;
|
||||
|
||||
if (!global.params.useAssert)
|
||||
{ Expression *e = new HaltExp(loc);
|
||||
@@ -9697,6 +9698,14 @@ RemoveExp::RemoveExp(Loc loc, Expression *e1, Expression *e2)
|
||||
type = Type::tvoid;
|
||||
}
|
||||
|
||||
void RemoveExp::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
|
||||
{
|
||||
expToCBuffer(buf, hgs, e1, PREC_primary);
|
||||
buf->writestring(".remove(");
|
||||
expToCBuffer(buf, hgs, e2, PREC_assign);
|
||||
buf->writestring(")");
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
|
||||
CmpExp::CmpExp(enum TOK op, Loc loc, Expression *e1, Expression *e2)
|
||||
|
||||
@@ -1806,6 +1806,7 @@ struct InExp : BinExp
|
||||
struct RemoveExp : BinExp
|
||||
{
|
||||
RemoveExp(Loc loc, Expression *e1, Expression *e2);
|
||||
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
|
||||
#if IN_DMD
|
||||
elem *toElem(IRState *irs);
|
||||
#endif
|
||||
|
||||
26
dmd/parse.c
26
dmd/parse.c
@@ -5485,35 +5485,53 @@ void initPrecedence()
|
||||
precedence[TOKsuper] = PREC_primary;
|
||||
precedence[TOKint64] = PREC_primary;
|
||||
precedence[TOKfloat64] = PREC_primary;
|
||||
precedence[TOKcomplex80] = PREC_primary;
|
||||
precedence[TOKnull] = PREC_primary;
|
||||
precedence[TOKstring] = PREC_primary;
|
||||
precedence[TOKarrayliteral] = PREC_primary;
|
||||
precedence[TOKassocarrayliteral] = PREC_primary;
|
||||
#if DMDV2
|
||||
precedence[TOKfile] = PREC_primary;
|
||||
precedence[TOKline] = PREC_primary;
|
||||
#endif
|
||||
precedence[TOKtypeid] = PREC_primary;
|
||||
precedence[TOKis] = PREC_primary;
|
||||
precedence[TOKassert] = PREC_primary;
|
||||
precedence[TOKhalt] = PREC_primary;
|
||||
precedence[TOKtemplate] = PREC_primary;
|
||||
precedence[TOKdsymbol] = PREC_primary;
|
||||
precedence[TOKfunction] = PREC_primary;
|
||||
precedence[TOKvar] = PREC_primary;
|
||||
precedence[TOKsymoff] = PREC_primary;
|
||||
precedence[TOKstructliteral] = PREC_primary;
|
||||
precedence[TOKarraylength] = PREC_primary;
|
||||
precedence[TOKremove] = PREC_primary;
|
||||
precedence[TOKtuple] = PREC_primary;
|
||||
#if DMDV2
|
||||
precedence[TOKtraits] = PREC_primary;
|
||||
precedence[TOKdefault] = PREC_primary;
|
||||
precedence[TOKoverloadset] = PREC_primary;
|
||||
#endif
|
||||
|
||||
// post
|
||||
precedence[TOKdotti] = PREC_primary;
|
||||
precedence[TOKdot] = PREC_primary;
|
||||
precedence[TOKdottd] = PREC_primary;
|
||||
precedence[TOKdotexp] = PREC_primary;
|
||||
precedence[TOKdottype] = PREC_primary;
|
||||
// precedence[TOKarrow] = PREC_primary;
|
||||
precedence[TOKplusplus] = PREC_primary;
|
||||
precedence[TOKminusminus] = PREC_primary;
|
||||
#if DMDV2
|
||||
precedence[TOKpreplusplus] = PREC_primary;
|
||||
precedence[TOKpreminusminus] = PREC_primary;
|
||||
#endif
|
||||
precedence[TOKcall] = PREC_primary;
|
||||
precedence[TOKslice] = PREC_primary;
|
||||
precedence[TOKarray] = PREC_primary;
|
||||
precedence[TOKindex] = PREC_primary;
|
||||
|
||||
precedence[TOKdelegate] = PREC_unary;
|
||||
precedence[TOKaddress] = PREC_unary;
|
||||
precedence[TOKstar] = PREC_unary;
|
||||
precedence[TOKneg] = PREC_unary;
|
||||
@@ -5523,8 +5541,13 @@ void initPrecedence()
|
||||
precedence[TOKtilde] = PREC_unary;
|
||||
precedence[TOKdelete] = PREC_unary;
|
||||
precedence[TOKnew] = PREC_unary;
|
||||
precedence[TOKnewanonclass] = PREC_unary;
|
||||
precedence[TOKcast] = PREC_unary;
|
||||
|
||||
#if DMDV2
|
||||
precedence[TOKpow] = PREC_pow;
|
||||
#endif
|
||||
|
||||
precedence[TOKmul] = PREC_mul;
|
||||
precedence[TOKdiv] = PREC_mul;
|
||||
precedence[TOKmod] = PREC_mul;
|
||||
@@ -5587,6 +5610,9 @@ void initPrecedence()
|
||||
precedence[TOKmulass] = PREC_assign;
|
||||
precedence[TOKdivass] = PREC_assign;
|
||||
precedence[TOKmodass] = PREC_assign;
|
||||
#if DMDV2
|
||||
precedence[TOKpowass] = PREC_assign;
|
||||
#endif
|
||||
precedence[TOKshlass] = PREC_assign;
|
||||
precedence[TOKshrass] = PREC_assign;
|
||||
precedence[TOKushrass] = PREC_assign;
|
||||
|
||||
Reference in New Issue
Block a user