Type Alias TypirServices

TypirServices: {
    Assignability: TypeAssignability;
    caching: {
        LanguageNodeInference: LanguageNodeInferenceCaching;
        TypeRelationships: TypeRelationshipCaching;
    };
    Conversion: TypeConversion;
    Equality: TypeEquality;
    factory: {
        Bottom: BottomFactoryService;
        Classes: ClassFactoryService;
        Functions: FunctionFactoryService;
        Operators: OperatorFactoryService;
        Primitives: PrimitiveFactoryService;
        Top: TopFactoryService;
    };
    Inference: TypeInferenceCollector;
    infrastructure: {
        Graph: TypeGraph;
        Kinds: KindRegistry;
        TypeResolver: TypeResolvingService;
    };
    Printer: ProblemPrinter;
    Subtype: SubType;
    validation: {
        Collector: ValidationCollector;
        Constraints: ValidationConstraints;
    };
}

Some open design questions for future releases TODO

  • Replace "unknown" as a generic "<T = unknown>" for whole Typir? For Typir-Langium T would be AstNode!
  • How to bundle Typir configurations for reuse ("presets")?

Type declaration