dmd.declaration

Miscellaneous declarations, including typedef, alias, variable declarations including the implicit this declaration, type tuples, ClassInfo, ModuleInfo and various TypeInfos.

Authors

Walter Bright

Source: declaration.d

  • Declaration

    bool checkFrameAccess(Loc loc, Scope* sc, AggregateDeclaration ad, size_t iStart = 0);

    Check to see the aggregate type is nested and its context pointer is accessible from the current scope. Returns true if error occurs.

  • Declaration

    bool modifyFieldVar(Loc loc, Scope* sc, VarDeclaration var, Expression e1);

    Mark variable v as modified if it is inside a constructor that var is a field in.

  • Declaration

    void ObjectNotFound(Identifier id);

  • Declaration

    enum STC STCFlowThruAggregate;

    for an AggregateDeclaration

  • Declaration

    enum STC STCFlowThruFunction;

    for a FuncDeclaration

  • Declaration

    abstract class Declaration: dmd.dsymbol.Dsymbol;

    • Declaration

      final bool checkDisabled(Loc loc, Scope* sc, bool isAliasedDeclaration = false);

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

      Discussion

      If the declaration is disabled but inside a disabled function, returns true but do not issue an error message.

      Parameters

      Loc loc

      Location information of the call

      Scope* sc

      Scope in which the call occurs

      bool isAliasedDeclaration

      if true searches overload set

      Return Value

      true if this Declaration is @disabled, false otherwise.

    • Declaration

      final 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.

      Parameters

      Loc loc

      location for error messages

      Expression e1

      null or this expression when this declaration is a field

      Scope* sc

      context

      int flag

      !=0 means do not issue error message for invalid modification

      Return Value

      Modifiable.yes or Modifiable.initialization

  • Declaration

    class TupleDeclaration: dmd.declaration.Declaration;

  • Declaration

    class AliasDeclaration: dmd.declaration.Declaration;

    • Declaration

      const bool isAliasedTemplateParameter();

      Return Value

      true if this instance was created to make a template parameter visible in the scope of a template body, false otherwise

  • Declaration

    class OverDeclaration: dmd.declaration.Declaration;

  • Declaration

    class VarDeclaration: dmd.declaration.Declaration;

    • Declaration

      final bool isDataseg();

      Does symbol go into data segment? Includes extern variables.

    • Declaration

      final bool isThreadlocal();

      Does symbol go into thread local storage?

    • Declaration

      final bool isCTFE();

      Can variable be read and written by CTFE?

    • Declaration

      final bool canTakeAddressOf();

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

    • Declaration

      final bool needsScopeDtor();

      Return true if variable needs to call the destructor.

    • Declaration

      final Expression callScopeDtor(Scope* sc);

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

    • Declaration

      final Expression getConstInitializer(bool needFullType = true);

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

    • Declaration

      final Expression expandInitializer(Loc loc);

      Helper function for the expansion of manifest constant.

    • Declaration

      final 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[].

      Return Value

      true if error occurs.

    • Declaration

      final const pure bool enclosesLifetimeOf(VarDeclaration v);

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

      Parameters

      VarDeclaration v

      variable to test against

      Return Value

      true if it does

    • Declaration

      final 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.

      Parameters

      VarDeclaration v

      an STC.maybescope variable that was assigned to this

  • Declaration

    class SymbolDeclaration: dmd.declaration.Declaration;

    This is a shell around a back end symbol

  • Declaration

    class TypeInfoDeclaration: dmd.declaration.VarDeclaration;

  • Declaration

    class TypeInfoStructDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoClassDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoInterfaceDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoPointerDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoArrayDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoStaticArrayDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoAssociativeArrayDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoEnumDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoFunctionDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoDelegateDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoTupleDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoConstDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoInvariantDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoSharedDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoWildDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class TypeInfoVectorDeclaration: dmd.declaration.TypeInfoDeclaration;

  • Declaration

    class ThisDeclaration: dmd.declaration.VarDeclaration;

    For the "this" parameter to member functions