dmd.expressionsem

Semantic analysis of expressions.

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

Members

Functions

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.

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

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,

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.

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

Make sure that the runtime hook id exists.

Meta