Expression

extern (C++) abstract
class Expression : ASTNode {}

Constructors

this
this(Loc loc, TOK op, int size)
Undocumented in source.

Members

Functions

accept
void accept(Visitor v)
Undocumented in source. Be warned that the author may not have intended to support it.
addDtorHook
Expression addDtorHook(Scope* sc)

Destructors are attached to VarDeclarations. Hence, if expression returns a temp that needs a destructor, make sure and create a VarDeclaration for that temp.

addressOf
Expression addressOf()

Take address of expression.

castTo
Expression castTo(Scope* sc, Type t)
Undocumented in source. Be warned that the author may not have intended to support it.
checkArithmetic
bool checkArithmetic()
Undocumented in source. Be warned that the author may not have intended to support it.
checkDeprecated
bool checkDeprecated(Scope* sc, Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
checkDisabled
bool checkDisabled(Scope* sc, Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
checkIntegral
bool checkIntegral()
Undocumented in source. Be warned that the author may not have intended to support it.
checkModifiable
Modifiable checkModifiable(Scope* sc, int flag)
checkNoBool
bool checkNoBool()
Undocumented in source. Be warned that the author may not have intended to support it.
checkNogc
bool checkNogc(Scope* sc, FuncDeclaration f)

Calling function f. Check the @nogc-ness, i.e. if we're in a @nogc function we can only call other @nogc functions. Returns true if error occurs.

checkOverridenDtor
void checkOverridenDtor(Scope* sc, FuncDeclaration f, bool function(DtorDeclaration) check, string checkName)

Checks whether f is a generated DtorDeclaration that hides a user-defined one which passes check while f doesn't (e.g. when the user defined dtor is pure but the generated dtor is not). In that case the method will identify and print all members causing the attribute missmatch.

checkPostblit
bool checkPostblit(Scope* sc, Type t)

Check that the postblit is callable if t is an array of structs. Returns true if error happens.

checkPurity
bool checkPurity(Scope* sc, FuncDeclaration f)

Calling function f. Check the purity, i.e. if we're in a pure function we can only call other pure functions. Returns true if error occurs.

checkPurity
bool checkPurity(Scope* sc, VarDeclaration v)

Accessing variable v. Check for purity and safety violations. Returns true if error occurs.

checkReadModifyWrite
bool checkReadModifyWrite(TOK rmwOp, Expression ex)

Check whether the expression allows RMW operations, error with rmw operator diagnostic if not. ex is the RHS expression, or NULL if ++/-- is used (for diagnostics) Returns true if error occurs.

checkRightThis
bool checkRightThis(Scope* sc)
Undocumented in source. Be warned that the author may not have intended to support it.
checkSafety
bool checkSafety(Scope* sc, FuncDeclaration f)

Calling function f. Check the safety, i.e. if we're in a @safe function we can only call @safe or @trusted functions. Returns true if error occurs.

checkScalar
bool checkScalar()
Undocumented in source. Be warned that the author may not have intended to support it.
checkType
bool checkType()

Check that the expression has a valid type. If not, generates an error "... has no type".

checkValue
bool checkValue()

Check that the expression has a valid value. If not, generates an error "... has no value".

copy
Expression copy()

Does *not* do a deep copy.

ctfeInterpret
Expression ctfeInterpret()
Undocumented in source. Be warned that the author may not have intended to support it.
deprecation
void deprecation(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.
deprecation
void deprecation(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.
deref
Expression deref()

If this is a reference, dereference it.

dyncast
DYNCAST dyncast()
Undocumented in source. Be warned that the author may not have intended to support it.
error
void error(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.
error
void error(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.
errorSupplemental
void errorSupplemental(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.
errorSupplemental
void errorSupplemental(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.
hasCode
bool hasCode()
Undocumented in source. Be warned that the author may not have intended to support it.
implicitCastTo
Expression implicitCastTo(Scope* sc, Type t)
Undocumented in source. Be warned that the author may not have intended to support it.
implicitConvTo
MATCH implicitConvTo(Type t)
Undocumented in source. Be warned that the author may not have intended to support it.
isAddAssignExp
inout(AddAssignExp) isAddAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isAddExp
inout(AddExp) isAddExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isAddrExp
inout(AddrExp) isAddrExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isAndAssignExp
inout(AndAssignExp) isAndAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isAndExp
inout(AndExp) isAndExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isArrayExp
inout(ArrayExp) isArrayExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isArrayLengthExp
inout(ArrayLengthExp) isArrayLengthExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isArrayLiteralExp
inout(ArrayLiteralExp) isArrayLiteralExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isAssertExp
inout(AssertExp) isAssertExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isAssignExp
inout(AssignExp) isAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isAssocArrayLiteralExp
inout(AssocArrayLiteralExp) isAssocArrayLiteralExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isBinAssignExp
inout(BinAssignExp) isBinAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isBlitExp
inout(BlitExp) isBlitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isBool
bool isBool(bool result)

Does this expression statically evaluate to a boolean 'result' (true or false)?

isCallExp
inout(CallExp) isCallExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isCastExp
inout(CastExp) isCastExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isCatAssignExp
inout(CatAssignExp) isCatAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isCatDcharAssignExp
inout(CatDcharAssignExp) isCatDcharAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isCatElemAssignExp
inout(CatElemAssignExp) isCatElemAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isCatExp
inout(CatExp) isCatExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isClassReferenceExp
inout(ClassReferenceExp) isClassReferenceExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isComExp
inout(ComExp) isComExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isCommaExp
inout(CommaExp) isCommaExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isComplexExp
inout(ComplexExp) isComplexExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isCondExp
inout(CondExp) isCondExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isConst
int isConst()
Undocumented in source. Be warned that the author may not have intended to support it.
isConstructExp
inout(ConstructExp) isConstructExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDeclarationExp
inout(DeclarationExp) isDeclarationExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDefaultInitExp
inout(DefaultInitExp) isDefaultInitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDelegateExp
inout(DelegateExp) isDelegateExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDelegateFuncptrExp
inout(DelegateFuncptrExp) isDelegateFuncptrExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDelegatePtrExp
inout(DelegatePtrExp) isDelegatePtrExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDeleteExp
inout(DeleteExp) isDeleteExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDivAssignExp
inout(DivAssignExp) isDivAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDivExp
inout(DivExp) isDivExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDollarExp
inout(DollarExp) isDollarExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDotExp
inout(DotExp) isDotExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDotIdExp
inout(DotIdExp) isDotIdExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDotTemplateExp
inout(DotTemplateExp) isDotTemplateExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDotTemplateInstanceExp
inout(DotTemplateInstanceExp) isDotTemplateInstanceExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDotTypeExp
inout(DotTypeExp) isDotTypeExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDotVarExp
inout(DotVarExp) isDotVarExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isDsymbolExp
inout(DsymbolExp) isDsymbolExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isEqualExp
inout(EqualExp) isEqualExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isErrorExp
inout(ErrorExp) isErrorExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isExp
inout(IsExp) isExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isFileInitExp
inout(FileInitExp) isFileInitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isFuncExp
inout(FuncExp) isFuncExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isFuncInitExp
inout(FuncInitExp) isFuncInitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isHaltExp
inout(HaltExp) isHaltExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isIdentifierExp
inout(IdentifierExp) isIdentifierExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isIdentityExp
inout(IdentityExp) isIdentityExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isImportExp
inout(ImportExp) isImportExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isInExp
inout(InExp) isInExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isIndexExp
inout(IndexExp) isIndexExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isIntegerExp
inout(IntegerExp) isIntegerExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isIntervalExp
inout(IntervalExp) isIntervalExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isLineInitExp
inout(LineInitExp) isLineInitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isLogicalExp
inout(LogicalExp) isLogicalExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isLvalue
bool isLvalue()

Return !=0 if expression is an lvalue.

isMinAssignExp
inout(MinAssignExp) isMinAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isMinExp
inout(MinExp) isMinExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isMixinExp
inout(MixinExp) isMixinExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isModAssignExp
inout(ModAssignExp) isModAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isModExp
inout(ModExp) isModExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isModuleInitExp
inout(ModuleInitExp) isModuleInitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isMulAssignExp
inout(MulAssignExp) isMulAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isMulExp
inout(MulExp) isMulExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isNegExp
inout(NegExp) isNegExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isNewAnonClassExp
inout(NewAnonClassExp) isNewAnonClassExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isNewExp
inout(NewExp) isNewExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isNotExp
inout(NotExp) isNotExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isNullExp
inout(NullExp) isNullExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isOrAssignExp
inout(OrAssignExp) isOrAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isOrExp
inout(OrExp) isOrExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isOverExp
inout(OverExp) isOverExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isPostExp
inout(PostExp) isPostExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isPowAssignExp
inout(PowAssignExp) isPowAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isPowExp
inout(PowExp) isPowExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isPreExp
inout(PreExp) isPreExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isPrettyFuncInitExp
inout(PrettyFuncInitExp) isPrettyFuncInitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isPtrExp
inout(PtrExp) isPtrExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isRealExp
inout(RealExp) isRealExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isRemoveExp
inout(RemoveExp) isRemoveExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isScopeExp
inout(ScopeExp) isScopeExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isShlAssignExp
inout(ShlAssignExp) isShlAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isShlExp
inout(ShlExp) isShlExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isShrAssignExp
inout(ShrAssignExp) isShrAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isShrExp
inout(ShrExp) isShrExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isSliceExp
inout(SliceExp) isSliceExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isStringExp
inout(StringExp) isStringExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isStructLiteralExp
inout(StructLiteralExp) isStructLiteralExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isSuperExp
inout(SuperExp) isSuperExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isSymOffExp
inout(SymOffExp) isSymOffExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isTemplateExp
inout(TemplateExp) isTemplateExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isThisExp
inout(ThisExp) isThisExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isThrownExceptionExp
inout(ThrownExceptionExp) isThrownExceptionExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isTraitsExp
inout(TraitsExp) isTraitsExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isTupleExp
inout(TupleExp) isTupleExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isTypeExp
inout(TypeExp) isTypeExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isTypeidExp
inout(TypeidExp) isTypeidExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isUAddExp
inout(UAddExp) isUAddExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isUshrAssignExp
inout(UshrAssignExp) isUshrAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isUshrExp
inout(UshrExp) isUshrExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isVarExp
inout(VarExp) isVarExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isVectorArrayExp
inout(VectorArrayExp) isVectorArrayExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isVectorExp
inout(VectorExp) isVectorExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isVoidInitExp
inout(VoidInitExp) isVoidInitExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isXorAssignExp
inout(XorAssignExp) isXorAssignExp()
Undocumented in source. Be warned that the author may not have intended to support it.
isXorExp
inout(XorExp) isXorExp()
Undocumented in source. Be warned that the author may not have intended to support it.
modifiableLvalue
Expression modifiableLvalue(Scope* sc, Expression e)
Undocumented in source. Be warned that the author may not have intended to support it.
optimize
Expression optimize(int result, bool keepLvalue)
Undocumented in source. Be warned that the author may not have intended to support it.
resolveLoc
Expression resolveLoc(Loc loc, Scope* sc)

Resolve __FILE__, __LINE__, __MODULE__, __FUNCTION__, __PRETTY_FUNCTION__, __FILE_FULL_PATH__ to loc.

syntaxCopy
Expression syntaxCopy()
Undocumented in source. Be warned that the author may not have intended to support it.
toBoolean
Expression toBoolean(Scope* sc)

If expression can be tested for true or false, returns the modified expression. Otherwise returns ErrorExp.

toChars
const(char)* toChars()
Undocumented in source. Be warned that the author may not have intended to support it.
toComplex
complex_t toComplex()
Undocumented in source. Be warned that the author may not have intended to support it.
toImaginary
real_t toImaginary()
Undocumented in source. Be warned that the author may not have intended to support it.
toInteger
dinteger_t toInteger()
Undocumented in source. Be warned that the author may not have intended to support it.
toLvalue
Expression toLvalue(Scope* sc, Expression e)

Give error if we're not an lvalue. If we can, convert expression to be an lvalue.

toReal
real_t toReal()
Undocumented in source. Be warned that the author may not have intended to support it.
toStringExp
StringExp toStringExp()
Undocumented in source. Be warned that the author may not have intended to support it.
toTupleExp
TupleExp toTupleExp()
Undocumented in source. Be warned that the author may not have intended to support it.
toUInteger
uinteger_t toUInteger()
Undocumented in source. Be warned that the author may not have intended to support it.
warning
void warning(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.
warning
void warning(const(char)* format, ...)
Undocumented in source. Be warned that the author may not have intended to support it.

Static functions

_init
void _init()
Undocumented in source. Be warned that the author may not have intended to support it.
arraySyntaxCopy
Expressions* arraySyntaxCopy(Expressions* exps)
Undocumented in source. Be warned that the author may not have intended to support it.
combine
Expression combine(Expression e1, Expression e2, Expression e3, Expression e4)
Undocumented in source. Be warned that the author may not have intended to support it.
combine
Expression combine(Expression e1, Expression e2, Expression e3)
Undocumented in source. Be warned that the author may not have intended to support it.
combine
Expression combine(Expression e1, Expression e2)

Combine e1 and e2 by CommaExp if both are not NULL.

deinitialize
void deinitialize()

Deinitializes the global state of the compiler.

extractLast
Expression extractLast(Expression e, Expression e0)

If 'e' is a tree of commas, returns the rightmost expression by stripping off it from the tree. The remained part of the tree is returned via e0. Otherwise 'e' is directly returned and e0 is set to NULL.

Variables

loc
Loc loc;
Undocumented in source.
op
TOK op;
Undocumented in source.
parens
ubyte parens;
Undocumented in source.
size
ubyte size;
Undocumented in source.
type
Type type;
Undocumented in source.

Inherited Members

From ASTNode

accept
void accept(Visitor v)

Visits this AST node using the given visitor.

Meta