VarDeclaration

extern (C++)
class VarDeclaration : Declaration {
Initializer _init;
FuncDeclarations nestedrefs;
Dsymbol aliassym;
VarDeclaration lastVar;
Expression edtor;
IntRange* range;
VarDeclarations* maybes;
uint endlinnum;
uint offset;
uint sequenceNumber;
__gshared
uint nextSequenceNumber;
structalign_t alignment;
enum AdrOnStackNone;
uint ctfeAdrOnStack;
bool isargptr;
bool ctorinit;
bool iscatchvar;
bool isowner;
bool onstack;
bool mynew;
byte canassign;
bool overlapped;
bool overlapUnsafe;
bool doNotInferScope;
bool doNotInferReturn;
ubyte isdataseg;
bool isArgDtorVar;
}

Members

Functions

addMaybe
void addMaybe(VarDeclaration v)

Add variable to maybes[]. When a maybescope variable v is assigned to a maybescope variable this, we cannot determine if this is actually scope until the semantic analysis for the function is completed. Thus, we save the data until then.

callScopeDtor
Expression callScopeDtor(Scope* sc)

If a variable has a scope destructor call, return call for it. Otherwise, return NULL.

canTakeAddressOf
bool canTakeAddressOf()

Return true if we can take the address of this variable.

checkNestedReference
bool checkNestedReference(Scope* sc, Loc loc)

Check to see if this variable is actually in an enclosing function rather than the current one. Update nestedrefs[], closureVars[] and outerVars[].

enclosesLifetimeOf
bool enclosesLifetimeOf(VarDeclaration v)

Determine if this has a lifetime that lasts past the destruction of v

expandInitializer
Expression expandInitializer(Loc loc)

Helper function for the expansion of manifest constant.

getConstInitializer
Expression getConstInitializer(bool needFullType)

If variable has a constant expression initializer, get it. Otherwise, return null.

isCTFE
bool isCTFE()

Can variable be read and written by CTFE?

isDataseg
bool isDataseg()

Does symbol go into data segment? Includes extern variables.

isThreadlocal
bool isThreadlocal()

Does symbol go into thread local storage?

needsScopeDtor
bool needsScopeDtor()

Return true if variable needs to call the destructor.

Inherited Members

From Declaration

checkDisabled
bool checkDisabled(Loc loc, Scope* sc, bool isAliasedDeclaration)

Issue an error if an attempt to call a disabled method is made

checkModify
Modifiable checkModify(Loc loc, Scope* sc, Expression e1, int flag)

Check to see if declaration can be modified in this context (sc). Issue error if not.

Suggestion Box / Bug Report