Lines Matching refs:Expression
37 class Expression; variable
57 Expression *resolveProperties(Scope *sc, Expression *e);
58 Expression *resolvePropertiesOnly(Scope *sc, Expression *e1);
59 bool checkAccess(Loc loc, Scope *sc, Expression *e, Declaration *d);
61 Expression *build_overload(Loc loc, Scope *sc, Expression *ethis, Expression *earg, Dsymbol *d);
64 TupleDeclaration *isAliasThisTuple(Expression *e);
67 Expression *fromConstInitializer(int result, Expression *e);
70 Expression *valueNoDtor(Expression *e);
71 int modifyFieldVar(Loc loc, Scope *sc, VarDeclaration *var, Expression *e1);
72 Expression *resolveAliasThis(Scope *sc, Expression *e, bool gag = false);
73 Expression *doCopyOrMove(Scope *sc, Expression *e);
74 Expression *resolveOpDollar(Scope *sc, ArrayExp *ae, Expression **pe0);
75 Expression *resolveOpDollar(Scope *sc, ArrayExp *ae, IntervalExp *ie, Expression **pe0);
76 Expression *integralPromotions(Expression *e, Scope *sc);
77 bool discardValue(Expression *e);
78 bool isTrivialExp(Expression *e);
80 int isConst(Expression *e);
81 Expression *toDelegate(Expression *e, Type* t, Scope *sc);
83 IntRange getIntRange(Expression *e);
84 bool checkNonAssignmentArrayOp(Expression *e, bool suggestion = false);
88 bool isArrayOpOperand(Expression *e);
89 Expression *arrayOp(BinExp *e, Scope *sc);
90 Expression *arrayOp(BinAssignExp *e, Scope *sc);
91 bool hasSideEffect(Expression *e);
92 bool canThrow(Expression *e, FuncDeclaration *func, bool mustNotThrow);
93 Expression *Expression_optimize(Expression *e, int result, bool keepLvalue);
94 MATCH implicitConvTo(Expression *e, Type *t);
95 Expression *implicitCastTo(Expression *e, Scope *sc, Type *t);
96 Expression *castTo(Expression *e, Scope *sc, Type *t);
97 Expression *ctfeInterpret(Expression *);
98 Expression *inlineCopy(Expression *e, Scope *sc);
99 Expression *op_overload(Expression *e, Scope *sc);
101 Expression *scaleFactor(BinExp *be, Scope *sc);
102 Expression *typeCombine(BinExp *be, Scope *sc);
103 Expression *inferType(Expression *e, Type *t, int flag = 0);
104 Expression *semanticTraits(TraitsExp *e, Scope *sc);
107 Expression *checkGC(Scope *sc, Expression *e);
112 Expression *ctfeInterpretForPragmaMsg(Expression *e);
124 class Expression : public RootObject
133 Expression(Loc loc, TOK op, int size);
135 Expression *copy();
136 virtual Expression *syntaxCopy();
150 static Expression *combine(Expression *e1, Expression *e2);
151 static Expression *extractLast(Expression *e, Expression **pe0);
162 virtual Expression *toLvalue(Scope *sc, Expression *e);
163 virtual Expression *modifiableLvalue(Scope *sc, Expression *e);
164 Expression *implicitCastTo(Scope *sc, Type *t) in implicitCastTo()
172 Expression *castTo(Scope *sc, Type *t) in castTo()
176 virtual Expression *resolveLoc(Loc loc, Scope *sc);
190 bool checkReadModifyWrite(TOK rmwOp, Expression *ex = NULL);
192 virtual Expression *toBoolean(Scope *sc);
193 virtual Expression *addDtorHook(Scope *sc);
194 Expression *addressOf();
195 Expression *deref();
197 Expression *optimize(int result, bool keepLvalue = false)
204 Expression *ctfeInterpret() in ctfeInterpret()
211 Expression *op_overload(Scope *sc) in op_overload()
224 class IntegerExp : public Expression
238 Expression *toLvalue(Scope *sc, Expression *e);
245 class ErrorExp : public Expression
249 Expression *toLvalue(Scope *sc, Expression *e);
255 class RealExp : public Expression
272 class ComplexExp : public Expression
289 class IdentifierExp : public Expression
297 Expression *toLvalue(Scope *sc, Expression *e);
308 class DsymbolExp : public Expression
316 Expression *toLvalue(Scope *sc, Expression *e);
320 class ThisExp : public Expression
328 Expression *toLvalue(Scope *sc, Expression *e);
341 class NullExp : public Expression
353 class StringExp : public Expression
374 Expression *toLvalue(Scope *sc, Expression *e);
375 Expression *modifiableLvalue(Scope *sc, Expression *e);
385 class TupleExp : public Expression
388 Expression *e0; // side-effect part
398 TupleExp(Loc loc, Expression *e0, Expressions *exps);
402 Expression *syntaxCopy();
408 class ArrayLiteralExp : public Expression
411 Expression *basis;
416 ArrayLiteralExp(Loc loc, Type *type, Expression *e);
417 ArrayLiteralExp(Loc loc, Type *type, Expression *basis, Expressions *elements);
419 Expression *syntaxCopy();
421 Expression *getElement(d_size_t i);
422 static Expressions* copyElements(Expression *e1, Expression *e2 = NULL);
429 class AssocArrayLiteralExp : public Expression
438 Expression *syntaxCopy();
457 class StructLiteralExp : public Expression
487 Expression *syntaxCopy();
488 Expression *getField(Type *type, unsigned offset);
490 Expression *addDtorHook(Scope *sc);
498 class TypeExp : public Expression
502 Expression *syntaxCopy();
508 class ScopeExp : public Expression
514 Expression *syntaxCopy();
520 class TemplateExp : public Expression
528 Expression *toLvalue(Scope *sc, Expression *e);
534 class NewExp : public Expression
539 Expression *thisexp; // if !NULL, 'this' for class being allocated
544 Expression *argprefix; // expression to be evaluated just before arguments[]
550 NewExp(Loc loc, Expression *thisexp, Expressions *newargs,
552 …static NewExp *create(Loc loc, Expression *thisexp, Expressions *newargs, Type *newtype, Expressio…
553 Expression *syntaxCopy();
558 class NewAnonClassExp : public Expression
563 Expression *thisexp; // if !NULL, 'this' for class being allocated
568 NewAnonClassExp(Loc loc, Expression *thisexp, Expressions *newargs,
570 Expression *syntaxCopy();
574 class SymbolExp : public Expression
608 Expression *toLvalue(Scope *sc, Expression *e);
609 Expression *modifiableLvalue(Scope *sc, Expression *e);
616 class OverExp : public Expression
623 Expression *toLvalue(Scope *sc, Expression *e);
629 class FuncExp : public Expression
639 Expression *syntaxCopy();
653 class DeclarationExp : public Expression
659 Expression *syntaxCopy();
666 class TypeidExp : public Expression
672 Expression *syntaxCopy();
676 class TraitsExp : public Expression
683 Expression *syntaxCopy();
687 class HaltExp : public Expression
695 class IsExp : public Expression
710 Expression *syntaxCopy();
716 class UnaExp : public Expression
719 Expression *e1;
722 UnaExp(Loc loc, TOK op, int size, Expression *e1);
723 Expression *syntaxCopy();
724 Expression *incompatibleTypes();
725 Expression *resolveLoc(Loc loc, Scope *sc);
730 typedef UnionExp (*fp_t)(Loc loc, Type *, Expression *, Expression *);
731 typedef int (*fp2_t)(Loc loc, TOK, Expression *, Expression *);
733 class BinExp : public Expression
736 Expression *e1;
737 Expression *e2;
742 BinExp(Loc loc, TOK op, int size, Expression *e1, Expression *e2);
743 Expression *syntaxCopy();
744 Expression *incompatibleTypes();
745 Expression *checkOpAssignTypes(Scope *sc);
749 Expression *reorderSettingAAElem(Scope *sc);
757 BinAssignExp(Loc loc, TOK op, int size, Expression *e1, Expression *e2);
760 Expression *toLvalue(Scope *sc, Expression *ex);
761 Expression *modifiableLvalue(Scope *sc, Expression *e);
770 CompileExp(Loc loc, Expression *e);
777 ImportExp(Loc loc, Expression *e);
784 Expression *msg;
786 AssertExp(Loc loc, Expression *e, Expression *msg = NULL);
787 Expression *syntaxCopy();
799 DotIdExp(Loc loc, Expression *e, Identifier *ident);
800 static DotIdExp *create(Loc loc, Expression *e, Identifier *ident);
809 DotTemplateExp(Loc loc, Expression *e, TemplateDeclaration *td);
821 DotVarExp(Loc loc, Expression *e, Declaration *var, bool hasOverloads = true);
825 Expression *toLvalue(Scope *sc, Expression *e);
826 Expression *modifiableLvalue(Scope *sc, Expression *e);
835 DotTemplateInstanceExp(Loc loc, Expression *e, Identifier *name, Objects *tiargs);
836 DotTemplateInstanceExp(Loc loc, Expression *e, TemplateInstance *ti);
837 Expression *syntaxCopy();
848 DelegateExp(Loc loc, Expression *e, FuncDeclaration *func, bool hasOverloads = true);
858 DotTypeExp(Loc loc, Expression *e, Dsymbol *sym);
868 CallExp(Loc loc, Expression *e, Expressions *exps);
869 CallExp(Loc loc, Expression *e);
870 CallExp(Loc loc, Expression *e, Expression *earg1);
871 CallExp(Loc loc, Expression *e, Expression *earg1, Expression *earg2);
873 static CallExp *create(Loc loc, Expression *e, Expressions *exps);
874 static CallExp *create(Loc loc, Expression *e);
875 static CallExp *create(Loc loc, Expression *e, Expression *earg1);
877 Expression *syntaxCopy();
879 Expression *toLvalue(Scope *sc, Expression *e);
880 Expression *addDtorHook(Scope *sc);
888 AddrExp(Loc loc, Expression *e);
889 AddrExp(Loc loc, Expression *e, Type *t);
897 PtrExp(Loc loc, Expression *e);
898 PtrExp(Loc loc, Expression *e, Type *t);
901 Expression *toLvalue(Scope *sc, Expression *e);
902 Expression *modifiableLvalue(Scope *sc, Expression *e);
910 NegExp(Loc loc, Expression *e);
918 UAddExp(Loc loc, Expression *e);
926 ComExp(Loc loc, Expression *e);
934 NotExp(Loc loc, Expression *e);
942 DeleteExp(Loc loc, Expression *e, bool isRAII);
943 Expression *toBoolean(Scope *sc);
954 CastExp(Loc loc, Expression *e, Type *t);
955 CastExp(Loc loc, Expression *e, unsigned char mod);
956 Expression *syntaxCopy();
968 VectorExp(Loc loc, Expression *e, Type *t);
969 static VectorExp *create(Loc loc, Expression *e, Type *t);
970 Expression *syntaxCopy();
977 VectorArrayExp(Loc loc, Expression *e1);
979 Expression *toLvalue(Scope *sc, Expression *e);
986 Expression *upr; // NULL if implicit 0
987 Expression *lwr; // NULL if implicit [length - 1]
993 SliceExp(Loc loc, Expression *e1, IntervalExp *ie);
994 SliceExp(Loc loc, Expression *e1, Expression *lwr, Expression *upr);
995 Expression *syntaxCopy();
998 Expression *toLvalue(Scope *sc, Expression *e);
999 Expression *modifiableLvalue(Scope *sc, Expression *e);
1008 ArrayLengthExp(Loc loc, Expression *e1);
1010 static Expression *rewriteOpAssign(BinExp *exp);
1014 class IntervalExp : public Expression
1017 Expression *lwr;
1018 Expression *upr;
1020 IntervalExp(Loc loc, Expression *lwr, Expression *upr);
1021 Expression *syntaxCopy();
1028 DelegatePtrExp(Loc loc, Expression *e1);
1030 Expression *toLvalue(Scope *sc, Expression *e);
1031 Expression *modifiableLvalue(Scope *sc, Expression *e);
1038 DelegateFuncptrExp(Loc loc, Expression *e1);
1040 Expression *toLvalue(Scope *sc, Expression *e);
1041 Expression *modifiableLvalue(Scope *sc, Expression *e);
1054 ArrayExp(Loc loc, Expression *e1, Expression *index = NULL);
1055 ArrayExp(Loc loc, Expression *e1, Expressions *args);
1056 Expression *syntaxCopy();
1058 Expression *toLvalue(Scope *sc, Expression *e);
1068 DotExp(Loc loc, Expression *e1, Expression *e2);
1077 CommaExp(Loc loc, Expression *e1, Expression *e2, bool generated = true);
1080 Expression *toLvalue(Scope *sc, Expression *e);
1081 Expression *modifiableLvalue(Scope *sc, Expression *e);
1083 Expression *toBoolean(Scope *sc);
1084 Expression *addDtorHook(Scope *sc);
1095 IndexExp(Loc loc, Expression *e1, Expression *e2);
1096 Expression *syntaxCopy();
1099 Expression *toLvalue(Scope *sc, Expression *e);
1100 Expression *modifiableLvalue(Scope *sc, Expression *e);
1102 Expression *markSettingAAElem();
1112 PostExp(TOK op, Loc loc, Expression *e);
1121 PreExp(TOK op, Loc loc, Expression *e);
1136 AssignExp(Loc loc, Expression *e1, Expression *e2);
1138 Expression *toLvalue(Scope *sc, Expression *ex);
1139 Expression *toBoolean(Scope *sc);
1147 ConstructExp(Loc loc, Expression *e1, Expression *e2);
1148 ConstructExp(Loc loc, VarDeclaration *v, Expression *e2);
1155 BlitExp(Loc loc, Expression *e1, Expression *e2);
1156 BlitExp(Loc loc, VarDeclaration *v, Expression *e2);
1163 AddAssignExp(Loc loc, Expression *e1, Expression *e2);
1170 MinAssignExp(Loc loc, Expression *e1, Expression *e2);
1177 MulAssignExp(Loc loc, Expression *e1, Expression *e2);
1184 DivAssignExp(Loc loc, Expression *e1, Expression *e2);
1191 ModAssignExp(Loc loc, Expression *e1, Expression *e2);
1198 AndAssignExp(Loc loc, Expression *e1, Expression *e2);
1205 OrAssignExp(Loc loc, Expression *e1, Expression *e2);
1212 XorAssignExp(Loc loc, Expression *e1, Expression *e2);
1219 PowAssignExp(Loc loc, Expression *e1, Expression *e2);
1226 ShlAssignExp(Loc loc, Expression *e1, Expression *e2);
1233 ShrAssignExp(Loc loc, Expression *e1, Expression *e2);
1240 UshrAssignExp(Loc loc, Expression *e1, Expression *e2);
1247 CatAssignExp(Loc loc, Expression *e1, Expression *e2);
1254 AddExp(Loc loc, Expression *e1, Expression *e2);
1262 MinExp(Loc loc, Expression *e1, Expression *e2);
1270 CatExp(Loc loc, Expression *e1, Expression *e2);
1278 MulExp(Loc loc, Expression *e1, Expression *e2);
1286 DivExp(Loc loc, Expression *e1, Expression *e2);
1294 ModExp(Loc loc, Expression *e1, Expression *e2);
1302 PowExp(Loc loc, Expression *e1, Expression *e2);
1310 ShlExp(Loc loc, Expression *e1, Expression *e2);
1318 ShrExp(Loc loc, Expression *e1, Expression *e2);
1326 UshrExp(Loc loc, Expression *e1, Expression *e2);
1334 AndExp(Loc loc, Expression *e1, Expression *e2);
1342 OrExp(Loc loc, Expression *e1, Expression *e2);
1350 XorExp(Loc loc, Expression *e1, Expression *e2);
1358 OrOrExp(Loc loc, Expression *e1, Expression *e2);
1359 Expression *toBoolean(Scope *sc);
1366 AndAndExp(Loc loc, Expression *e1, Expression *e2);
1367 Expression *toBoolean(Scope *sc);
1374 CmpExp(TOK op, Loc loc, Expression *e1, Expression *e2);
1382 InExp(Loc loc, Expression *e1, Expression *e2);
1390 RemoveExp(Loc loc, Expression *e1, Expression *e2);
1399 EqualExp(TOK op, Loc loc, Expression *e1, Expression *e2);
1409 IdentityExp(TOK op, Loc loc, Expression *e1, Expression *e2);
1418 Expression *econd;
1420 CondExp(Loc loc, Expression *econd, Expression *e1, Expression *e2);
1421 Expression *syntaxCopy();
1424 Expression *toLvalue(Scope *sc, Expression *e);
1425 Expression *modifiableLvalue(Scope *sc, Expression *e);
1426 Expression *toBoolean(Scope *sc);
1434 class DefaultInitExp : public Expression
1447 Expression *resolveLoc(Loc loc, Scope *sc);
1455 Expression *resolveLoc(Loc loc, Scope *sc);
1463 Expression *resolveLoc(Loc loc, Scope *sc);
1471 Expression *resolveLoc(Loc loc, Scope *sc);
1479 Expression *resolveLoc(Loc loc, Scope *sc);
1493 UnionExp(Expression *e) in UnionExp()
1500 Expression *exp() { return (Expression *)&u; } in exp()
1504 Expression *copy();
1517 char exp [sizeof(Expression)];
1544 Expression *expType(Type *type, Expression *e);
1546 UnionExp Neg(Type *type, Expression *e1);
1547 UnionExp Com(Type *type, Expression *e1);
1548 UnionExp Not(Type *type, Expression *e1);
1549 UnionExp Bool(Type *type, Expression *e1);
1550 UnionExp Cast(Loc loc, Type *type, Type *to, Expression *e1);
1551 UnionExp ArrayLength(Type *type, Expression *e1);
1552 UnionExp Ptr(Type *type, Expression *e1);
1554 UnionExp Add(Loc loc, Type *type, Expression *e1, Expression *e2);
1555 UnionExp Min(Loc loc, Type *type, Expression *e1, Expression *e2);
1556 UnionExp Mul(Loc loc, Type *type, Expression *e1, Expression *e2);
1557 UnionExp Div(Loc loc, Type *type, Expression *e1, Expression *e2);
1558 UnionExp Mod(Loc loc, Type *type, Expression *e1, Expression *e2);
1559 UnionExp Pow(Loc loc, Type *type, Expression *e1, Expression *e2);
1560 UnionExp Shl(Loc loc, Type *type, Expression *e1, Expression *e2);
1561 UnionExp Shr(Loc loc, Type *type, Expression *e1, Expression *e2);
1562 UnionExp Ushr(Loc loc, Type *type, Expression *e1, Expression *e2);
1563 UnionExp And(Loc loc, Type *type, Expression *e1, Expression *e2);
1564 UnionExp Or(Loc loc, Type *type, Expression *e1, Expression *e2);
1565 UnionExp Xor(Loc loc, Type *type, Expression *e1, Expression *e2);
1566 UnionExp Index(Type *type, Expression *e1, Expression *e2);
1567 UnionExp Cat(Type *type, Expression *e1, Expression *e2);
1569 UnionExp Equal(TOK op, Loc loc, Type *type, Expression *e1, Expression *e2);
1570 UnionExp Cmp(TOK op, Loc loc, Type *type, Expression *e1, Expression *e2);
1571 UnionExp Identity(TOK op, Loc loc, Type *type, Expression *e1, Expression *e2);
1573 UnionExp Slice(Type *type, Expression *e1, Expression *lwr, Expression *upr);