Documentation ¶
Overview ¶
typegraph package defines methods for creating and interacting with the Type Graph, which represents the definitions of all types (classes, interfaces, etc) in the Serulian type system defined by the parsed SRG.
Index ¶
- Constants
- Variables
- type Annotator
- func (an Annotator) DefineAgencyComposition(typeSourceNode compilergraph.GraphNode, agentType TypeReference, ...)
- func (an Annotator) DefineAliasedType(typeSourceNode compilergraph.GraphNode, aliased TGTypeDecl)
- func (an Annotator) DefineGenericConstraint(genericSourceNode compilergraph.GraphNode, constraint TypeReference)
- func (an Annotator) DefineParentType(typeSourceNode compilergraph.GraphNode, inherits TypeReference)
- func (an Annotator) DefinePrincipalType(typeSourceNode compilergraph.GraphNode, principal TypeReference)
- func (ir Annotator) ReportError(sourceNode compilergraph.GraphNode, message string, params ...interface{})
- type BuildOption
- type Entity
- type EntityKind
- type EntityResolveOption
- type GetMemberBuilder
- type GetMemberDecorator
- type GetModuleBuilder
- type GetTypeBuilder
- type IssueReporter
- type MemberBuilder
- func (mb *MemberBuilder) Define() TGMember
- func (mb *MemberBuilder) Documentation(documentation string) *MemberBuilder
- func (mb *MemberBuilder) Name(name string) *MemberBuilder
- func (mb *MemberBuilder) SourceNode(sourceNode compilergraph.GraphNode) *MemberBuilder
- func (mb *MemberBuilder) WithGeneric(name string, documentation string, sourceNode compilergraph.GraphNode) *MemberBuilder
- func (mb *MemberBuilder) WithParameter(name string, documentation string, sourceNode compilergraph.GraphNode) *MemberBuilder
- type MemberDecorator
- func (mb *MemberDecorator) CreateReturnable(sourceNode compilergraph.GraphNode, returnType TypeReference) *MemberDecorator
- func (mb *MemberDecorator) Decorate()
- func (mb *MemberDecorator) DefineGenericConstraint(genericSourceNode compilergraph.GraphNode, constraint TypeReference)
- func (mb *MemberDecorator) DefineParameterType(parameterSourceNode compilergraph.GraphNode, parameterType TypeReference)
- func (mb *MemberDecorator) Exported(exported bool) *MemberDecorator
- func (mb *MemberDecorator) Field(field bool) *MemberDecorator
- func (mb *MemberDecorator) HasDefaultValue(hasdefault bool) *MemberDecorator
- func (mb *MemberDecorator) ImplicitlyCalled(implicit bool) *MemberDecorator
- func (mb *MemberDecorator) InvokesAsync(invokesasync bool) *MemberDecorator
- func (mb *MemberDecorator) MemberKind(memberKind MemberSignatureKind) *MemberDecorator
- func (mb *MemberDecorator) MemberType(memberType TypeReference) *MemberDecorator
- func (mb *MemberDecorator) Native(native bool) *MemberDecorator
- func (mb *MemberDecorator) Promising(promising MemberPromisingOption) *MemberDecorator
- func (mb *MemberDecorator) ReadOnly(readonly bool) *MemberDecorator
- func (mb *MemberDecorator) SignatureType(signatureType TypeReference) *MemberDecorator
- func (mb *MemberDecorator) SkipOperatorChecking(skip bool) *MemberDecorator
- func (mb *MemberDecorator) Static(static bool) *MemberDecorator
- func (mb *MemberDecorator) WithTag(name string, value string) *MemberDecorator
- type MemberPromisingOption
- type MemberResolutionKind
- type MemberSignatureKind
- type NodeType
- type Result
- type SubTypingException
- type TGAgentReference
- type TGEntity
- type TGGeneric
- func (tn TGGeneric) AsType() TGTypeDecl
- func (tn TGGeneric) Constraint() TypeReference
- func (tn TGGeneric) DescriptiveName() string
- func (tn TGGeneric) GetTypeReference() TypeReference
- func (tn TGGeneric) Name() string
- func (tn TGGeneric) Node() compilergraph.GraphNode
- func (tn TGGeneric) Title() string
- type TGMember
- func (tn TGMember) AsType() (TGTypeDecl, bool)
- func (tn TGMember) AssignableType() TypeReference
- func (tn TGMember) BaseMember() (TGMember, bool)
- func (tn TGMember) BaseMemberSource() (TypeReference, bool)
- func (tn TGMember) ChildName() string
- func (tn TGMember) Code() (compilercommon.CodeSummary, bool)
- func (tn TGMember) ConstructorType() (TypeReference, bool)
- func (tn TGMember) DeclaredType() TypeReference
- func (tn TGMember) Documentation() (string, bool)
- func (tn TGMember) EntityPath() []Entity
- func (tn TGMember) Generics() []TGGeneric
- func (tn TGMember) GetTag(tag TypeMemberTag) (string, bool)
- func (tn TGMember) GetTagOrDefault(tag TypeMemberTag, defaultValue string) string
- func (tn TGMember) HasBaseMember() bool
- func (tn TGMember) HasDefaultValue() bool
- func (tn TGMember) HasGenerics() bool
- func (tn TGMember) InvokesAsync() bool
- func (tn TGMember) IsAccessibleTo(modulePath compilercommon.InputSource) bool
- func (tn TGMember) IsExported() bool
- func (tn TGMember) IsField() bool
- func (tn TGMember) IsImplicitlyCalled() bool
- func (tn TGMember) IsNative() bool
- func (tn TGMember) IsOperator() bool
- func (tn TGMember) IsPromising() MemberPromisingOption
- func (tn TGMember) IsReadOnly() bool
- func (tn TGMember) IsRequired() bool
- func (tn TGMember) IsRequiredField() bool
- func (tn TGMember) IsStatic() bool
- func (tn TGMember) IsType() bool
- func (tn TGMember) LookupGeneric(name string) (TGGeneric, bool)
- func (tn TGMember) MemberType() TypeReference
- func (tn TGMember) Name() string
- func (tn TGMember) Node() compilergraph.GraphNode
- func (tn TGMember) ParameterTypes() []TypeReference
- func (tn TGMember) Parameters() []TGParameter
- func (tn TGMember) Parent() TGTypeOrModule
- func (tn TGMember) ParentType() (TGTypeDecl, bool)
- func (tn TGMember) ReturnType() (TypeReference, bool)
- func (tn TGMember) SerializableName() string
- func (tn TGMember) ShadowsMembers() []TGMember
- func (tn TGMember) Signature() *proto.MemberSig
- func (tn TGMember) SourceGraphId() string
- func (tn TGMember) SourceNodeId() (compilergraph.GraphNodeId, bool)
- func (tn TGMember) SourceRange() (compilercommon.SourceRange, bool)
- func (tn TGMember) SourceRanges() []compilercommon.SourceRange
- func (tn TGMember) Title() string
- func (tn TGMember) TypeGraph() *TypeGraph
- type TGModule
- func (tn TGModule) AsType() (TGTypeDecl, bool)
- func (tn TGModule) EntityPath() []Entity
- func (tn TGModule) GetMember(name string) (TGMember, bool)
- func (tn TGModule) GetMemberOrOperator(name string) (TGMember, bool)
- func (tn TGModule) IsType() bool
- func (tn TGModule) Members() []TGMember
- func (tn TGModule) MembersAndOperators() []TGMember
- func (tn TGModule) Name() string
- func (tn TGModule) Node() compilergraph.GraphNode
- func (tn TGModule) PackagePath() string
- func (tn TGModule) ParentModule() TGModule
- func (tn TGModule) Path() compilercommon.InputSource
- func (tn TGModule) SourceGraphId() string
- func (tn TGModule) Title() string
- func (tn TGModule) Types() []TGTypeDecl
- type TGParameter
- type TGTypeDecl
- func (tn TGTypeDecl) AliasedType() (TGTypeDecl, bool)
- func (tn TGTypeDecl) AsGeneric() (TGGeneric, bool)
- func (tn TGTypeDecl) AsType() (TGTypeDecl, bool)
- func (tn TGTypeDecl) Attributes() []TypeAttribute
- func (tn TGTypeDecl) Code() (compilercommon.CodeSummary, bool)
- func (tn TGTypeDecl) ComposedAgents() []TGAgentReference
- func (tn TGTypeDecl) ComposesAgent(agentTypeRef TypeReference) bool
- func (tn TGTypeDecl) ContainingMember() (TGMember, bool)
- func (tn TGTypeDecl) ContainingType() (TGTypeDecl, bool)
- func (tn TGTypeDecl) DescriptiveName() string
- func (tn TGTypeDecl) Documentation() (string, bool)
- func (tn TGTypeDecl) EntityPath() []Entity
- func (tn TGTypeDecl) Fields() []TGMember
- func (tn TGTypeDecl) FullName() string
- func (tn TGTypeDecl) Generics() []TGGeneric
- func (tn TGTypeDecl) GetMember(name string) (TGMember, bool)
- func (tn TGTypeDecl) GetMemberOrOperator(name string) (TGMember, bool)
- func (tn TGTypeDecl) GetOperator(name string) (TGMember, bool)
- func (tn TGTypeDecl) GetStaticMember(name string) (TGMember, bool)
- func (tn TGTypeDecl) GetTypeReference() TypeReference
- func (tn TGTypeDecl) GlobalAlias() (string, bool)
- func (tn TGTypeDecl) GlobalUniqueId() string
- func (tn TGTypeDecl) HasAttribute(attribute TypeAttribute) bool
- func (tn TGTypeDecl) HasGenerics() bool
- func (tn TGTypeDecl) IsAccessibleTo(modulePath compilercommon.InputSource) bool
- func (tn TGTypeDecl) IsClass() bool
- func (tn TGTypeDecl) IsExported() bool
- func (tn TGTypeDecl) IsField() bool
- func (tn TGTypeDecl) IsImplicitlyCalled() bool
- func (tn TGTypeDecl) IsPromising() MemberPromisingOption
- func (tn TGTypeDecl) IsReadOnly() bool
- func (tn TGTypeDecl) IsStatic() bool
- func (tn TGTypeDecl) IsType() bool
- func (tn TGTypeDecl) LookupGeneric(name string) (TGGeneric, bool)
- func (tn TGTypeDecl) Members() []TGMember
- func (tn TGTypeDecl) MembersAndOperators() []TGMember
- func (tn TGTypeDecl) Name() string
- func (tn TGTypeDecl) Node() compilergraph.GraphNode
- func (tn TGTypeDecl) NonFieldMembers() []TGMember
- func (tn TGTypeDecl) OverallContainerType() (TGTypeDecl, bool)
- func (tn TGTypeDecl) PackagedName() string
- func (tn TGTypeDecl) Parent() TGTypeOrModule
- func (tn TGTypeDecl) ParentModule() TGModule
- func (tn TGTypeDecl) ParentTypes() []TypeReference
- func (tn TGTypeDecl) PrincipalType() (TypeReference, bool)
- func (tn TGTypeDecl) RequiredFields() []TGMember
- func (tn TGTypeDecl) SourceGraphId() string
- func (tn TGTypeDecl) SourceNodeId() (compilergraph.GraphNodeId, bool)
- func (tn TGTypeDecl) SourceRange() (compilercommon.SourceRange, bool)
- func (tn TGTypeDecl) SourceRanges() []compilercommon.SourceRange
- func (tn TGTypeDecl) Title() string
- func (tn TGTypeDecl) TypeKind() TypeKind
- type TGTypeOrMember
- type TGTypeOrModule
- type TestGeneric
- type TestMember
- type TestModule
- type TestParam
- type TestType
- type TypeAttribute
- type TypeGraph
- func (t *TypeGraph) AnyTypeReference() TypeReference
- func (g *TypeGraph) AsyncMembers() []TGMember
- func (t *TypeGraph) AwaitableType() TGTypeDecl
- func (t *TypeGraph) AwaitableTypeReference(generic TypeReference) TypeReference
- func (t *TypeGraph) BoolType() TGTypeDecl
- func (t *TypeGraph) BoolTypeReference() TypeReference
- func (t *TypeGraph) DeserializieTypeRef(value string) TypeReference
- func (t *TypeGraph) ErrorType() TGTypeDecl
- func (t *TypeGraph) ErrorTypeReference() TypeReference
- func (t *TypeGraph) FloatType() TGTypeDecl
- func (g *TypeGraph) ForEachModule(handler moduleHandler)
- func (g *TypeGraph) ForEachTypeDecl(typeKinds []NodeType, handler typeDeclHandler)
- func (t *TypeGraph) FunctionType() TGTypeDecl
- func (t *TypeGraph) FunctionTypeReference(generic TypeReference) TypeReference
- func (tg *TypeGraph) GetFilteredJSONForm(pathFilters []string, skipNodeKinds []compilergraph.TaggedValue) string
- func (tg *TypeGraph) GetJSONForm() string
- func (g *TypeGraph) GetMemberForSourceNode(node compilergraph.GraphNode) (TGMember, bool)
- func (g *TypeGraph) GetNode(nodeID compilergraph.GraphNodeId) compilergraph.GraphNode
- func (g *TypeGraph) GetOperatorDefinition(operatorName string) (operatorDefinition, bool)
- func (g *TypeGraph) GetTypeDecls(typeKinds ...NodeType) []TGTypeDecl
- func (g *TypeGraph) GetTypeForSourceNode(node compilergraph.GraphNode) (TGTypeDecl, bool)
- func (g *TypeGraph) GetTypeOrMember(nodeId compilergraph.GraphNodeId) TGTypeOrMember
- func (g *TypeGraph) GetTypeOrMemberForNode(node compilergraph.GraphNode) (TGTypeOrMember, bool)
- func (g *TypeGraph) GetTypeOrMemberForSourceNode(node compilergraph.GraphNode) (TGTypeOrMember, bool)
- func (g *TypeGraph) GetTypeOrModuleForSourceNode(sourceNode compilergraph.GraphNode) (TGTypeOrModule, bool)
- func (t *TypeGraph) IntStreamType() TGTypeDecl
- func (t *TypeGraph) IntType() TGTypeDecl
- func (t *TypeGraph) IntTypeReference() TypeReference
- func (g *TypeGraph) IntersectTypes(first []TypeReference, second []TypeReference) []TypeReference
- func (g *TypeGraph) LookupGlobalAliasedType(alias string) (TGTypeDecl, bool)
- func (g *TypeGraph) LookupModule(source compilercommon.InputSource) (TGModule, bool)
- func (g *TypeGraph) LookupModuleMember(memberName string, module compilercommon.InputSource) (TGMember, bool)
- func (g *TypeGraph) LookupReturnType(sourceNode compilergraph.GraphNode) (TypeReference, bool)
- func (g *TypeGraph) LookupType(typeName string, module compilercommon.InputSource) (TGTypeDecl, bool)
- func (g *TypeGraph) LookupTypeOrMember(name string, module compilercommon.InputSource) (TGTypeOrMember, bool)
- func (t *TypeGraph) MappingType() TGTypeDecl
- func (t *TypeGraph) MappingTypeReference(value TypeReference) TypeReference
- func (g *TypeGraph) Members() []TGMember
- func (g *TypeGraph) Modules() []TGModule
- func (g *TypeGraph) ModulesWithMembers() []TGModule
- func (t *TypeGraph) NativeBoolTypeReference() TypeReference
- func (t *TypeGraph) NewInstanceTypeReference(typeDecl TGTypeDecl) TypeReference
- func (t *TypeGraph) NewTypeReference(typeDecl TGTypeDecl, generics ...TypeReference) TypeReference
- func (t *TypeGraph) NullTypeReference() TypeReference
- func (t *TypeGraph) ReleasableType() TGTypeDecl
- func (t *TypeGraph) ReleasableTypeReference() TypeReference
- func (g *TypeGraph) ResolveEntityByPath(entityPath []Entity, option EntityResolveOption) (TGEntity, bool)
- func (g *TypeGraph) ResolveTypeOrMemberUnderPackage(name string, packageInfo packageloader.PackageInfo) (TGTypeOrMember, bool)
- func (g *TypeGraph) ResolveTypeUnderPackage(name string, packageInfo packageloader.PackageInfo) (TGTypeDecl, bool)
- func (t *TypeGraph) SerializationJSONType() TGTypeDecl
- func (t *TypeGraph) SerializationParserType() TGTypeDecl
- func (t *TypeGraph) SerializationStringifier() TGTypeDecl
- func (t *TypeGraph) SliceType() TGTypeDecl
- func (t *TypeGraph) SliceTypeReference(generic TypeReference) TypeReference
- func (g *TypeGraph) SourceRangeOf(node compilergraph.GraphNode) (compilercommon.SourceRange, bool)
- func (g *TypeGraph) SourceRangesOf(node compilergraph.GraphNode) []compilercommon.SourceRange
- func (t *TypeGraph) StreamType() TGTypeDecl
- func (t *TypeGraph) StreamTypeReference(generic TypeReference) TypeReference
- func (t *TypeGraph) StreamableType() TGTypeDecl
- func (t *TypeGraph) StringType() TGTypeDecl
- func (t *TypeGraph) StringTypeReference() TypeReference
- func (t *TypeGraph) StringableType() TGTypeDecl
- func (t *TypeGraph) StringableTypeReference() TypeReference
- func (t *TypeGraph) StructTypeReference() TypeReference
- func (g *TypeGraph) TypeAliases() []TGTypeDecl
- func (g *TypeGraph) TypeDecls() []TGTypeDecl
- func (g *TypeGraph) TypeOrMembersUnderPackage(packageInfo packageloader.PackageInfo) []TGTypeOrMember
- func (t *TypeGraph) VoidTypeReference() TypeReference
- type TypeGraphConstructor
- type TypeKind
- type TypeLookup
- type TypeMemberTag
- type TypeReference
- func (tr TypeReference) AdoptReferenceInto(graph *TypeGraph, lookup TypeLookup) (TypeReference, error)
- func (tr TypeReference) AsNonNullable() TypeReference
- func (tr TypeReference) AsNullable() TypeReference
- func (tr TypeReference) AsValueOfStream() TypeReference
- func (tr TypeReference) Build(value string) interface{}
- func (tr TypeReference) CheckCastableFrom(source TypeReference) error
- func (tr TypeReference) CheckConcreteSubtypeOf(otherType TGTypeDecl) ([]TypeReference, error)
- func (tr TypeReference) CheckNominalConvertable(other TypeReference) error
- func (tr TypeReference) CheckStructuralSubtypeOf(other TypeReference) bool
- func (tr TypeReference) CheckSubTypeOf(other TypeReference) error
- func (tr TypeReference) CheckSubTypeOfWithExceptions(other TypeReference, exception SubTypingException) (error, SubTypingException)
- func (tr TypeReference) ContainsType(typeDecl TGTypeDecl) bool
- func (tr TypeReference) EnsureStructural() error
- func (tr TypeReference) EqualsOrAny(other TypeReference) bool
- func (tr TypeReference) ExtractTypeDiff(otherRef TypeReference, diffType TGTypeDecl) (TypeReference, bool)
- func (tr TypeReference) GenericCount() int
- func (tr TypeReference) Generics() []TypeReference
- func (tr TypeReference) HasGenerics() bool
- func (tr TypeReference) HasParameters() bool
- func (tr TypeReference) HasReferredType(typeDecl TGTypeDecl) bool
- func (tr TypeReference) Intersect(other TypeReference) TypeReference
- func (tr TypeReference) IsAny() bool
- func (tr TypeReference) IsDirectReferenceTo(typeDecl TGTypeDecl) bool
- func (tr TypeReference) IsLocalRef() bool
- func (tr TypeReference) IsNominal() bool
- func (tr TypeReference) IsNominalOrStruct() bool
- func (tr TypeReference) IsNominalWrapOf(other TypeReference) bool
- func (tr TypeReference) IsNormal() bool
- func (tr TypeReference) IsNull() bool
- func (tr TypeReference) IsNullable() bool
- func (tr TypeReference) IsRefToAgent() bool
- func (tr TypeReference) IsRefToClass() bool
- func (tr TypeReference) IsRefToImplicitInterface() bool
- func (tr TypeReference) IsRefToStruct() bool
- func (tr TypeReference) IsStruct() bool
- func (tr TypeReference) IsStructurual() bool
- func (tr TypeReference) IsVoid() bool
- func (tr TypeReference) Localize(generics ...TGGeneric) TypeReference
- func (tr TypeReference) Name() string
- func (tr TypeReference) NominalDataType() TypeReference
- func (tr TypeReference) NominalRootType() TypeReference
- func (tr TypeReference) NullValueAllowed() bool
- func (tr TypeReference) PackageQualifiedString() string
- func (tr TypeReference) ParameterCount() int
- func (tr TypeReference) Parameters() []TypeReference
- func (tr TypeReference) ReferredType() TGTypeDecl
- func (tr TypeReference) ReplaceType(typeDecl TGTypeDecl, replacement TypeReference) TypeReference
- func (tr TypeReference) ResolveAccessibleMember(memberName string, modulePath compilercommon.InputSource, ...) (TGMember, error)
- func (tr TypeReference) ResolveMember(memberName string, kind MemberResolutionKind) (TGMember, bool)
- func (tr TypeReference) StreamYieldType() (TypeReference, error)
- func (tr TypeReference) StreamYieldTypeOrAny() TypeReference
- func (tr TypeReference) String() string
- func (tr TypeReference) TitledString() string
- func (tr TypeReference) TransformUnder(other TypeReference) TypeReference
- func (tr TypeReference) Value() string
- func (tr TypeReference) Verify() error
- func (tr TypeReference) WithGeneric(generic TypeReference) TypeReference
- func (tr TypeReference) WithParameter(parameter TypeReference) TypeReference
Constants ¶
const ( // Connects a node to its error node. NodePredicateError = "node-error" // Connects a node to the source node in the source graph (SRG, IRG, etc). NodePredicateSource = "source-node" // Decorates a type or type member node with the path of its source module. NodePredicateModulePath = "source-module" // Connects a type or type member with its documentation. NodePredicateDocumentation = "documentation" // The message for the parsing error. NodePredicateErrorMessage = "error-message" // Connects a type or module to a member (function, var, etc). NodePredicateMember = "node-member" // // NodeTypeModule // NodePredicateModuleName = "module-name" // Connects a type declaration to its parent module. NodePredicateTypeModule = "declaration-module" // Marks a type with its name. NodePredicateTypeName = "type-name" // Marks a type with its global ID. NodePredicateTypeGlobalId = "type-globalid" // Marks a type as being publicly exported from its package. NodePredicateTypeExported = "type-exported" // Connects a type declaration to an operator (function, var, etc). NodePredicateTypeOperator = "declaration-operator" // Connects a type declaration to a generic. NodePredicateTypeGeneric = "declaration-generic" // Marks a type with its global alias. NodePredicateTypeGlobalAlias = "type-alias" // Connects a type declaration to a custom attribute. NodePredicateTypeAttribute = "type-attribute" // Marks a type with a type reference to a parent type. NodePredicateParentType = "parent-type" // Marks a class or agent with a reference to an agent it composes. NodePredicateComposedAgent = "composed-agent" // Marks an agent with a type reference to its principal type. NodePredicatePrincipalType = "principal-type" // Connects a type alias to the type it is aliasing. NodePredicateAliasedType = "aliased-type" // Marks an agent reference with the type of the agent being composed. NodePredicateAgentType = "agent-type" // Decorates an agent reference with the name that will be used when composed into // the type. NodePredicateAgentCompositionName = "agent-composition-name" // Decorates a generic definition to its name. NodePredicateGenericName = "generic-name" // Connects a generic definition to its subtype reference (usually 'any'). NodePredicateGenericSubtype = "generic-subtype" // Decorates a generic definition with its index. NodePredicateGenericIndex = "generic-index" // Decorates a generic definition with its kind (type generic or member generic) NodePredicateGenericKind = "generic-kind" // Marks a member with its name. NodePredicateMemberName = "member-name" // Marks a member as being read-only. NodePredicateMemberReadOnly = "member-readonly" // Marks a member as being "static", i.e. accessed under the type, rather than instances. NodePredicateMemberStatic = "member-static" // Marks a member with its resolved type. NodePredicateMemberType = "member-resolved-type" // Marks a member with a generic. NodePredicateMemberGeneric = "member-generic" // Marks a member with a parameter. NodePredicateMemberParameter = "member-parameter" // Marks a member with its signature. NodePredicateMemberSignature = "member-signature" // Marks a member with the fact that it is exported. NodePredicateMemberExported = "member-exported" // Connects a member to a returnable definition, itself connected to an SRG node. NodePredicateReturnable = "member-returnable" // Decorates a member as being a field holding data in the type. NodePredicateMemberField = "member-field" // Connects a member to the member in the parent type from which it was cloned. NodePredicateMemberBaseMember = "member-base-member" // Decorates a member with the type from which it was aliased. NodePredicateMemberBaseSource = "member-base-source" // Decorates a member as shadowing another member. NodePredicateMemberShadows = "member-shadows" // Decorates a member returning a promise of the member or return type. NodePredicateMemberPromising = "member-promising" // Decorates a member as being automatically initialized with a default value. NodePredicateMemberHasDefaultValue = "member-hasdefault" // Decorates a member as being implicitly called on access or assignment. Used for // properties that are backed by functions. NodePredicateMemberImplicitlyCalled = "member-implicitly-called" // Decorates a member as being executed under an asynchronously invoked worker. NodePredicateMemberInvokesAsync = "member-invokes-async" // Connects a member to a member tag. NodePredicateMemberTag = "member-tag" // Marks an operator with its searchable name. NodePredicateOperatorName = "operator-name" // Marks an operator as being a call to a native (ES) operator. NodePredicateOperatorNative = "operator-native" // Decorates a parameter with its name. NodePredicateParameterName = "parameter-name" // Decorates a parameter with its documentation. NodePredicateParameterDocumentation = "parameter-documentation" // Decorates a parameter with its type. NodePredicateParameterType = "parameter-type" // Decorates a member tag with its name. NodePredicateMemberTagName = "membertag-name" // Decorates a member tag with its value. NodePredicateMemberTagValue = "membertag-value" // Decorates an attribute with its name. NodePredicateAttributeName = "attribute-name" // Marks a returnable with its expected return type. NodePredicateReturnType = "return-type" )
const ASSIGNABLE_OP_VALUE = "value"
Variables ¶
var TYPE_NODE_TYPES = []NodeType{NodeTypeClass, NodeTypeInterface, NodeTypeExternalInterface, NodeTypeNominalType, NodeTypeStruct, NodeTypeAgent}
Note: The list below does not contain NodeTypeAlias, which is a special handled case in LookupType.
var TYPE_NODE_TYPES_TAGGED = []compilergraph.TaggedValue{NodeTypeClass, NodeTypeInterface, NodeTypeExternalInterface, NodeTypeNominalType, NodeTypeStruct, NodeTypeAgent, NodeTypeAlias}
Functions ¶
This section is empty.
Types ¶
type Annotator ¶
type Annotator struct {
// contains filtered or unexported fields
}
Annotator defines a helper type for annotating various constraints in the type graph such as generic constraints, inheritance, etc.
func (Annotator) DefineAgencyComposition ¶
func (an Annotator) DefineAgencyComposition(typeSourceNode compilergraph.GraphNode, agentType TypeReference, compositionName string)
DefineAgencyComposition defines that the type being constructed composes an agent of the given type, with the given name. Agency composition is a type-safe form of composition with automatic back reference to the composing type within the agent.
func (Annotator) DefineAliasedType ¶
func (an Annotator) DefineAliasedType(typeSourceNode compilergraph.GraphNode, aliased TGTypeDecl)
DefineAliasedType defines that the given type aliases the other type. Only applies to aliases.
func (Annotator) DefineGenericConstraint ¶
func (an Annotator) DefineGenericConstraint(genericSourceNode compilergraph.GraphNode, constraint TypeReference)
DefineGenericConstraint defines the constraint on a type or type member generic to be that specified.
func (Annotator) DefineParentType ¶
func (an Annotator) DefineParentType(typeSourceNode compilergraph.GraphNode, inherits TypeReference)
DefineParentType defines that the given type inherits from the given parent type ref. For external interfaces, the parent is inherited and for nominal types, it describes conversion. Inheritance should only be used by legacy code and never for SRG-based types: Agency composition should be used instead.
func (Annotator) DefinePrincipalType ¶
func (an Annotator) DefinePrincipalType(typeSourceNode compilergraph.GraphNode, principal TypeReference)
DefinePrincipalType defines the principal type that this agent accepts.
func (Annotator) ReportError ¶
func (ir Annotator) ReportError(sourceNode compilergraph.GraphNode, message string, params ...interface{})
ReportError adds an error to the type graph, starting from the given source node.
type BuildOption ¶ added in v0.2.0
type BuildOption int
BuildOption is an option for building of the type graph.
const ( // FullBuild indicates that basic types should be fully validated and that the type graph // should be frozen once complete. FullBuild BuildOption = iota // BuildForTesting will skip basic type validation and freezing. Should only be used for testing. BuildForTesting )
type Entity ¶ added in v0.2.0
type Entity struct { // Kind is it the kind of the entity. Kind EntityKind // NameOrPath represents the name or path of the entity. If a module, // this is the module's path. If a type, this is the type's name. // If a member, this is the member's *child name*. NameOrPath string // SourceGraphId is the ID of the source graph for the type node. If none, // this will be `typegraph`. SourceGraphId string }
Entity represents an entity: module, type, or member.
type EntityKind ¶ added in v0.2.0
type EntityKind string
EntityKind defines the various kinds of entities in which types or members can be found
const ( // EntityKindModule indicates the entity is a module. EntityKindModule EntityKind = "module" // EntityKindType indicates the entity is a type. EntityKindType EntityKind = "type" // EntityKindMember indicates the entity is a member. EntityKindMember EntityKind = "member" )
type EntityResolveOption ¶ added in v0.2.0
type EntityResolveOption int
EntityResolveOption defines the various options for ResolveEntityByPath.
const ( // EntityResolveModulesExactly indicates that module entities will be resolved // as an exact match. EntityResolveModulesExactly EntityResolveOption = iota // EntityResolveModulesAsPackages indicates that module entities will be resolved // as *packages*, searching all modules with the matching package path. EntityResolveModulesAsPackages )
type GetMemberBuilder ¶
type GetMemberBuilder func(moduleOrTypeSourceNode compilergraph.GraphNode, isOperator bool) *MemberBuilder
type GetMemberDecorator ¶
type GetMemberDecorator func(memberSourceNode compilergraph.GraphNode) *MemberDecorator
type GetModuleBuilder ¶
type GetModuleBuilder func() *moduleBuilder
type GetTypeBuilder ¶
type GetTypeBuilder func(moduleSourceNode compilergraph.GraphNode) *typeBuilder
type IssueReporter ¶
type IssueReporter interface {
ReportError(sourceNode compilergraph.GraphNode, message string, params ...interface{})
}
IssueReporter defines a helper type for reporting issues on source nodes translated into the type graph.
type MemberBuilder ¶
type MemberBuilder struct {
// contains filtered or unexported fields
}
MemberBuilder defines a helper type for easy construction of module and type members.
func (*MemberBuilder) Define ¶
func (mb *MemberBuilder) Define() TGMember
Define defines the member under the type or module in the type graph.
func (*MemberBuilder) Documentation ¶
func (mb *MemberBuilder) Documentation(documentation string) *MemberBuilder
Documentation sets the documentation of the member.
func (*MemberBuilder) Name ¶
func (mb *MemberBuilder) Name(name string) *MemberBuilder
Name sets the name of the member.
func (*MemberBuilder) SourceNode ¶
func (mb *MemberBuilder) SourceNode(sourceNode compilergraph.GraphNode) *MemberBuilder
SourceNode sets the source node for the member in the source graph.
func (*MemberBuilder) WithGeneric ¶
func (mb *MemberBuilder) WithGeneric(name string, documentation string, sourceNode compilergraph.GraphNode) *MemberBuilder
WithGeneric adds a generic to this member.
func (*MemberBuilder) WithParameter ¶
func (mb *MemberBuilder) WithParameter(name string, documentation string, sourceNode compilergraph.GraphNode) *MemberBuilder
WithParameter adds a parameter to this member.
type MemberDecorator ¶
type MemberDecorator struct {
// contains filtered or unexported fields
}
MemberDecorator defines a helper type for easy annotation of module and type members's dependent information.
func (*MemberDecorator) CreateReturnable ¶
func (mb *MemberDecorator) CreateReturnable(sourceNode compilergraph.GraphNode, returnType TypeReference) *MemberDecorator
CreateReturnable adds a returnable definition to the type graph, indicating that the given source node returns a value of the given type.
func (*MemberDecorator) Decorate ¶
func (mb *MemberDecorator) Decorate()
Decorate completes the decoration of the member.
func (*MemberDecorator) DefineGenericConstraint ¶
func (mb *MemberDecorator) DefineGenericConstraint(genericSourceNode compilergraph.GraphNode, constraint TypeReference)
DefineGenericConstraint defines the constraint on the type member generic to be that specified.
func (*MemberDecorator) DefineParameterType ¶
func (mb *MemberDecorator) DefineParameterType(parameterSourceNode compilergraph.GraphNode, parameterType TypeReference)
DefineParameterType defines the type of the parameter specified.
func (*MemberDecorator) Exported ¶
func (mb *MemberDecorator) Exported(exported bool) *MemberDecorator
Exported sets whether the member is exported publicly.
func (*MemberDecorator) Field ¶
func (mb *MemberDecorator) Field(field bool) *MemberDecorator
Field sets whether the member is a field.
func (*MemberDecorator) HasDefaultValue ¶
func (mb *MemberDecorator) HasDefaultValue(hasdefault bool) *MemberDecorator
HasDefaultValue sets whether the member has a default value.
func (*MemberDecorator) ImplicitlyCalled ¶
func (mb *MemberDecorator) ImplicitlyCalled(implicit bool) *MemberDecorator
ImplicitlyCalled sets whether the member is implicitly called on access or assignment.
func (*MemberDecorator) InvokesAsync ¶
func (mb *MemberDecorator) InvokesAsync(invokesasync bool) *MemberDecorator
InvokesAsync sets whether the member invokes asynchronously.
func (*MemberDecorator) MemberKind ¶
func (mb *MemberDecorator) MemberKind(memberKind MemberSignatureKind) *MemberDecorator
MemberKind sets the kind of the member. Used for signature calculation.
func (*MemberDecorator) MemberType ¶
func (mb *MemberDecorator) MemberType(memberType TypeReference) *MemberDecorator
MemberType sets the type of the member, as well as the signature type. Call SignatureType to override.
func (*MemberDecorator) Native ¶
func (mb *MemberDecorator) Native(native bool) *MemberDecorator
Native sets whether the member is native.
func (*MemberDecorator) Promising ¶
func (mb *MemberDecorator) Promising(promising MemberPromisingOption) *MemberDecorator
Promising sets whether the member is promising.
func (*MemberDecorator) ReadOnly ¶
func (mb *MemberDecorator) ReadOnly(readonly bool) *MemberDecorator
ReadOnly sets whether the member is read only.
func (*MemberDecorator) SignatureType ¶
func (mb *MemberDecorator) SignatureType(signatureType TypeReference) *MemberDecorator
SignatureType sets the type of the member for interface signature calculation.
func (*MemberDecorator) SkipOperatorChecking ¶
func (mb *MemberDecorator) SkipOperatorChecking(skip bool) *MemberDecorator
SkipOperatorChecking sets whether to skip operator checking for native operators.
func (*MemberDecorator) Static ¶
func (mb *MemberDecorator) Static(static bool) *MemberDecorator
Static sets whether the member is static.
func (*MemberDecorator) WithTag ¶
func (mb *MemberDecorator) WithTag(name string, value string) *MemberDecorator
WithTag adds a tag onto the member.
type MemberPromisingOption ¶
type MemberPromisingOption int
MemberPromisingOption defines the various states of promising for a member.
const ( // MemberNotPromising indicates the member does not return a promise. MemberNotPromising MemberPromisingOption = iota // MemberPromisingDynamic indicates that the member *may* return a promise, based // on its implementation. This will typically only apply to members generated from // source. MemberPromisingDynamic // MemberPromising indicates that the member always returns a promise. MemberPromising )
type MemberResolutionKind ¶
type MemberResolutionKind int
const ( MemberResolutionOperator MemberResolutionKind = iota MemberResolutionStatic MemberResolutionInstance MemberResolutionInstanceOrStatic )
func (MemberResolutionKind) Title ¶
func (mrk MemberResolutionKind) Title() string
Title returns a human-readable title for the kind of resolution occurring.
type MemberSignatureKind ¶
type MemberSignatureKind int
MemberSignatureKind defines the various kinds of members, for calculating signatures for interface comparisons.
const ( CustomMemberSignature MemberSignatureKind = iota ConstructorMemberSignature FunctionMemberSignature PropertyMemberSignature OperatorMemberSignature FieldMemberSignature NativeConstructorMemberSignature NativeFunctionMemberSignature NativeOperatorMemberSignature NativePropertyMemberSignature )
type NodeType ¶
type NodeType int
NodeType identifies the type of type graph node.
const ( // Top-level NodeTypeError NodeType = iota // error occurred; value is text of error NodeTypeClass // A class NodeTypeInterface // An implicitly-defined interface NodeTypeExternalInterface // An externally defined interface NodeTypeNominalType // A nominal type NodeTypeStruct // A structural type NodeTypeAgent // An agent type NodeTypeModule // A module NodeTypeAlias // An alias pointing to a type // Member-level NodeTypeMember // A member of a type or module. NodeTypeOperator // An operator defined on a type. // Member parameters. NodeTypeParameter // A parameter under a member. // Member tags. NodeTypeMemberTag // Body-level NodeTypeReturnable // A returnable member or property getter. // Generics. NodeTypeGeneric // A defined generic on a type or type member. // Agents. NodeTypeAgentReference // A reference to an agent composed into a class/agent. // Custom attribute. NodeTypeAttribute // An issue reported by a source graph. NodeTypeReportedIssue // NodeType is a tagged type. NodeTypeTagged )
type Result ¶
type Result struct { Status bool // Whether the construction succeeded. Warnings []compilercommon.SourceWarning // Any warnings encountered during construction. Errors []compilercommon.SourceError // Any errors encountered during construction. Graph *TypeGraph // The constructed type graph. }
Result represents the results of building a type graph.
func BuildTypeGraph ¶
func BuildTypeGraph(graph compilergraph.SerulianGraph, constructors ...TypeGraphConstructor) (*Result, error)
BuildTypeGraph returns a new TypeGraph that is populated from the given constructors.
func BuildTypeGraphWithOption ¶ added in v0.0.2
func BuildTypeGraphWithOption(graph compilergraph.SerulianGraph, buildOption BuildOption, cancelationHandle compilerutil.CancelationHandle, constructors ...TypeGraphConstructor) (*Result, error)
BuildTypeGraphWithOption returns a new TypeGraph that is populated from the given constructors.
type SubTypingException ¶
type SubTypingException int
SubTypingException defines the various exceptions allowed on CheckSubTypeOf
const ( // NoSubTypingExceptions indicates that all the normal subtyping rules apply. NoSubTypingExceptions SubTypingException = iota // AllowNominalWrappedForData indicates that a nominally deriving type can be used // in place of its data type. AllowNominalWrappedForData )
type TGAgentReference ¶
type TGAgentReference struct { compilergraph.GraphNode // contains filtered or unexported fields }
TGAgentReference represents a reference to an agent composed into another type.
func (TGAgentReference) AgentType ¶
func (tn TGAgentReference) AgentType() TypeReference
AgentType returns the type of agent being composed.
func (TGAgentReference) CompositionName ¶
func (tn TGAgentReference) CompositionName() string
CompositionName returns the name of the agent when composed into the parent type.
type TGEntity ¶ added in v0.2.0
type TGEntity interface { Name() string Node() compilergraph.GraphNode IsType() bool AsType() (TGTypeDecl, bool) EntityPath() []Entity }
TGEntity represents any form of entity: module, member or type.
type TGGeneric ¶
type TGGeneric struct { compilergraph.GraphNode // contains filtered or unexported fields }
TGGeneric represents a generic in the type graph.
func (TGGeneric) AsType ¶
func (tn TGGeneric) AsType() TGTypeDecl
AsType returns the generic as a TGTypeDecl.
func (TGGeneric) Constraint ¶
func (tn TGGeneric) Constraint() TypeReference
Constraint returns the type constraint on this generic.
func (TGGeneric) DescriptiveName ¶
DescriptiveName returns a nice human-readable name for the generic.
func (TGGeneric) GetTypeReference ¶ added in v0.2.0
func (tn TGGeneric) GetTypeReference() TypeReference
GetTypeReference returns a new type reference to this generic.
func (TGGeneric) Node ¶
func (tn TGGeneric) Node() compilergraph.GraphNode
Node returns the underlying node in this declaration.
type TGMember ¶
type TGMember struct { compilergraph.GraphNode // contains filtered or unexported fields }
TGMember represents a type or module member.
func (TGMember) AsType ¶ added in v0.2.0
func (tn TGMember) AsType() (TGTypeDecl, bool)
AsType returns whether this is a type (always false).
func (TGMember) AssignableType ¶
func (tn TGMember) AssignableType() TypeReference
AssignableType returns the type of values that can be assigned to this member. Returns void for readonly members.
func (TGMember) BaseMember ¶
BaseMember returns the member in a parent type from which this member was cloned/inherited, if any.
func (TGMember) BaseMemberSource ¶
func (tn TGMember) BaseMemberSource() (TypeReference, bool)
BaseMemberSource returns the type from which this member was cloned/inherited, if any.
func (TGMember) ChildName ¶
ChildName returns the unique name of the underlying member. For operators, this will return the name prepended with the operator character.
func (TGMember) Code ¶
func (tn TGMember) Code() (compilercommon.CodeSummary, bool)
Code returns a code-like summarization of the member, for human consumption.
func (TGMember) ConstructorType ¶
func (tn TGMember) ConstructorType() (TypeReference, bool)
ConstructorType returns the type constructed by invoking this member, if it is a constructor.
func (TGMember) DeclaredType ¶ added in v0.2.0
func (tn TGMember) DeclaredType() TypeReference
DeclaredType returns the declared type for this member. If a function, returns the return type. Otherwise, returns the member type.
func (TGMember) Documentation ¶
Documentation returns the documentation associated with this member, if any.
func (TGMember) EntityPath ¶ added in v0.2.0
EntityPath returns the path of entities that chain to this member.
func (TGMember) GetTag ¶
func (tn TGMember) GetTag(tag TypeMemberTag) (string, bool)
GetTag returns the value of the given tag, if any.
func (TGMember) GetTagOrDefault ¶
func (tn TGMember) GetTagOrDefault(tag TypeMemberTag, defaultValue string) string
GetTagOrDefault returns the value of the given tag or the default value if no such tag is defined.
func (TGMember) HasBaseMember ¶
HasBaseMember returns true if this member was cloned/inherited.
func (TGMember) HasDefaultValue ¶
HasDefaultValue returns whether the member is automatically initialized with a default value.
func (TGMember) HasGenerics ¶
HasGenerics returns whether this member has generics defined.
func (TGMember) InvokesAsync ¶
InvokesAsync returns whether the member invokes asynchronously.
func (TGMember) IsAccessibleTo ¶
func (tn TGMember) IsAccessibleTo(modulePath compilercommon.InputSource) bool
IsAccessibleTo returns whether this member is accessible to the module with the given source path.
func (TGMember) IsExported ¶
IsExported returns whether the member is exported.
func (TGMember) IsImplicitlyCalled ¶
IsImplicitlyCalled returns whether the member is implicitly called on access or assignment.
func (TGMember) IsOperator ¶
IsOperator returns whether this is an operator.
func (TGMember) IsPromising ¶
func (tn TGMember) IsPromising() MemberPromisingOption
IsPromising returns whether the member is promising.
func (TGMember) IsReadOnly ¶
IsReadOnly returns whether the member is read-only.
func (TGMember) IsRequired ¶ added in v0.2.0
IsRequired returns whether this member is "required" under the parent type, either by being a required field or by being the member of an interface that is implemented.
func (TGMember) IsRequiredField ¶
IsRequiredField returns whether this member is a field requiring initialization on construction of an instance of the parent type.
func (TGMember) LookupGeneric ¶ added in v0.2.0
LookupGeneric looks up the generic under this member with the given name and returns it, if any.
func (TGMember) MemberType ¶
func (tn TGMember) MemberType() TypeReference
MemberType returns the type for this member.
func (TGMember) Node ¶
func (tn TGMember) Node() compilergraph.GraphNode
Node returns the underlying node in this declaration.
func (TGMember) ParameterTypes ¶
func (tn TGMember) ParameterTypes() []TypeReference
ParameterTypes returns the types of the parameters defined on this member, if any.
func (TGMember) Parameters ¶
func (tn TGMember) Parameters() []TGParameter
Parameters returns the parameters on this member.
func (TGMember) Parent ¶
func (tn TGMember) Parent() TGTypeOrModule
Parent returns the type or module containing this member.
func (TGMember) ParentType ¶
func (tn TGMember) ParentType() (TGTypeDecl, bool)
ParentType returns the type containing this member, if any.
func (TGMember) ReturnType ¶
func (tn TGMember) ReturnType() (TypeReference, bool)
ReturnType returns the return type for this member.
func (TGMember) SerializableName ¶
SerializableName returns the defined serializable name for this field.
func (TGMember) ShadowsMembers ¶
ShadowsMembers returns the type members from any composed types that this member shadows.
func (TGMember) SourceGraphId ¶
SourceGraphId returns the ID of the source graph from which this member originated. If none, returns "typegraph".
func (TGMember) SourceNodeId ¶
func (tn TGMember) SourceNodeId() (compilergraph.GraphNodeId, bool)
SourceNodeId returns the ID of the source node for this member, if any.
func (TGMember) SourceRange ¶
func (tn TGMember) SourceRange() (compilercommon.SourceRange, bool)
SourceRange returns the source range for the source node for this member, if any.
func (TGMember) SourceRanges ¶
func (tn TGMember) SourceRanges() []compilercommon.SourceRange
SourceRanges returns all the source ranges for the source node for this member, if any.
type TGModule ¶
type TGModule struct { compilergraph.GraphNode // contains filtered or unexported fields }
TGModule represents a module in the type graph.
func (TGModule) AsType ¶
func (tn TGModule) AsType() (TGTypeDecl, bool)
AsType panics (since module is not a type).
func (TGModule) EntityPath ¶ added in v0.2.0
EntityPath returns the path of entities that chain to this module.
func (TGModule) GetMember ¶ added in v0.2.0
GetMember finds the member under this module with the given name, if any.
func (TGModule) GetMemberOrOperator ¶ added in v0.2.0
GetMemberOrOperator finds the member under this module with the given *child* name, if any.
func (TGModule) MembersAndOperators ¶ added in v0.2.0
MembersAndOperators returns the members defined in this module.
func (TGModule) Node ¶
func (tn TGModule) Node() compilergraph.GraphNode
Node returns the underlying node in this declaration.
func (TGModule) PackagePath ¶ added in v0.2.0
PackagePath returns the path of the module's parent package.
func (TGModule) ParentModule ¶
ParentModule returns the parent module (which, is this module).
func (TGModule) Path ¶
func (tn TGModule) Path() compilercommon.InputSource
Path returns the path of the underlying module.
func (TGModule) SourceGraphId ¶
SourceGraphId returns the ID of the source graph from which this module originated. If none, returns "typegraph".
func (TGModule) Types ¶
func (tn TGModule) Types() []TGTypeDecl
Types returns the types defined in this module.
type TGParameter ¶
type TGParameter struct { compilergraph.GraphNode // contains filtered or unexported fields }
TGParameter represents a parameter under a type member.
func (TGParameter) DeclaredType ¶
func (tn TGParameter) DeclaredType() TypeReference
DeclaredType returns the type for this parameter.
func (TGParameter) Documentation ¶
func (tn TGParameter) Documentation() (string, bool)
Documentation returns the documentation associated with this parameter, if any.
func (TGParameter) Name ¶
func (tn TGParameter) Name() (string, bool)
Name returns the name of the underlying parameter.
type TGTypeDecl ¶
type TGTypeDecl struct { compilergraph.GraphNode // contains filtered or unexported fields }
TGTypeDeclaration represents a type declaration (class, interface or generic) in the type graph.
func (TGTypeDecl) AliasedType ¶
func (tn TGTypeDecl) AliasedType() (TGTypeDecl, bool)
AliasedType returns the type aliased by this type alias.
func (TGTypeDecl) AsGeneric ¶
func (tn TGTypeDecl) AsGeneric() (TGGeneric, bool)
AsGeneric returns this type as a generic.
func (TGTypeDecl) AsType ¶
func (tn TGTypeDecl) AsType() (TGTypeDecl, bool)
AsType returns this type.
func (TGTypeDecl) Attributes ¶ added in v0.2.0
func (tn TGTypeDecl) Attributes() []TypeAttribute
Attributes returns the attributes of this type.
func (TGTypeDecl) Code ¶
func (tn TGTypeDecl) Code() (compilercommon.CodeSummary, bool)
Code returns a code-like summarization of the type, for human consumption.
func (TGTypeDecl) ComposedAgents ¶
func (tn TGTypeDecl) ComposedAgents() []TGAgentReference
ComposedAgents returns the types which this type composes (if any).
func (TGTypeDecl) ComposesAgent ¶
func (tn TGTypeDecl) ComposesAgent(agentTypeRef TypeReference) bool
ComposesAgent returns true if the given agent type is composed by this type.
func (TGTypeDecl) ContainingMember ¶ added in v0.2.0
func (tn TGTypeDecl) ContainingMember() (TGMember, bool)
ContainingMember returns the *directly* containing member. Will only return a type for generics.
func (TGTypeDecl) ContainingType ¶
func (tn TGTypeDecl) ContainingType() (TGTypeDecl, bool)
ContainingType returns the *directly* containing type. Will only return a type for generics.
func (TGTypeDecl) DescriptiveName ¶
func (tn TGTypeDecl) DescriptiveName() string
DescriptiveName returns a nice human-readable name for the type.
func (TGTypeDecl) Documentation ¶
func (tn TGTypeDecl) Documentation() (string, bool)
Documentation returns the documentation associated with this type, if any.
func (TGTypeDecl) EntityPath ¶ added in v0.2.0
func (tn TGTypeDecl) EntityPath() []Entity
EntityPath returns the path of entities that chain to this type.
func (TGTypeDecl) Fields ¶
func (tn TGTypeDecl) Fields() []TGMember
Fields returns the fields under this type.
func (TGTypeDecl) FullName ¶ added in v0.2.0
func (tn TGTypeDecl) FullName() string
FullName returns the full name of this type, including its parent module's path.
func (TGTypeDecl) Generics ¶
func (tn TGTypeDecl) Generics() []TGGeneric
Generics returns the generics on this type.
func (TGTypeDecl) GetMember ¶
func (tn TGTypeDecl) GetMember(name string) (TGMember, bool)
GetMember returns the member (but not operator) with the given name under this type, if any.
func (TGTypeDecl) GetMemberOrOperator ¶ added in v0.2.0
func (tn TGTypeDecl) GetMemberOrOperator(name string) (TGMember, bool)
GetMemberOrOperator returns the member or operator with the given *child name* under this type, if any.
func (TGTypeDecl) GetOperator ¶
func (tn TGTypeDecl) GetOperator(name string) (TGMember, bool)
GetOperator returns the operator with the given name under this type, if any.
func (TGTypeDecl) GetStaticMember ¶
func (tn TGTypeDecl) GetStaticMember(name string) (TGMember, bool)
GetStaticMember returns the static member with the given name under this type, if any.
func (TGTypeDecl) GetTypeReference ¶
func (tn TGTypeDecl) GetTypeReference() TypeReference
GetTypeReference returns a new type reference to this type.
func (TGTypeDecl) GlobalAlias ¶
func (tn TGTypeDecl) GlobalAlias() (string, bool)
GlobalAlias returns the global alias for this type, if any.
func (TGTypeDecl) GlobalUniqueId ¶
func (tn TGTypeDecl) GlobalUniqueId() string
GlobalUniqueId returns a globally unique ID for this type, consistent across multiple compilations.
func (TGTypeDecl) HasAttribute ¶
func (tn TGTypeDecl) HasAttribute(attribute TypeAttribute) bool
HasAttribute returns whether this type has the given attribute.
func (TGTypeDecl) HasGenerics ¶
func (tn TGTypeDecl) HasGenerics() bool
HasGenerics returns whether this type has generics defined.
func (TGTypeDecl) IsAccessibleTo ¶
func (tn TGTypeDecl) IsAccessibleTo(modulePath compilercommon.InputSource) bool
IsAccessibleTo returns whether this type is accessible to the module with the given source path.
func (TGTypeDecl) IsClass ¶
func (tn TGTypeDecl) IsClass() bool
IsClass returns true if this type is a class.
func (TGTypeDecl) IsExported ¶
func (tn TGTypeDecl) IsExported() bool
IsExported returns whether the type is exported.
func (TGTypeDecl) IsField ¶
func (tn TGTypeDecl) IsField() bool
IsField returns whether this type is a field (always false).
func (TGTypeDecl) IsImplicitlyCalled ¶
func (tn TGTypeDecl) IsImplicitlyCalled() bool
IsImplicitlyCalled returns whether this type is implicitly called (always false).
func (TGTypeDecl) IsPromising ¶
func (tn TGTypeDecl) IsPromising() MemberPromisingOption
IsPromising returns whether this type is promising (always MemberNotPromising).
func (TGTypeDecl) IsReadOnly ¶
func (tn TGTypeDecl) IsReadOnly() bool
IsReadOnly returns whether the type is read-only (which is always true)
func (TGTypeDecl) IsStatic ¶
func (tn TGTypeDecl) IsStatic() bool
IsStatic returns whether this type is static (always true).
func (TGTypeDecl) IsType ¶
func (tn TGTypeDecl) IsType() bool
IsType returns whether this is a type (always true).
func (TGTypeDecl) LookupGeneric ¶
func (tn TGTypeDecl) LookupGeneric(name string) (TGGeneric, bool)
LookupGeneric looks up the generic under this type with the given name and returns it, if any.
func (TGTypeDecl) Members ¶
func (tn TGTypeDecl) Members() []TGMember
Members returns the type graph members (but not operartors) for this type node.
func (TGTypeDecl) MembersAndOperators ¶ added in v0.2.0
func (tn TGTypeDecl) MembersAndOperators() []TGMember
MembersAndOperators returns the type graph members and operators for this type node.
func (TGTypeDecl) Name ¶
func (tn TGTypeDecl) Name() string
Name returns the name of the underlying type.
func (TGTypeDecl) Node ¶
func (tn TGTypeDecl) Node() compilergraph.GraphNode
Node returns the underlying node in this declaration.
func (TGTypeDecl) NonFieldMembers ¶
func (tn TGTypeDecl) NonFieldMembers() []TGMember
NonFieldMembers returns the type graph members for this type node that are not fields.
func (TGTypeDecl) OverallContainerType ¶ added in v0.2.0
func (tn TGTypeDecl) OverallContainerType() (TGTypeDecl, bool)
OverallContainerType returns the type containing this type, even if this type is defined on a member. Will only return a type for generics.
func (TGTypeDecl) PackagedName ¶ added in v0.2.0
func (tn TGTypeDecl) PackagedName() string
PackagedName returns the packaged name of this type, including its parent package's path.
func (TGTypeDecl) Parent ¶
func (tn TGTypeDecl) Parent() TGTypeOrModule
Parent returns the module containing this type.
func (TGTypeDecl) ParentModule ¶
func (tn TGTypeDecl) ParentModule() TGModule
ParentModule returns the module containing this type.
func (TGTypeDecl) ParentTypes ¶
func (tn TGTypeDecl) ParentTypes() []TypeReference
ParentTypes returns the types from which this type derives (if any).
func (TGTypeDecl) PrincipalType ¶
func (tn TGTypeDecl) PrincipalType() (TypeReference, bool)
PrincipalType returns the type of the principal for this agent.
func (TGTypeDecl) RequiredFields ¶
func (tn TGTypeDecl) RequiredFields() []TGMember
RequiredFields returns the fields under this type that must be specified when constructing an instance of the type, as they are non-nullable and do not have a specified default value.
func (TGTypeDecl) SourceGraphId ¶
func (tn TGTypeDecl) SourceGraphId() string
SourceGraphId returns the ID of the source graph from which this type originated. If none, returns "typegraph".
func (TGTypeDecl) SourceNodeId ¶
func (tn TGTypeDecl) SourceNodeId() (compilergraph.GraphNodeId, bool)
SourceNodeId returns the ID of the source node for this tyoe, if any.
func (TGTypeDecl) SourceRange ¶
func (tn TGTypeDecl) SourceRange() (compilercommon.SourceRange, bool)
SourceRange returns the source range for the source node for this type, if any.
func (TGTypeDecl) SourceRanges ¶
func (tn TGTypeDecl) SourceRanges() []compilercommon.SourceRange
SourceRanges returns all the source ranges for the source node for this type, if any.
func (TGTypeDecl) Title ¶
func (tn TGTypeDecl) Title() string
Title returns a nice title for the type.
func (TGTypeDecl) TypeKind ¶
func (tn TGTypeDecl) TypeKind() TypeKind
TypeKind returns the kind of the type node.
type TGTypeOrMember ¶
type TGTypeOrMember interface { Name() string Title() string Node() compilergraph.GraphNode Generics() []TGGeneric HasGenerics() bool LookupGeneric(name string) (TGGeneric, bool) IsReadOnly() bool IsType() bool IsStatic() bool IsExported() bool IsPromising() MemberPromisingOption Parent() TGTypeOrModule IsImplicitlyCalled() bool IsField() bool SourceNodeId() (compilergraph.GraphNodeId, bool) SourceGraphId() string SourceRange() (compilercommon.SourceRange, bool) SourceRanges() []compilercommon.SourceRange IsAccessibleTo(modulePath compilercommon.InputSource) bool AsType() (TGTypeDecl, bool) Code() (compilercommon.CodeSummary, bool) EntityPath() []Entity }
TGTypeOrMember represents an interface shared by types and members.
type TGTypeOrModule ¶
type TGTypeOrModule interface { Name() string Node() compilergraph.GraphNode Members() []TGMember MembersAndOperators() []TGMember Title() string IsType() bool ParentModule() TGModule GetMember(name string) (TGMember, bool) GetMemberOrOperator(name string) (TGMember, bool) AsType() (TGTypeDecl, bool) SourceGraphId() string EntityPath() []Entity }
TGTypeOrModule represents an interface shared by types and modules.
type TestGeneric ¶ added in v0.2.0
TestGeneric defines a new generic to be created on a TestType or TestMember.
type TestMember ¶ added in v0.2.0
type TestMember struct { Kind MemberSignatureKind Name string ReturnType string Generics []TestGeneric Parameters []TestParam }
TestMember defines a new member to be created on a TestType or under a test module.
type TestModule ¶ added in v0.2.0
type TestModule struct { ModuleName string Types []TestType Members []TestMember }
TestModule defines a new mdoule to be created in the test type graph.
func (TestModule) ResolveTypeString ¶ added in v0.2.0
func (module TestModule) ResolveTypeString(humanString string, graph *TypeGraph) TypeReference
ResolveTypeString resolves the given type string via the given constructed module.
type TestType ¶ added in v0.2.0
type TestType struct { Kind string Name string ParentType string Generics []TestGeneric Members []TestMember }
TestType defines a new type to be created in the test type graph.
type TypeAttribute ¶
type TypeAttribute string
TypeAttribute defines the set of custom attributes allowed on type declarations.
const ( // SERIALIZABLE_ATTRIBUTE marks a type as being serializable in the native // runtime. SERIALIZABLE_ATTRIBUTE TypeAttribute = "serializable" )
type TypeGraph ¶
type TypeGraph struct {
// contains filtered or unexported fields
}
TypeGraph represents the TypeGraph layer and all its associated helper methods.
func ConstructTypeGraphWithBasicTypes ¶ added in v0.2.0
func ConstructTypeGraphWithBasicTypes(modules ...TestModule) *TypeGraph
ConstructTypeGraphWithBasicTypes constructs a type graph populated with the given testing modules and all the "basic" types necessary for implicit operators. Will panic if construction fails.
func (*TypeGraph) AnyTypeReference ¶
func (t *TypeGraph) AnyTypeReference() TypeReference
AnyTypeReference returns a reference to the special 'any' type.
func (*TypeGraph) AsyncMembers ¶
AsyncMembers returns all defined async members.
func (*TypeGraph) AwaitableType ¶
func (t *TypeGraph) AwaitableType() TGTypeDecl
AwaitableType returns the awaitable type.
func (*TypeGraph) AwaitableTypeReference ¶
func (t *TypeGraph) AwaitableTypeReference(generic TypeReference) TypeReference
AwaitableTypeReference returns a new reference to the awaitable type, with the given generic.
func (*TypeGraph) BoolType ¶
func (t *TypeGraph) BoolType() TGTypeDecl
BoolType returns the boolean type.
func (*TypeGraph) BoolTypeReference ¶
func (t *TypeGraph) BoolTypeReference() TypeReference
BoolTypeReference returns a reference to the bool type.
func (*TypeGraph) DeserializieTypeRef ¶
func (t *TypeGraph) DeserializieTypeRef(value string) TypeReference
Deserializes a type reference string value into a TypeReference.
func (*TypeGraph) ErrorType ¶
func (t *TypeGraph) ErrorType() TGTypeDecl
ErrorType returns the error type.
func (*TypeGraph) ErrorTypeReference ¶
func (t *TypeGraph) ErrorTypeReference() TypeReference
ErrorTypeReference returns a reference to the error type.
func (*TypeGraph) FloatType ¶
func (t *TypeGraph) FloatType() TGTypeDecl
FloatType returns the float type.
func (*TypeGraph) ForEachModule ¶
func (g *TypeGraph) ForEachModule(handler moduleHandler)
ForEachModule executes the given function for each defined module in the graph. Note that the functions will be executed in *parallel*, so care must be taken to ensure there aren't any inconsistent accesses or writes.
func (*TypeGraph) ForEachTypeDecl ¶
ForEachTypeDecl executes the given function for each defined type matching the type kinds. Note that the functions will be executed in *parallel*, so care must be taken to ensure there aren't any inconsistent accesses or writes.
func (*TypeGraph) FunctionType ¶
func (t *TypeGraph) FunctionType() TGTypeDecl
FunctionType returns the function type.
func (*TypeGraph) FunctionTypeReference ¶
func (t *TypeGraph) FunctionTypeReference(generic TypeReference) TypeReference
FunctionTypeReference returns a new reference to the function type, with the given generic.
func (*TypeGraph) GetFilteredJSONForm ¶
func (tg *TypeGraph) GetFilteredJSONForm(pathFilters []string, skipNodeKinds []compilergraph.TaggedValue) string
GetFilteredJSONForm returns the filtered type graph serialized to JSON. *For testing purposes only*.
func (*TypeGraph) GetJSONForm ¶
GetJSONForm returns this type graph serialized to JSON. *For testing purposes only*.
func (*TypeGraph) GetMemberForSourceNode ¶
func (g *TypeGraph) GetMemberForSourceNode(node compilergraph.GraphNode) (TGMember, bool)
GetMemberForSRGNode returns the TypeGraph member for the given source member node, if any.
func (*TypeGraph) GetNode ¶
func (g *TypeGraph) GetNode(nodeID compilergraph.GraphNodeId) compilergraph.GraphNode
GetNode returns the node with the given ID in this layer or panics.
func (*TypeGraph) GetOperatorDefinition ¶
GetOperatorDefinition returns the operator definition for the operator with the given name (if any)
func (*TypeGraph) GetTypeDecls ¶
func (g *TypeGraph) GetTypeDecls(typeKinds ...NodeType) []TGTypeDecl
GetTypeDecls returns all types defined in the type graph of the given types.
func (*TypeGraph) GetTypeForSourceNode ¶
func (g *TypeGraph) GetTypeForSourceNode(node compilergraph.GraphNode) (TGTypeDecl, bool)
GetTypeForSourceNode returns the TypeGraph type decl for the given source type node, if any.
func (*TypeGraph) GetTypeOrMember ¶
func (g *TypeGraph) GetTypeOrMember(nodeId compilergraph.GraphNodeId) TGTypeOrMember
GetTypeOrMember returns the type or member matching the given node ID.
func (*TypeGraph) GetTypeOrMemberForNode ¶
func (g *TypeGraph) GetTypeOrMemberForNode(node compilergraph.GraphNode) (TGTypeOrMember, bool)
GetTypeOrMemberForNode returns a type or member wrapper around the given node, if applicable.
func (*TypeGraph) GetTypeOrMemberForSourceNode ¶
func (g *TypeGraph) GetTypeOrMemberForSourceNode(node compilergraph.GraphNode) (TGTypeOrMember, bool)
GetTypeOrMemberForSourceNode returns the TypeGraph type or member for the given source node, if any.
func (*TypeGraph) GetTypeOrModuleForSourceNode ¶
func (g *TypeGraph) GetTypeOrModuleForSourceNode(sourceNode compilergraph.GraphNode) (TGTypeOrModule, bool)
GetTypeOrModuleForSourceNode returns the type or module for the given source node, if any.
func (*TypeGraph) IntStreamType ¶
func (t *TypeGraph) IntStreamType() TGTypeDecl
IntStreamType returns the $intstream type.
func (*TypeGraph) IntType ¶
func (t *TypeGraph) IntType() TGTypeDecl
IntType returns the integer type.
func (*TypeGraph) IntTypeReference ¶
func (t *TypeGraph) IntTypeReference() TypeReference
IntTypeReference returns a reference to the int type.
func (*TypeGraph) IntersectTypes ¶
func (g *TypeGraph) IntersectTypes(first []TypeReference, second []TypeReference) []TypeReference
IntersectTypes performs type reference intersection on both slices, returning a new slices.
func (*TypeGraph) LookupGlobalAliasedType ¶
func (g *TypeGraph) LookupGlobalAliasedType(alias string) (TGTypeDecl, bool)
LookupGlobalAliasedType looks up the type with the given global alias and returns it, if any.
func (*TypeGraph) LookupModule ¶
func (g *TypeGraph) LookupModule(source compilercommon.InputSource) (TGModule, bool)
LookupModule looks up the module with the given source and returns it, if any.
func (*TypeGraph) LookupModuleMember ¶
func (g *TypeGraph) LookupModuleMember(memberName string, module compilercommon.InputSource) (TGMember, bool)
LookupModuleMember looks up the member with the given name directly under the given module and returns it (if any).
func (*TypeGraph) LookupReturnType ¶
func (g *TypeGraph) LookupReturnType(sourceNode compilergraph.GraphNode) (TypeReference, bool)
LookupReturnType looks up the return type for an source member or property getter.
func (*TypeGraph) LookupType ¶
func (g *TypeGraph) LookupType(typeName string, module compilercommon.InputSource) (TGTypeDecl, bool)
LookupType looks up the type declaration with the given name in the given module and returns it (if any).
func (*TypeGraph) LookupTypeOrMember ¶
func (g *TypeGraph) LookupTypeOrMember(name string, module compilercommon.InputSource) (TGTypeOrMember, bool)
LookupTypeOrMember looks up the type or member with the given name in the given module and returns it (if any).
func (*TypeGraph) MappingType ¶
func (t *TypeGraph) MappingType() TGTypeDecl
MappingType returns the mapping type.
func (*TypeGraph) MappingTypeReference ¶
func (t *TypeGraph) MappingTypeReference(value TypeReference) TypeReference
MappingTypeReference returns a new reference to the mapoing type, with the given generic.
func (*TypeGraph) ModulesWithMembers ¶
ModulesWithMembers returns all modules containing members defined in the type graph.
func (*TypeGraph) NativeBoolTypeReference ¶
func (t *TypeGraph) NativeBoolTypeReference() TypeReference
NativeBoolTypeReference returns a reference to the native boolean type.
func (*TypeGraph) NewInstanceTypeReference ¶
func (t *TypeGraph) NewInstanceTypeReference(typeDecl TGTypeDecl) TypeReference
NewInstanceTypeReference returns a new type reference pointing to a type and its generics (if any).
func (*TypeGraph) NewTypeReference ¶
func (t *TypeGraph) NewTypeReference(typeDecl TGTypeDecl, generics ...TypeReference) TypeReference
NewTypeReference returns a new type reference pointing to the given type node and some (optional) generics.
func (*TypeGraph) NullTypeReference ¶
func (t *TypeGraph) NullTypeReference() TypeReference
NullTypeReference returns a reference to the special 'null' type.
func (*TypeGraph) ReleasableType ¶
func (t *TypeGraph) ReleasableType() TGTypeDecl
ReleasableType returns the releasable type.
func (*TypeGraph) ReleasableTypeReference ¶
func (t *TypeGraph) ReleasableTypeReference() TypeReference
ReleasableTypeReference returns a reference to the releasable type.
func (*TypeGraph) ResolveEntityByPath ¶ added in v0.2.0
func (g *TypeGraph) ResolveEntityByPath(entityPath []Entity, option EntityResolveOption) (TGEntity, bool)
ResolveEntityByPath finds the entity with the matching set of entries in this type graph, if any.
func (*TypeGraph) ResolveTypeOrMemberUnderPackage ¶
func (g *TypeGraph) ResolveTypeOrMemberUnderPackage(name string, packageInfo packageloader.PackageInfo) (TGTypeOrMember, bool)
ResolveTypeOrMemberUnderPackage searches the type graph for a type or member with the given name, located in any modules found in the given package.
func (*TypeGraph) ResolveTypeUnderPackage ¶
func (g *TypeGraph) ResolveTypeUnderPackage(name string, packageInfo packageloader.PackageInfo) (TGTypeDecl, bool)
ResolveTypeUnderPackage searches the type graph for a type with the given name, located in any modules found in the given package.
func (*TypeGraph) SerializationJSONType ¶
func (t *TypeGraph) SerializationJSONType() TGTypeDecl
SerializationJSONType returns the $json type.
func (*TypeGraph) SerializationParserType ¶
func (t *TypeGraph) SerializationParserType() TGTypeDecl
SerializationParserType returns the $parser type.
func (*TypeGraph) SerializationStringifier ¶
func (t *TypeGraph) SerializationStringifier() TGTypeDecl
SerializationStringifier returns the $stringifier type.
func (*TypeGraph) SliceType ¶
func (t *TypeGraph) SliceType() TGTypeDecl
SliceType returns the slice type.
func (*TypeGraph) SliceTypeReference ¶
func (t *TypeGraph) SliceTypeReference(generic TypeReference) TypeReference
SliceTypeReference returns a new reference to the slice type, with the given generic.
func (*TypeGraph) SourceRangeOf ¶
func (g *TypeGraph) SourceRangeOf(node compilergraph.GraphNode) (compilercommon.SourceRange, bool)
SourceRangeOf returns the source range of the given node in its *source* graph, if any.
func (*TypeGraph) SourceRangesOf ¶
func (g *TypeGraph) SourceRangesOf(node compilergraph.GraphNode) []compilercommon.SourceRange
SourceRangesOf returns the source ranges of the given in its *source* graph, if any.
func (*TypeGraph) StreamType ¶
func (t *TypeGraph) StreamType() TGTypeDecl
StreamType returns the stream type.
func (*TypeGraph) StreamTypeReference ¶
func (t *TypeGraph) StreamTypeReference(generic TypeReference) TypeReference
StreamTypeReference returns a new reference to the stream type, with the given generic.
func (*TypeGraph) StreamableType ¶
func (t *TypeGraph) StreamableType() TGTypeDecl
StreamableType returns the streamable type.
func (*TypeGraph) StringType ¶
func (t *TypeGraph) StringType() TGTypeDecl
StringType returns the string type.
func (*TypeGraph) StringTypeReference ¶
func (t *TypeGraph) StringTypeReference() TypeReference
StringTypeReference returns a reference to the string type.
func (*TypeGraph) StringableType ¶
func (t *TypeGraph) StringableType() TGTypeDecl
StringableType returns the string type.
func (*TypeGraph) StringableTypeReference ¶
func (t *TypeGraph) StringableTypeReference() TypeReference
StringableTypeReference returns a reference to the stringable type.
func (*TypeGraph) StructTypeReference ¶
func (t *TypeGraph) StructTypeReference() TypeReference
StructTypeReference returns a reference to the special 'struct' type.
func (*TypeGraph) TypeAliases ¶
func (g *TypeGraph) TypeAliases() []TGTypeDecl
TypeAliases returns all type aliases in the type graph.
func (*TypeGraph) TypeDecls ¶
func (g *TypeGraph) TypeDecls() []TGTypeDecl
TypeDecls returns all types defined in the type graph.
func (*TypeGraph) TypeOrMembersUnderPackage ¶
func (g *TypeGraph) TypeOrMembersUnderPackage(packageInfo packageloader.PackageInfo) []TGTypeOrMember
TypeOrMembersUnderPackage returns all types or members defined under the given package.
func (*TypeGraph) VoidTypeReference ¶
func (t *TypeGraph) VoidTypeReference() TypeReference
VoidTypeReference returns a reference to the special 'void' type.
type TypeGraphConstructor ¶
type TypeGraphConstructor interface { // Defines the modules exported by the source graph. DefineModules(builder GetModuleBuilder) // Defines the types exported by the source graph (including generics). DefineTypes(builder GetTypeBuilder) // Defines the constraints on generics, inheritance, and other type-dependent info. DefineDependencies(annotator Annotator, graph *TypeGraph) // Defines the members under the modules and types. DefineMembers(builder GetMemberBuilder, reporter IssueReporter, graph *TypeGraph) // Decorates all members with their generics and other attributes. Occurs as a second step after // DefineMembers to ensure member-level generics are available for resolution. DecorateMembers(decorator GetMemberDecorator, reporter IssueReporter, graph *TypeGraph) // Performs final validation of the type graph after full definition. Validate(reporter IssueReporter, graph *TypeGraph) // GetRanges returns the range information for the given source node in the source graph, // if any. GetRanges(sourceNodeID compilergraph.GraphNodeId) []compilercommon.SourceRange }
TypeGraphConstructor defines an interface that is implemented by various source graphs (SRG, IRG) for translating their parsed form into type graph information.
func NewBasicTypesConstructorForTesting ¶ added in v0.2.0
func NewBasicTypesConstructorForTesting(graph compilergraph.SerulianGraph) TypeGraphConstructor
NewBasicTypesConstructorForTesting returns a new TypeGraphConstructor which adds the basic types for testing.
type TypeKind ¶
type TypeKind int
TypeKind defines the various supported kinds of types in the TypeGraph.
type TypeLookup ¶ added in v0.2.0
type TypeLookup func(existingType TGTypeDecl) (TGTypeDecl, bool)
TypeLookup is a function for finding the equivalent type for a type declaration in another type graph.
type TypeMemberTag ¶
type TypeMemberTag string
TypeMemberTag defines the set of custom tags on type members.
const ( // STRUCT_SERIALIZED_NAME_TAG marks a type member under a struct with its name when // serialized. STRUCT_SERIALIZED_NAME_TAG TypeMemberTag = "name" )
type TypeReference ¶
type TypeReference struct {
// contains filtered or unexported fields
}
TypeReference represents a saved type reference in the graph.
func (TypeReference) AdoptReferenceInto ¶ added in v0.2.0
func (tr TypeReference) AdoptReferenceInto(graph *TypeGraph, lookup TypeLookup) (TypeReference, error)
AdoptReferenceInto attempts to turn the current type reference into a reference to the *equivalent* type found in the specified type graph. Type equivalency matching is done via the lookup method. This method is used in libraries that operate on multiple type graphs and need to perform comparison between them.
func (TypeReference) AsNonNullable ¶
func (tr TypeReference) AsNonNullable() TypeReference
AsNonNullable returns a copy of this type reference that is non-nullable.
func (TypeReference) AsNullable ¶
func (tr TypeReference) AsNullable() TypeReference
AsNullable returns a copy of this type reference that is nullable.
func (TypeReference) AsValueOfStream ¶
func (tr TypeReference) AsValueOfStream() TypeReference
AsValueOfStream returns a type reference to a Stream, with this type reference as the value.
func (TypeReference) Build ¶
func (tr TypeReference) Build(value string) interface{}
func (TypeReference) CheckCastableFrom ¶
func (tr TypeReference) CheckCastableFrom(source TypeReference) error
CheckCastableFrom returns whether the type pointed to by this type reference is castable from the source type reference.
Rules:
- All types can be cast to 'any'
- Void is never allowed.
- A null type cannot be casted.
- `struct` can only be cast to a structural type.
- Nullability must match.
- If the destination is an interface, any interface type can be cast to it, as it'll be checked at runtime.
- Otherwise, subtyping rules are in effect
func (TypeReference) CheckConcreteSubtypeOf ¶
func (tr TypeReference) CheckConcreteSubtypeOf(otherType TGTypeDecl) ([]TypeReference, error)
CheckConcreteSubtypeOf checks that the current type reference refers to a type that is a concrete subtype of the specified *generic* interface.
func (TypeReference) CheckNominalConvertable ¶
func (tr TypeReference) CheckNominalConvertable(other TypeReference) error
CheckNominalConvertable checks that the current type reference refers to a type that is nominally deriving from the given type reference's type or vice versa.
func (TypeReference) CheckStructuralSubtypeOf ¶
func (tr TypeReference) CheckStructuralSubtypeOf(other TypeReference) bool
CheckStructuralSubtypeOf checks that the current type reference refers to a type that is structurally deriving from the given type reference's type.
func (TypeReference) CheckSubTypeOf ¶
func (tr TypeReference) CheckSubTypeOf(other TypeReference) error
CheckSubTypeOf returns whether the type pointed to by this type reference is a subtype of the other type reference: tr <: other
Subtyping rules in Serulian are as follows:
- All types are subtypes of 'any'.
- Only structural types are subtypes of 'struct'.
- The special "null" type is a subtype of any *nullable* type.
- A non-nullable type is a subtype of a nullable type (but not vice versa).
- A class is a subtype of itself (and no other class) and only if generics and parameters match.
- A class (or interface) is a subtype of an interface if it defines that interface's full signature.
- A generic is checked by its constraint.
- An external interface is a subtype of another external interface if explicitly declared so.
func (TypeReference) CheckSubTypeOfWithExceptions ¶
func (tr TypeReference) CheckSubTypeOfWithExceptions(other TypeReference, exception SubTypingException) (error, SubTypingException)
CheckSubTypeOfWithExceptions returns whether the type pointed to by this type reference is a subtype of the other type reference: tr <: other
func (TypeReference) ContainsType ¶
func (tr TypeReference) ContainsType(typeDecl TGTypeDecl) bool
ContainsType returns true if the current type reference has a reference to the given type.
func (TypeReference) EnsureStructural ¶
func (tr TypeReference) EnsureStructural() error
EnsureStructural ensures that the type reference and all sub-references are structural in nature. A "structural" type, as allowed by this pass, must meet the following rules:
1) The type is marked with a 'serializable' annotation OR 2) The type is a `struct` OR 3) The type refers to a generic OR 4) The type is a nominal type around #1, #2 or #3 AND 5) All subreferences (generics and parameters) must meet the above rules.
func (TypeReference) EqualsOrAny ¶
func (tr TypeReference) EqualsOrAny(other TypeReference) bool
EqualsOrAny returns true if this type reference is equal to the other given, OR if it is 'any'.
func (TypeReference) ExtractTypeDiff ¶
func (tr TypeReference) ExtractTypeDiff(otherRef TypeReference, diffType TGTypeDecl) (TypeReference, bool)
ExtractTypeDiff attempts to extract the child type reference from this type reference used in place of a reference to the given type in the other reference. For example, if this is a reference to SomeClass<int> and the other reference is SomeClass<T>, passing in 'T' will return 'int'.
func (TypeReference) GenericCount ¶
func (tr TypeReference) GenericCount() int
GenericCount returns the number of generics on this type reference.
func (TypeReference) Generics ¶
func (tr TypeReference) Generics() []TypeReference
Generics returns the generics defined on this type reference, if any.
func (TypeReference) HasGenerics ¶
func (tr TypeReference) HasGenerics() bool
HasGenerics returns whether the type reference has generics.
func (TypeReference) HasParameters ¶
func (tr TypeReference) HasParameters() bool
HasParameters returns whether the type reference has parameters.
func (TypeReference) HasReferredType ¶
func (tr TypeReference) HasReferredType(typeDecl TGTypeDecl) bool
HasReferredType returns whether this type references refers to the given type. Note that the type reference can be nullable.
func (TypeReference) Intersect ¶
func (tr TypeReference) Intersect(other TypeReference) TypeReference
Intersect returns the type common to both type references or any if they are uncommon.
func (TypeReference) IsAny ¶
func (tr TypeReference) IsAny() bool
IsAny returns whether this type reference refers to the special 'any' type.
func (TypeReference) IsDirectReferenceTo ¶
func (tr TypeReference) IsDirectReferenceTo(typeDecl TGTypeDecl) bool
IsDirectReferenceTo returns whether this type references refers to the given type. Note that the type reference cannot be nullable.
func (TypeReference) IsLocalRef ¶
func (tr TypeReference) IsLocalRef() bool
IsLocalRef returns whether this type reference is a localized reference.
func (TypeReference) IsNominal ¶
func (tr TypeReference) IsNominal() bool
IsNominal returns whether the referenced type is a nominal type.
func (TypeReference) IsNominalOrStruct ¶
func (tr TypeReference) IsNominalOrStruct() bool
IsNominalOrStruct returns whether the referenced type is a struct or nominal type.
func (TypeReference) IsNominalWrapOf ¶
func (tr TypeReference) IsNominalWrapOf(other TypeReference) bool
IsNominalWrapOf returns whether the type referenced is a nominal wrapping of the other type.
func (TypeReference) IsNormal ¶
func (tr TypeReference) IsNormal() bool
IsNormal returns whether this type reference refers to a normal type, such as a class, struct, agent or interface.
func (TypeReference) IsNull ¶
func (tr TypeReference) IsNull() bool
IsNull returns whether this type reference refers to the special 'null' type (which is distinct from a nullable type).
func (TypeReference) IsNullable ¶
func (tr TypeReference) IsNullable() bool
IsNullable returns whether the type reference refers to a nullable type.
func (TypeReference) IsRefToAgent ¶
func (tr TypeReference) IsRefToAgent() bool
IsRefToAgent returns whether the referenced type is an agent.
func (TypeReference) IsRefToClass ¶
func (tr TypeReference) IsRefToClass() bool
IsRefToClass returns whether the referenced type is a class.
func (TypeReference) IsRefToImplicitInterface ¶
func (tr TypeReference) IsRefToImplicitInterface() bool
IsRefToImplicitInterface returns whether the referenced type is an interface.
func (TypeReference) IsRefToStruct ¶
func (tr TypeReference) IsRefToStruct() bool
IsRefToStruct returns whether the referenced type is a struct.
func (TypeReference) IsStruct ¶
func (tr TypeReference) IsStruct() bool
IsStruct returns whether this type reference refers to the special 'struct' type.
func (TypeReference) IsStructurual ¶
func (tr TypeReference) IsStructurual() bool
IsStructurual returns whether the reference type is *directly* structural.
func (TypeReference) IsVoid ¶
func (tr TypeReference) IsVoid() bool
IsVoid returns whether this type reference refers to the special 'void' type.
func (TypeReference) Localize ¶
func (tr TypeReference) Localize(generics ...TGGeneric) TypeReference
Localize returns a copy of this type reference with any references to the specified generics replaced with a string that does not reference a specific type node ID, but rather a localized ID instead. This allows type references that reference different type and type member generics to be compared.
func (TypeReference) Name ¶
func (tr TypeReference) Name() string
func (TypeReference) NominalDataType ¶
func (tr TypeReference) NominalDataType() TypeReference
NominalDataType returns the root data type of the nominal type, or the type itself if not nominal.
func (TypeReference) NominalRootType ¶
func (tr TypeReference) NominalRootType() TypeReference
NominalRootType returns the root nominal type of the nominal type, or the type itself if not nominal.
func (TypeReference) NullValueAllowed ¶
func (tr TypeReference) NullValueAllowed() bool
NullValueAllowed returns whether a null value can be assigned to a field of this type.
func (TypeReference) PackageQualifiedString ¶ added in v0.2.0
func (tr TypeReference) PackageQualifiedString() string
PackageQualifiedString returns a string representation of the type, qualified by package path for all types, including generics.
func (TypeReference) ParameterCount ¶
func (tr TypeReference) ParameterCount() int
ParameterCount returns the number of parameters on this type reference.
func (TypeReference) Parameters ¶
func (tr TypeReference) Parameters() []TypeReference
Parameters returns the parameters defined on this type reference, if any.
func (TypeReference) ReferredType ¶
func (tr TypeReference) ReferredType() TGTypeDecl
ReferredType returns the type decl to which the type reference refers.
func (TypeReference) ReplaceType ¶
func (tr TypeReference) ReplaceType(typeDecl TGTypeDecl, replacement TypeReference) TypeReference
ReplaceType returns a copy of this type reference, with the given type node replaced with the given type reference.
func (TypeReference) ResolveAccessibleMember ¶
func (tr TypeReference) ResolveAccessibleMember(memberName string, modulePath compilercommon.InputSource, kind MemberResolutionKind) (TGMember, error)
ResolveAccessibleMember looks for an member with the given name under the referred type and returns it (if any).
func (TypeReference) ResolveMember ¶
func (tr TypeReference) ResolveMember(memberName string, kind MemberResolutionKind) (TGMember, bool)
ResolveMember looks for an member with the given name under the referred type and returns it (if any).
func (TypeReference) StreamYieldType ¶ added in v0.3.0
func (tr TypeReference) StreamYieldType() (TypeReference, error)
StreamYieldType returns the type of items yielded by this stream or an error if this type is not a concrete subtype of Stream<T>.
func (TypeReference) StreamYieldTypeOrAny ¶ added in v0.3.0
func (tr TypeReference) StreamYieldTypeOrAny() TypeReference
StreamYieldTypeOrAny returns the type of the items yielded by this stream, or `any` if none.
func (TypeReference) String ¶
func (tr TypeReference) String() string
String returns a human-friendly string.
func (TypeReference) TitledString ¶
func (tr TypeReference) TitledString() string
TitledString returns a human-friendly string which includes the title of the type referenced.
func (TypeReference) TransformUnder ¶
func (tr TypeReference) TransformUnder(other TypeReference) TypeReference
TransformUnder replaces any generic references in this type reference with the references found in the other type reference.
For example, if this type reference is function<T> and the other is SomeClass<int>, where T is the generic of 'SomeClass', this method will return function<int>.
func (TypeReference) Value ¶
func (tr TypeReference) Value() string
func (TypeReference) Verify ¶
func (tr TypeReference) Verify() error
Verify returns an error if the type reference is invalid in some way. Returns nil if it is valid.
func (TypeReference) WithGeneric ¶
func (tr TypeReference) WithGeneric(generic TypeReference) TypeReference
WithGeneric returns a copy of this type reference with the given generic added.
func (TypeReference) WithParameter ¶
func (tr TypeReference) WithParameter(parameter TypeReference) TypeReference
WithParameter returns a copy of this type reference with the given parameter added.
Source Files ¶
- basictypes.go
- composition_construction.go
- constructor.go
- entity.go
- graphrep.go
- internal_construction.go
- nodetype_string.go
- operators.go
- packagenamemap.go
- testutil.go
- testutil_construct.go
- testutil_structs.go
- testutil_typeref.go
- typegraph.go
- typegraph_agent.go
- typegraph_generic.go
- typegraph_member.go
- typegraph_moduledecl.go
- typegraph_parameter.go
- typegraph_query.go
- typegraph_typedecl.go
- typegraph_typeormember.go
- typegraph_typeormodule.go
- typegraph_types.go
- typereference.go
- typereferencevalue.go
- util.go