dmd.expressionsem

Semantic analysis of expressions.

Specification: ($LINK2 https://dlang.org/spec/expression.html, Expressions)

Members

Functions

addDtorHook
Expression addDtorHook(Expression e, 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.

arrayExpressionSemantic
bool arrayExpressionSemantic(Expression[] exps, Scope* sc, bool preserveErrors)

Perform semantic() on an array of Expressions.

binSemantic
Expression binSemantic(BinExp e, Scope* sc)

Helper function for easy error propagation. If error occurs, returns ErrorExp. Otherwise returns NULL.

checkAddressVar
bool checkAddressVar(Scope* sc, Expression exp, VarDeclaration v)

Determine if exp, which gets its address taken, can do so safely.

checkAddressable
bool checkAddressable(Expression e, Scope* sc)

This check ensures that the object in exp can have its address taken, or issue a diagnostic error.

checkSharedAccess
bool checkSharedAccess(Expression e, Scope* sc, bool returnRef)

If expression is shared, check that we can access it. Give error message if not.

doCopyOrMove
Expression doCopyOrMove(Scope* sc, Expression e, Type t)

Handle the postblit call on lvalue, or the move of rvalue.

dotIdSemanticProp
Expression dotIdSemanticProp(DotIdExp exp, Scope* sc, bool gag)

Resolve properties, i.e. e1.ident, without seeing UFCS.

dotTemplateSemanticProp
Expression dotTemplateSemanticProp(DotTemplateInstanceExp exp, Scope* sc, bool gag)

Resolve e1.ident!tiargs without seeing UFCS.

expressionsToString
bool expressionsToString(OutBuffer buf, Scope* sc, Expressions* exps)

Perform semantic analysis and CTFE on expressions to produce a string.

getThisSkipNestedFuncs
Expression getThisSkipNestedFuncs(Loc loc, Scope* sc, Dsymbol s, AggregateDeclaration ad, Expression e1, Type t, Dsymbol var, bool flag)

Helper function for getRightThis(). Gets this of the next outer aggregate.

getVarExp
Expression getVarExp(EnumMember em, Loc loc, Scope* sc)

Returns em as a VariableExp

hasThis
FuncDeclaration hasThis(Scope* sc)

Determine if this is available by walking up the enclosing scopes until a function is found.

makeThis2Argument
VarDeclaration makeThis2Argument(Loc loc, Scope* sc, FuncDeclaration fd)

Make a dual-context container for use as a this argument.

resolveIsPackage
Package resolveIsPackage(Dsymbol sym)

Determines whether a symbol represents a module or package (Used as a helper for is(type == module) and is(type == package))

resolveOpDollar
Expression resolveOpDollar(Scope* sc, ArrayExp ae, Expression* pe0)

Runs semantic on ae.arguments. Declares temporary variables if '$' was used.

resolveOpDollar
Expression resolveOpDollar(Scope* sc, ArrayExp ae, IntervalExp ie, Expression* pe0)

Runs semantic on se.lwr and se.upr. Declares a temporary variable if '$' was used.

resolvePropertiesOnly
Expression resolvePropertiesOnly(Scope* sc, Expression e1)

If e1 is a property function (template), resolve it.

semanticString
StringExp semanticString(Scope* sc, Expression exp, char* s)

Resolve exp as a compile-time known string.

symbolToExp
Expression symbolToExp(Dsymbol s, Loc loc, Scope* sc, bool hasOverloads)

Turn symbol s into the expression it represents.

toBoolean
Expression toBoolean(Expression exp, Scope* sc)

Try to treat exp as a boolean,

toUTF8
StringExp toUTF8(StringExp se, Scope* sc)

Convert string to char[].

trySemantic
Expression trySemantic(Expression exp, Scope* sc)

Try to run semantic routines. If they fail, return NULL.

unaSemantic
Expression unaSemantic(UnaExp e, Scope* sc)

Helper function for easy error propagation. If error occurs, returns ErrorExp. Otherwise returns NULL.

valueNoDtor
Expression valueNoDtor(Expression e)

If we want the value of this expression, but do not want to call the destructor on it.

verifyHookExist
bool verifyHookExist(Loc loc, Scope sc, Identifier id, string description, Identifier module_)

Make sure that the runtime hook id exists.

Meta