TypeBasic

extern (C++) final
class TypeBasic : Type {
const(char)* dstring;
uint flags;
}

Inherited Members

From Type

covariant
int covariant(Type t, StorageClass* pstc = null)

Covariant means that 'this' can substitute for 't', i.e. a pure function is a match for an impure type.

toChars
const(char)* toChars()

For pretty-printing a type.

merge
Type merge()
merge2
Type merge2()

This version does a merge even if the deco is already computed. Necessary for types that have a deco, but are not merged.

modToBuffer
void modToBuffer(OutBuffer* buf)

Store this type's modifier name into buf.

modToChars
char* modToChars()

Return this type's modifier name.

modifiersApply
int modifiersApply(void* param, int function(void*, const(char)*) fp)

For each active modifier (MODconst, MODimmutable, etc) call fp with a void* for the work param and a string representation of the attribute.

isAssignable
bool isAssignable()

When T is mutable, Given: T a, b; Can we bitwise assign: a = b; ?

isBoolean
bool isBoolean()

Returns true if T can be converted to boolean value.

checkDeprecated
void checkDeprecated(Loc loc, Scope* sc)

Check type to see if it is based on a deprecated symbol.

nullAttributes
Type nullAttributes()

Return a copy of this type with all attributes null-initialized. Useful for creating a type with different modifiers.

constOf
Type constOf()

Convert to 'const'.

immutableOf
Type immutableOf()

Convert to 'immutable'.

mutableOf
Type mutableOf()

Make type mutable.

unSharedOf
Type unSharedOf()

Make type unshared. 0 => 0 const => const immutable => immutable shared => 0 shared const => const wild => wild wild const => wild const shared wild => wild shared wild const => wild const

wildOf
Type wildOf()

Convert to 'wild'.

fixTo
void fixTo(Type t)

For our new type 'this', which is type-constructed from t, fill in the cto, ito, sto, scto, wto shortcuts.

check
void check()

Look for bugs in constructing types.

addSTC
Type addSTC(StorageClass stc)

Apply STCxxxx bits to existing type. Use *before* semantic analysis is run.

castMod
Type castMod(MOD mod)

Apply MODxxxx bits to existing type.

addMod
Type addMod(MOD mod)

Add MODxxxx bits to existing type. We're adding, not replacing, so adding const to a shared type => "shared const"

addStorageClass
Type addStorageClass(StorageClass stc)

Add storage class modifiers to type.

toBasetype
Type toBasetype()

If this is a shell around another type, get that other type.

implicitConvTo
MATCH implicitConvTo(Type to)

Determine if 'this' can be implicitly converted to type 'to'.

constConv
MATCH constConv(Type to)

Determine if converting 'this' to 'to' is an identity operation, a conversion to const operation, or the types aren't the same.

deduceWild
ubyte deduceWild(Type t, bool isRef)

Return MOD bits matching this type to wild parameter type (tprm).

toHeadMutable
Type toHeadMutable()

Return type with the top level of it being mutable.

getProperty
Expression getProperty(Loc loc, Identifier ident, int flag)

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

DotExpFlag
enum DotExpFlag

dotExp() bit flags

dotExp
Expression dotExp(Scope* sc, Expression e, Identifier ident, int flag)

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

alignment
structalign_t alignment()

Return alignment to use for this type.

noMember
Expression noMember(Scope* sc, Expression e, Identifier ident, int flag)

Figures out what to do with an undefined member reference for classes and structs.

defaultInitLiteral
Expression defaultInitLiteral(Loc loc)

Use when we prefer the default initializer to be a literal, rather than a global immutable variable.

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

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

resolveExp
void resolveExp(Expression e, Type* pt, Expression* pe, Dsymbol* ps)

Normalize e as the result of Type.resolve() process.

hasWild
int hasWild()

Return !=0 if the type or any of its subtypes is wild.

toExpression
Expression toExpression()

We've mistakenly parsed this as a type. Redo it as an Expression. NULL if cannot.

hasPointers
bool hasPointers()

Return !=0 if type has pointers that need to be scanned by the GC during a collection cycle.

hasVoidInitPointers
bool hasVoidInitPointers()

Detect if type has pointer fields that are initialized to void. Local stack variables with such void fields can remain uninitialized, leading to pointer bugs.

nextOf
Type nextOf()

If this is a type of something, return that something.

baseElemOf
Type baseElemOf()

If this is a type of static array, return its base element type.

sizemask
uinteger_t sizemask()

Return the mask that an integral type will fit into.

needsDestruction
bool needsDestruction()

true if when type goes out of scope, it needs a destructor applied. Only applies to value types, not ref types.

needsNested
bool needsNested()
checkComplexTransition
void checkComplexTransition(Loc loc)

Bugzilla 14488: Check if the inner most base type is complex or imaginary. Should only give alerts when set to emit transitional messages.

Meta