Logo Xantham

ShapeModel Type

Record fields

Record Field Description

DeclNames

Full Usage: DeclNames

Field type: Map<int, string>

Type id -> the F# type name this run declares for it - exports named first, then synthesized names for reachable anonymous shapes (hash-consing by id, §4.4). What lets a reference come out as `FsNamed` rather than an expansion.

Field type: Map<int, string>

DeclOrders

Full Usage: DeclOrders

Field type: Map<int, DeclOrder option>

Type id -> the source order its declaration sorts under: the export's own order, or for a synthesized declaration the order of the export that first reached it.

Field type: Map<int, DeclOrder option>

DeclParams

Full Usage: DeclParams

Field type: Map<int, int list>

Type id -> the type-parameter ids a declaration reads without binding, in first-use order (§4.9). An anonymous object type hoisted out of a generic scope - the `props` of `each(props: { items: T[]; render: (item: T) => U })` - binds nothing of its own, so it is declared over these and every reference applies them back.

Field type: Map<int, int list>

Decls

Full Usage: Decls

Field type: FsDecl list
Field type: FsDecl list

ExportMembers

Full Usage: ExportMembers

Field type: (int * FsExportMember) list

`Exports` members accumulated by the class/function/value passes, keyed by harvest position so `order-declarations` can assemble them in source order.

Field type: (int * FsExportMember) list

ExportTypes

Full Usage: ExportTypes

Field type: Map<int, ExportTypeIds>
Field type: Map<int, ExportTypeIds>

Harvest

Full Usage: Harvest

Field type: HarvestModel
Field type: HarvestModel

KeyVars

Full Usage: KeyVars

Field type: Map<int, KeyBinding>

Type-parameter id -> the support-package idiom its uses are written as, for the signature currently being shaped (§4.10). Scoped like `TypeVars`, and for the same reason: `K extends keyof T` binds nothing outside the signature that declared it.

Field type: Map<int, KeyBinding>

NotFollowed

Full Usage: NotFollowed

Field type: Map<int, string>
Field type: Map<int, string>

TypeVars

Full Usage: TypeVars

Field type: Map<int, string>

Type-parameter id -> the name it is in scope under, for the declaration currently being shaped. Scope lives on the model rather than in `typeRef`'s arguments because it is a property of *where* the reference is written, not of the reference: a pass binds it once around a declaration and every nested `typeRef` inherits it.

Field type: Map<int, string>

Types

Full Usage: Types

Field type: Map<int, TypeFacts>
Field type: Map<int, TypeFacts>

Type something to start searching.