View source code
Display the source code in dmd/expression.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Module dmd.expression

Defines the bulk of the classes which represent the AST at the expression level.

Specification

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

Documentation

https://dlang.org/phobos/dmd_expression.html

Coverage

https://codecov.io/gh/dlang/dmd/src/master/src/dmd/expression.d

Functions

NameDescription
doCopyOrMove(sc, e, t) Handle the postblit call on lvalue, or the move of rvalue.
expandTuples(exps) Expand tuples.
expToVariable(e) Given an Expression, find the variable it really is.
firstComma(e) Find the first non-comma expression.
getFuncTemplateDecl(s) If s is a function template, i.e. the only member of a template and that member is a function, return that template.
hasThis(sc) Determine if this is available by walking up the enclosing scopes until a function is found.
isAliasThisTuple(e) Expand alias this tuples.
isDefaultInitOp(op)
isDotOpDispatch(e) check e is exp.opDispatch!(tiargs) or not It's used to switch to UFCS the semantic analysis path
isNeedThisScope(sc, d) Determine if a this is needed to access d.
lastComma(e) Find the last non-comma expression.
RealIdentical(x1, x2) Test to see if two reals are the same. Regard NaN's as equivalent. Regard +0 and -0 as different.
typeDotIdExp(loc, type, ident) TypeDotIdExp
valueNoDtor(e) If we want the value of this expression, but do not want to call the destructor on it.

Classes

NameDescription
AddAssignExp
AddExp
AddrExp
AndAssignExp
AndExp
ArrayExp e1 [ a0, a1, a2, a3 ,... ]
ArrayLengthExp
ArrayLiteralExp [ e1, e2, e3, ... ]
AssertExp
AssignExp
AssocArrayLiteralExp [ key0 : value0, key1 : value1, ... ]
BinAssignExp
BinExp
BlitExp
CallExp
CastExp Possible to cast to one type while painting to another type
CatAssignExp The ~= operator. It can have one of the following operators:
CatDcharAssignExp
CatElemAssignExp
CatExp
CmpExp op is one of: TOK.lessThan, TOK.lessOrEqual, TOK.greaterThan, TOK.greaterOrEqual
ComExp
CommaExp
ComplexExp
CompoundLiteralExp C11 6.5.2.5 ( type-name ) { initializer-list }
CondExp econd ? e1 : e2
ConstructExp
DeclarationExp Declaration of a symbol
DefaultInitExp
DelegateExp
DelegateFuncptrExp
DeleteExp
DivAssignExp
DivExp
DollarExp
DotExp
DotIdExp
DotTemplateExp Mainly just a placeholder
DotTemplateInstanceExp foo.bar!(args)
DotTypeExp
DotVarExp
DsymbolExp Won't be generated by parser.
EqualExp == and !=
ErrorExp Use this expression for error recovery. It should behave as a 'sink' to prevent further cascaded error messages.
Expression
FileInitExp
FuncExp Function/Delegate literal
FuncInitExp
GenericExp C11 6.5.1.1 Generic Selection For ImportC
HaltExp
IdentifierExp
IdentityExp is and !is
ImportExp
IndexExp e1 [ e2 ]
InExp
IntegerExp
IntervalExp Mainly just a placeholder
IsExp is(targ id tok tspec) is(targ id == tok2)
LineInitExp
LogicalExp
MinAssignExp
MinExp
MixinExp
ModAssignExp
ModExp
ModuleInitExp
MulAssignExp
MulExp
NegExp
NewAnonClassExp thisexp.new(newargs) class baseclasses { } (arguments)
NewExp thisexp.new(newargs) newtype(arguments)
NotExp
NullExp
ObjcClassReferenceExp Objective-C class reference expression.
OrAssignExp
OrExp
OverExp Overload Set
PostExp For both i++ and i--
PowAssignExp
PowExp
PreExp For both ++i and --i
PrettyFuncInitExp
PtrExp
RealExp
RemoveExp This deletes the key e1 from the associative array e2
ScopeExp Mainly just a placeholder of Package, Module, Nspace, and TemplateInstance (including TemplateMixin)
ShlAssignExp
ShlExp
ShrAssignExp
ShrExp
SliceExp e1 [lwr .. upr]
StringExp
StructLiteralExp sd( e1, e2, e3, ... )
SuperExp
SymbolExp
SymOffExp Offset from symbol
TemplateExp Mainly just a placeholder
ThisExp
TraitsExp _traits(identifier, args...)
TupleExp
TypeExp Mainly just a placeholder
TypeidExp typeid(int)
UAddExp
UnaExp
UshrAssignExp
UshrExp
VarExp Variable
VectorArrayExp e1.array property for vectors.
VectorExp
VoidInitExp An uninitialized value, generated from void initializers.
XorAssignExp
XorExp

Structs

NameDescription
UnionExp

Enums

NameDescription
ModifyFlags Specifies how the checkModify deals with certain situations

Manifest constants

NameTypeDescription
stageApply apply is running
stageInlineScan inlineScan is running
stageOptimize optimize is running
stageScrub scrubReturnValue is running
stageSearchPointers hasNonConstPointers is running
stageToCBuffer toCBuffer is running

Authors

Walter Bright

License

Boost License 1.0