comparison dmd/expression.h @ 1618:a87f1d6ff48e

Merge DMD r303: harmonize --- dmd/expression.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++----- dmd/expression.h | 8 +++++ dmd/template.c | 27 ++++++++++++------- 3 files changed, 95 insertions(+), 18 deletions(-)
author Leandro Lucarella <llucax@gmail.com>
date Wed, 06 Jan 2010 15:18:21 -0300
parents 3da302cc4966
children 8fa4ab3dcc88
comparison
equal deleted inserted replaced
1617:6820110de311 1618:a87f1d6ff48e
121 virtual Expression *modifiableLvalue(Scope *sc, Expression *e); 121 virtual Expression *modifiableLvalue(Scope *sc, Expression *e);
122 Expression *implicitCastTo(Scope *sc, Type *t); 122 Expression *implicitCastTo(Scope *sc, Type *t);
123 virtual MATCH implicitConvTo(Type *t); 123 virtual MATCH implicitConvTo(Type *t);
124 virtual Expression *castTo(Scope *sc, Type *t); 124 virtual Expression *castTo(Scope *sc, Type *t);
125 virtual void checkEscape(); 125 virtual void checkEscape();
126 virtual void checkEscapeRef();
126 void checkScalar(); 127 void checkScalar();
127 void checkNoBool(); 128 void checkNoBool();
128 Expression *checkIntegral(); 129 Expression *checkIntegral();
129 Expression *checkArithmetic(); 130 Expression *checkArithmetic();
130 void checkDeprecated(Scope *sc, Dsymbol *s); 131 void checkDeprecated(Scope *sc, Dsymbol *s);
676 Expression *interpret(InterState *istate); 677 Expression *interpret(InterState *istate);
677 void dump(int indent); 678 void dump(int indent);
678 char *toChars(); 679 char *toChars();
679 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); 680 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
680 void checkEscape(); 681 void checkEscape();
682 void checkEscapeRef();
683 int isLvalue();
681 Expression *toLvalue(Scope *sc, Expression *e); 684 Expression *toLvalue(Scope *sc, Expression *e);
682 Expression *modifiableLvalue(Scope *sc, Expression *e); 685 Expression *modifiableLvalue(Scope *sc, Expression *e);
683 #if IN_DMD 686 #if IN_DMD
684 elem *toElem(IRState *irs); 687 elem *toElem(IRState *irs);
685 dt_t **toDt(dt_t **pdt); 688 dt_t **toDt(dt_t **pdt);
1049 { 1052 {
1050 Module* m; // starting point for overload resolution 1053 Module* m; // starting point for overload resolution
1051 1054
1052 AddrExp(Loc loc, Expression *e); 1055 AddrExp(Loc loc, Expression *e);
1053 Expression *semantic(Scope *sc); 1056 Expression *semantic(Scope *sc);
1057 void checkEscape();
1054 #if IN_DMD 1058 #if IN_DMD
1055 elem *toElem(IRState *irs); 1059 elem *toElem(IRState *irs);
1056 #endif 1060 #endif
1057 MATCH implicitConvTo(Type *t); 1061 MATCH implicitConvTo(Type *t);
1058 Expression *castTo(Scope *sc, Type *t); 1062 Expression *castTo(Scope *sc, Type *t);
1067 struct PtrExp : UnaExp 1071 struct PtrExp : UnaExp
1068 { 1072 {
1069 PtrExp(Loc loc, Expression *e); 1073 PtrExp(Loc loc, Expression *e);
1070 PtrExp(Loc loc, Expression *e, Type *t); 1074 PtrExp(Loc loc, Expression *e, Type *t);
1071 Expression *semantic(Scope *sc); 1075 Expression *semantic(Scope *sc);
1076 void checkEscapeRef();
1072 Expression *toLvalue(Scope *sc, Expression *e); 1077 Expression *toLvalue(Scope *sc, Expression *e);
1073 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); 1078 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
1074 #if IN_DMD 1079 #if IN_DMD
1075 elem *toElem(IRState *irs); 1080 elem *toElem(IRState *irs);
1076 #endif 1081 #endif
1219 1224
1220 SliceExp(Loc loc, Expression *e1, Expression *lwr, Expression *upr); 1225 SliceExp(Loc loc, Expression *e1, Expression *lwr, Expression *upr);
1221 Expression *syntaxCopy(); 1226 Expression *syntaxCopy();
1222 Expression *semantic(Scope *sc); 1227 Expression *semantic(Scope *sc);
1223 void checkEscape(); 1228 void checkEscape();
1229 void checkEscapeRef();
1224 Expression *toLvalue(Scope *sc, Expression *e); 1230 Expression *toLvalue(Scope *sc, Expression *e);
1225 Expression *modifiableLvalue(Scope *sc, Expression *e); 1231 Expression *modifiableLvalue(Scope *sc, Expression *e);
1226 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); 1232 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
1227 Expression *optimize(int result); 1233 Expression *optimize(int result);
1228 Expression *interpret(InterState *istate); 1234 Expression *interpret(InterState *istate);
1292 struct CommaExp : BinExp 1298 struct CommaExp : BinExp
1293 { 1299 {
1294 CommaExp(Loc loc, Expression *e1, Expression *e2); 1300 CommaExp(Loc loc, Expression *e1, Expression *e2);
1295 Expression *semantic(Scope *sc); 1301 Expression *semantic(Scope *sc);
1296 void checkEscape(); 1302 void checkEscape();
1303 void checkEscapeRef();
1297 Expression *toLvalue(Scope *sc, Expression *e); 1304 Expression *toLvalue(Scope *sc, Expression *e);
1298 Expression *modifiableLvalue(Scope *sc, Expression *e); 1305 Expression *modifiableLvalue(Scope *sc, Expression *e);
1299 int isBool(int result); 1306 int isBool(int result);
1300 int checkSideEffect(int flag); 1307 int checkSideEffect(int flag);
1301 Expression *optimize(int result); 1308 Expression *optimize(int result);
1826 Expression *syntaxCopy(); 1833 Expression *syntaxCopy();
1827 Expression *semantic(Scope *sc); 1834 Expression *semantic(Scope *sc);
1828 Expression *optimize(int result); 1835 Expression *optimize(int result);
1829 Expression *interpret(InterState *istate); 1836 Expression *interpret(InterState *istate);
1830 void checkEscape(); 1837 void checkEscape();
1838 void checkEscapeRef();
1831 Expression *toLvalue(Scope *sc, Expression *e); 1839 Expression *toLvalue(Scope *sc, Expression *e);
1832 Expression *modifiableLvalue(Scope *sc, Expression *e); 1840 Expression *modifiableLvalue(Scope *sc, Expression *e);
1833 Expression *checkToBoolean(); 1841 Expression *checkToBoolean();
1834 int checkSideEffect(int flag); 1842 int checkSideEffect(int flag);
1835 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); 1843 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);