dmd.typesem

Semantic analysis for D types.

Authors

Walter Bright

Source: typesem.d

  • Declaration

    Expression typeToExpression(Type t);

    We've mistakenly parsed t as a type. Redo t as an Expression only if there are no type modifiers.

    Parameters

    Type t

    mistaken type

    Return Value

    t redone as Expression, null if cannot

  • Declaration

    Type typeSemantic(Type type, const ref Loc loc, Scope* sc);

    Perform semantic analysis on a type.

    Parameters

    Type type

    Type AST node

    Loc loc

    the location of the type

    Scope* sc

    context

    Return Value

    Type with completed semantic analysis, Terror if errors were encountered

  • Declaration

    Type merge(Type type);

    If an identical type to type is in type.stringtable, return the latter one. Otherwise, add it to type.stringtable. Some types don't get merged and are returned as-is.

    Parameters

    Type type

    Type to check against existing types

    Return Value

    the type that was merged

  • Declaration

    Expression getProperty(Type t, Scope* scope_, const ref Loc loc, Identifier ident, int flag, Expression src = null);

    Calculate built-in properties which just the type is necessary.

    Parameters

    Type t

    the type for which the property is calculated

    Scope* scope_

    the scope from which the property is being accessed. Used for visibility checks only.

    Loc loc

    the location where the property is encountered

    Identifier ident

    the identifier of the property

    int flag

    if flag & 1, don't report "not a property" error and just return NULL.

    Expression src

    expression for type t or null.

    Return Value

    expression representing the property, or null if not a property and (flag & 1)

  • Declaration

    void resolve(Type mt, const ref Loc loc, Scope* sc, out Expression pe, out Type pt, out Dsymbol ps, bool intypeid = false);

    Resolve type 'mt' to either type, symbol, or expression. If errors happened, resolved to Type.terror.

    Parameters

    Type mt

    type to be resolved

    Loc loc

    the location where the type is encountered

    Scope* sc

    the scope of the type

    Expression pe

    is set if t is an expression

    Type pt

    is set if t is a type

    Dsymbol ps

    is set if t is a symbol

    bool intypeid

    true if in type id

  • Declaration

    Expression dotExp(Type mt, Scope* sc, Expression e, Identifier ident, DotExpFlag flag);

    Access the members of the object e. This type is same as e.type.

    Parameters

    Type mt

    type for which the dot expression is used

    Scope* sc

    instantiating scope

    Expression e

    expression to convert

    Identifier ident

    identifier being used

    DotExpFlag flag

    DotExpFlag bit flags

    Return Value

    resulting expression with e.ident resolved

  • Declaration

    Expression defaultInit(Type mt, const ref Loc loc, const bool isCfile = false);

    Get the default initialization expression for a type.

    Parameters

    Type mt

    the type for which the init expression is returned

    Loc loc

    the location where the expression needs to be evaluated

    bool isCfile

    default initializers are different with C

    Return Value

    The initialization expression for the type.

  • Declaration

    Type getComplexLibraryType(const ref Loc loc, Scope* sc, TY ty);

    Extract complex type from core.stdc.config

    Parameters

    Loc loc

    for error messages

    Scope* sc

    context

    TY ty

    a complex or imaginary type

    Return Value

    Complex!float, Complex!double, Complex!real or null for error