Mercurial > projects > ldc
diff dmd/expression.h @ 1587:def7a1d494fd
Merge DMD 1.051
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Fri, 06 Nov 2009 23:58:01 +0100 |
parents | df11cdec45a2 |
children | 207a8a438dea |
line wrap: on
line diff
--- a/dmd/expression.h Fri Nov 06 21:51:41 2009 +0100 +++ b/dmd/expression.h Fri Nov 06 23:58:01 2009 +0100 @@ -81,6 +81,11 @@ Expression *fromConstInitializer(int result, Expression *e); int arrayExpressionCanThrow(Expressions *exps); +struct IntRange +{ uinteger_t imin; + uinteger_t imax; +}; + struct Expression : Object { Loc loc; // file location @@ -157,6 +162,7 @@ // For array ops virtual void buildArrayIdent(OutBuffer *buf, Expressions *arguments); virtual Expression *buildArrayLoop(Arguments *fparams); + int isArrayOperand(); #if IN_DMD // Back end @@ -291,6 +297,7 @@ struct DsymbolExp : Expression { Dsymbol *s; + int hasOverloads; DsymbolExp(Loc loc, Dsymbol *s); Expression *semantic(Scope *sc); @@ -306,6 +313,7 @@ ThisExp(Loc loc); Expression *semantic(Scope *sc); + Expression *interpret(InterState *istate); int isBool(int result); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); Expression *toLvalue(Scope *sc, Expression *e); @@ -343,6 +351,7 @@ NullExp(Loc loc); Expression *semantic(Scope *sc); int isBool(int result); + int isConst(); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); void toMangleBuffer(OutBuffer *buf); MATCH implicitConvTo(Type *t); @@ -591,6 +600,7 @@ Type *newtype, Expressions *arguments); Expression *syntaxCopy(); Expression *semantic(Scope *sc); + Expression *optimize(int result); #if IN_DMD elem *toElem(IRState *irs); #endif @@ -842,6 +852,8 @@ Expression *commonSemanticAssign(Scope *sc); Expression *commonSemanticAssignIntegral(Scope *sc); int checkSideEffect(int flag); + void checkComplexMulAssign(); + void checkComplexAddAssign(); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); Expression *scaleFactor(Scope *sc); Expression *typeCombine(Scope *sc); @@ -1022,6 +1034,7 @@ #endif void scanForNestedRef(Scope *sc); Expression *toLvalue(Scope *sc, Expression *e); + Expression *modifiableLvalue(Scope *sc, Expression *e); int inlineCost(InlineCostState *ics); Expression *doInline(InlineDoState *ids); @@ -1182,6 +1195,8 @@ int checkSideEffect(int flag); void checkEscape(); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); + void buildArrayIdent(OutBuffer *buf, Expressions *arguments); + Expression *buildArrayLoop(Arguments *fparams); #if IN_DMD elem *toElem(IRState *irs); #endif