dmd.expressionsem

Semantic analysis of expressions.

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

Members

Functions

arrayExpressionSemantic
bool arrayExpressionSemantic(Expressions* exps, Scope* sc, bool preserveErrors = false)

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.

checkSharedAccess
bool checkSharedAccess(Expression e, Scope* sc)

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

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

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

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

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

makeThis2Argument
VarDeclaration makeThis2Argument(const ref 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, const char* s)

Resolve exp as a compile-time known string.

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

Turn symbol s into the expression it represents.

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(const ref Loc loc, ref Scope sc, Identifier id, string description, Identifier module_ = Id.object)

Make sure that the runtime hook id exists.

Meta