dmd.initsem

Semantic analysis of initializers.

Authors

Walter Bright

Source: initsem.d

  • Declaration

    Expression toAssocArrayLiteral(ArrayInitializer ai);

    If possible, convert array initializer to associative array initializer.

    Parameters

    ArrayInitializer ai

    array initializer to be converted

    Return Value

    The converted associative array initializer or ErrorExp if ai is not an associative array initializer.

  • Declaration

    Initializer initializerSemantic(Initializer init, Scope* sc, ref Type tx, NeedInterpret needInterpret);

    Perform semantic analysis on init.

    Parameters

    Initializer init

    Initializer AST node

    Scope* sc

    context

    Type tx

    type that the initializer needs to become. If tx is an incomplete type and the initializer completes it, it is updated to be the complete type. ImportC has incomplete types

    NeedInterpret needInterpret

    if CTFE needs to be run on this, such as if it is the initializer for a const declaration

    Return Value

    Initializer with completed semantic analysis, ErrorInitializer if errors were encountered

  • Declaration

    Initializer inferType(Initializer init, Scope* sc);

    Translate init to an Expression in order to infer the type.

    Parameters

    Initializer init

    Initializer AST node

    Scope* sc

    context

    Return Value

    an equivalent ExpInitializer if successful, or ErrorInitializer if it cannot be translated

  • Declaration

    Expression initializerToExpression(Initializer init, Type itype = null, const bool isCfile = false);

    Translate init to an Expression.

    Parameters

    Initializer init

    Initializer AST node

    Type itype

    if not null, type to coerce expression to

    bool isCfile

    default initializers are different with C

    Return Value

    Expression created, null if cannot, ErrorExp for other errors

  • Declaration

    Expressions* resolveStructLiteralNamedArgs(StructDeclaration sd, Type t, Scope* sc, Loc iloc, Identifier[] names, scope Expression delegate(size_t i, Type fieldType) getExp, scope Loc delegate(size_t i) getLoc);

    Given the names and values of a StructInitializer or CallExp, resolve it to a list of expressions to construct a StructLiteralExp.

    Parameters

    StructDeclaration sd

    struct

    Type t

    type of struct (potentially including qualifiers such as const or immutable)

    Scope* sc

    scope of the expression initializing the struct

    Loc iloc

    location of expression initializing the struct

    Identifier[] names

    identifiers passed in argument list, null entries for positional arguments

    Expression delegate(size_t i, Type fieldType) getExp

    function that, given an index into names and destination type, returns the initializing expression

    Loc delegate(size_t i) getLoc

    function that, given an index into names, returns a location for error messages

    Return Value

    list of expressions ordered to the struct's fields, or null on error