Fan

 

mixin

compiler::CType

sys::Obj
  compiler::CType

CType is a "compiler type" which is class used for representing the Fan type system in the compiler. CTypes map to types within the compilation units themsevles as TypeDef and TypeRef or to precompiled types in imported pods via ReflectType or FType.

Slots

baseSource

abstract CType? base()

The direct super class of this type (null for Obj).

bridgeSource

CBridge? bridge()

If this is a foreign function return the bridge.

commonSource

static CType common(CNamespace ns, CType[] types)

Given a list of types, compute the most specific type which they all share, or at worst return sys::Obj. This method does not take into account mixins, only extends class inheritance.

ctorsSource

CMethod[] ctors()

List of the all constructors.

derefSource

virtual CType deref()

If this is a TypeRef, return what it references

equalsSource

override Bool equals(Obj? t)

Overrides sys::Obj.equals

Equality based on signature.

fieldSource

virtual CField? field(Str name)

Lookup a field by name (null if method).

fieldsSource

CField[] fields()

List of the all defined fields (including inherited fields).

fitsSource

virtual Bool fits(CType t)

Does this type implement the specified type. If true, then this type is assignable to the specified type (although the converse is not necessarily true). All types (including mixin types) fit sys::Obj.

fitsAnySource

Bool fitsAny(CType[] types)

Return if this type fits any of the types in the specified list.

flagsSource

abstract Int flags()

Get the flags bitmask.

foreignInheritanceSource

CType? foreignInheritance()

If this TypeDef extends from a FFI class or implements any FFI mixins, then return the FFI type otherwise return null.

hasSlotSource

Bool hasSlot(Str name)

Return if this type contains a slot by the specified name.

hashSource

override Int hash()

Overrides sys::Obj.hash

Hash on signature.

inferredAsSource

virtual CType inferredAs()

If this type is being used for type inference then get the type as it should be inferred. Typically we just return this. However some FFI types such as [java]::int are never used on the stack directly and are inferred to be sys::Int.

isAbstractSource

Bool isAbstract()

Return if this Type is abstract and cannot be instantiated. This method will always return true if the type is a mixin.

isBoolSource

Bool isBool()

isClassSource

Bool isClass()

Return if this Type is a class (as opposed to enum or mixin)

isConstSource

Bool isConst()

Return if this Type is const and immutable.

isDecimalSource

Bool isDecimal()

isEnumSource

Bool isEnum()

Return if this Type is an sys::Enum

isFinalSource

Bool isFinal()

Return if this Type is final and cannot be subclassed.

isFloatSource

Bool isFloat()

isForeignSource

virtual Bool isForeign()

If this a foreign function interface type.

isFuncSource

Bool isFunc()

isGenericSource

abstract Bool isGeneric()

A generic type means that one or more of my slots contain signatures using a generic parameter (such as V or K). Fan supports three built-in generic types: List, Map, and Func. A generic instance (such as Str[]) is NOT a generic type (all of its generic parameters have been filled in). User defined generic types are not supported in Fan.

isGenericParameterSource

abstract Bool isGenericParameter()

Return if this type is a generic parameter (such as V or K) in a generic type (List, Map, or Method). Generic parameters serve as place holders for the parameterization of the generic type. Fan has a predefined set of generic parameters which are always defined in the sys pod with a one character name.

isIntSource

Bool isInt()

isInternalSource

Bool isInternal()

Is this an internally scoped class

isListSource

Bool isList()

isMapSource

Bool isMap()

isMixinSource

Bool isMixin()

Return if this Type is a mixin type and cannot be instantiated.

isNullableSource

abstract Bool isNullable()

Is this is a nullable type (marked with trailing ?)

isObjSource

Bool isObj()

isParameterizedSource

abstract Bool isParameterized()

A parameterized type is a type which has parameterized a generic type and replaced all the generic parameter types with generic argument types. The type Str[] is a parameterized type of the generic type List (V is replaced with Str). A parameterized type always has a signature which is different from the qname.

isPublicSource

Bool isPublic()

Is this a public scoped class

isRangeSource

Bool isRange()

isStrSource

Bool isStr()

isSupportedSource

virtual Bool isSupported()

Return if type is supported by the Fan type system. For example the Java FFI will correctly model a Java multi-dimensional array during compilation, however there is no Fan representation. We check for supported types during CheckErrors when accessing fields and methods.

isSyntheticSource

Bool isSynthetic()

Is this a compiler generated synthetic class

isThisSource

Bool isThis()

isTypeSource

Bool isType()

isValueSource

abstract Bool isValue()

Is this is a value type (Bool, Int, or Float and their nullables)

isValueTypeSource

static Bool isValueType(Str qname)

Static utility for value type

isVoidSource

Bool isVoid()

methodSource

virtual CMethod? method(Str name)

Lookup a method by name (null if field).

methodsSource

CMethod[] methods()

List of the all defined methods (including inherited methods).

mixinsSource

abstract CType[] mixins()

Return the mixins directly implemented by this type.

nameSource

abstract Str name()

Simple name of the type such as "Str".

nsSource

abstract CNamespace ns()

Associated namespace for this type representation

podSource

abstract CPod pod()

Parent pod which defines this type.

qnameSource

abstract Str qname()

Qualified name such as "sys:Str".

rawSource

CType raw()

If this type is a generic parameter (V, L, etc), then return the actual type for the native implementation. For example V is Obj, and L is List. This is the type we actually use when constructing a signature for the invoke opcode.

signatureSource

abstract Str signature()

This is the full signature of the type.

slotSource

virtual CSlot? slot(Str name)

Lookup a slot by name. If the slot doesn't exist then return null.

slotsSource

abstract Str:CSlot slots()

Map of the all defined slots, both fields and methods (including inherited slots).

toListOfSource

abstract CType toListOf()

Create a parameterized List of this type.

toNonNullableSource

virtual CType toNonNullable()

Get this type as a non-nullable (if nullable)

toNullableSource

abstract CType toNullable()

Get this type as a nullable type (marked with trailing ?)

toStrSource

Str toStr()

Overrides sys::Obj.toStr

Return signature