finos/morphir-ir/versions/v4 does not have a README file

    AccessControlled

    ApplicationDependencies

    Application dependencies carry implementations for static linking.

    Constructors

    Mutable linked hash map that maintains the order of insertion, not thread safe.

    Example

    test {
    let map = { 3: "three", 8: "eight", 1: "one" }
    @test.assert_eq(map.get(2), None)
    @test.assert_eq(map.get(3), Some("three"))
    map.set(3, "updated")
    @test.assert_eq(map.get(3), Some("updated"))
    }

    Data

    JSON-shaped extension data. Number lexemes never pass through a floating-point value. This is a data model, not a parser; codecs must validate number lexemes.

    Dependencies

    Mutable linked hash map that maintains the order of insertion, not thread safe.

    Example

    test {
    let map = { 3: "three", 8: "eight", 1: "one" }
    @test.assert_eq(map.get(2), None)
    @test.assert_eq(map.get(3), Some("three"))
    map.set(3, "updated")
    @test.assert_eq(map.get(3), Some("updated"))
    }

    Documented

    ModuleName

    using @finos/morphir-ir/common { type Path as ModuleName }

    Name

    Immutable storage keeps names safe as map keys.

    NameError

    NameSegment

    A word and an initialism remain distinct in the semantic name.

    PackageName

    using @finos/morphir-ir/common { type Path as PackageName }

    Annotation

    Annotation::equal

    fn Annotation::equal(Annotation, Annotation) -> Bool

    Annotation::not_equal

    fn Annotation::not_equal(x : Annotation, y : Annotation) -> Bool

    Annotation::required_types

    fn Annotation::required_types(self : Annotation) -> Array[Type]

    AnnotationArgument

    pub(all) enum AnnotationArgument {
    Positional(Value)
    Named(
    Name
    , Value)
    } derive(Eq,
    Debug
    )

    AnnotationArgument::equal

    AnnotationArgument::not_equal

    DerivedTypeDetails

    pub(all) struct DerivedTypeDetails {
    base_type : Type
    from_base_type :
    FQName

    to_base_type :
    FQName

    } derive(Eq,
    Debug
    )

    DerivedTypeDetails::equal

    DerivedTypeDetails::not_equal

    EntryPoint

    pub(all) struct EntryPoint {
    target :
    FQName

    kind : EntryPointKind
    doc : String?
    } derive(Eq,
    Debug
    )

    EntryPoint::equal

    fn EntryPoint::equal(EntryPoint, EntryPoint) -> Bool

    EntryPoint::not_equal

    fn EntryPoint::not_equal(x : EntryPoint, y : EntryPoint) -> Bool

    EntryPointKind

    pub(all) enum EntryPointKind {
    Main
    Command
    Handler
    Job
    Policy
    } derive(Eq,
    Debug
    )

    EntryPointKind::equal

    EntryPointKind::not_equal

    fn EntryPointKind::not_equal(x : EntryPointKind, y : EntryPointKind) -> Bool

    ExternalBinding

    pub(all) struct ExternalBinding {
    target_platform : String
    external_name : String
    } derive(Eq,
    Debug
    )

    ExternalBinding::equal

    ExternalBinding::not_equal

    fn ExternalBinding::not_equal(x : ExternalBinding, y : ExternalBinding) -> Bool

    HoleReason

    pub(all) enum HoleReason {
    UnresolvedReference(
    FQName
    )
    DeletedDuringRefactor(String)
    TypeMismatch(String, String)
    } derive(Eq,
    Debug
    )

    HoleReason::equal

    fn HoleReason::equal(HoleReason, HoleReason) -> Bool

    HoleReason::not_equal

    fn HoleReason::not_equal(x : HoleReason, y : HoleReason) -> Bool

    IRFile

    IRFile::equal

    fn IRFile::equal(IRFile, IRFile) -> Bool

    IRFile::not_equal

    fn IRFile::not_equal(x : IRFile, y : IRFile) -> Bool

    IRFile::required_types

    fn IRFile::required_types(self : IRFile) -> Array[Type]

    Whole-file requirements include dependencies. A selected consumer must validate its closure before pruning.

    IRFile::to_repr

    Incompleteness

    pub(all) enum Incompleteness {
    Hole(HoleReason, Type?)
    Draft
    } derive(Eq,
    Debug
    )

    Incompleteness::equal

    Incompleteness::not_equal

    fn Incompleteness::not_equal(x : Incompleteness, y : Incompleteness) -> Bool

    Literal

    pub(all) enum Literal {
    BoolLiteral(Bool)
    CharLiteral(Char)
    StringLiteral(String)
    IntegerLiteral(String)
    FloatLiteral(Double)
    DecimalLiteral(String)
    DocumentLiteral(
    Data
    )
    } derive(Eq,
    Debug
    )

    Integers and decimals retain their original lexemes, including arbitrary precision.

    Literal::equal

    fn Literal::equal(Literal, Literal) -> Bool

    Literal::not_equal

    fn Literal::not_equal(x : Literal, y : Literal) -> Bool

    Literal::to_repr

    NativeHint

    pub(all) enum NativeHint {
    Arithmetic
    Comparison
    StringOp
    CollectionOp
    PlatformSpecific(String)
    } derive(Eq,
    Debug
    )

    NativeHint::equal

    fn NativeHint::equal(NativeHint, NativeHint) -> Bool

    NativeHint::not_equal

    fn NativeHint::not_equal(x : NativeHint, y : NativeHint) -> Bool

    NativeInfo

    pub(all) struct NativeInfo {
    hint : NativeHint
    description : String?
    } derive(Eq,
    Debug
    )

    NativeInfo::equal

    fn NativeInfo::equal(NativeInfo, NativeInfo) -> Bool

    NativeInfo::not_equal

    fn NativeInfo::not_equal(x : NativeInfo, y : NativeInfo) -> Bool

    PackageDefinition

    PackageDefinition::equal

    PackageDefinition::not_equal

    fn PackageDefinition::not_equal(x : PackageDefinition, y : PackageDefinition) -> Bool

    PackageDefinition::required_types

    fn PackageDefinition::required_types(self : PackageDefinition) -> Array[Type]

    PackageSpecification

    pub(all) struct PackageSpecification {
    modules : Map[
    Path
    , ModuleSpecification]
    } derive(Eq,
    Debug
    )

    PackageSpecification::equal

    PackageSpecification::not_equal

    PackageSpecification::required_types

    fn PackageSpecification::required_types(self : PackageSpecification) -> Array[Type]

    Pattern

    Pattern::equal

    fn Pattern::equal(Pattern, Pattern) -> Bool

    Pattern::not_equal

    fn Pattern::not_equal(x : Pattern, y : Pattern) -> Bool

    Pattern::to_repr

    PatternLiteral

    pub(all) enum PatternLiteral {
    BoolLiteral(Bool)
    CharLiteral(Char)
    StringLiteral(String)
    IntegerLiteral(String)
    FloatLiteral(Double)
    DecimalLiteral(String)
    } derive(Eq,
    Debug
    )

    Document literals cannot occur in a literal pattern.

    PatternLiteral::equal

    PatternLiteral::not_equal

    fn PatternLiteral::not_equal(x : PatternLiteral, y : PatternLiteral) -> Bool

    SourceLocation

    pub(all) struct SourceLocation {
    start_line : Int
    start_column : Int
    end_line : Int
    end_column : Int
    } derive(Eq,
    Debug
    )

    SourceLocation::equal

    SourceLocation::not_equal

    fn SourceLocation::not_equal(x : SourceLocation, y : SourceLocation) -> Bool

    Type

    Type::equal

    fn Type::equal(Type, Type) -> Bool

    Type::has_union

    fn Type::has_union(self : Type) -> Bool

    Whether native Union occurs in this authored type. This does not expand references.

    Type::not_equal

    fn Type::not_equal(x : Type, y : Type) -> Bool

    Type::references

    Named type dependencies, including references under every alternative.

    Type::to_repr

    TypeAttributes

    pub(all) struct TypeAttributes {
    source : SourceLocation?
    constraints : Map[String,
    Data
    ]
    extensions : Map[String,
    Data
    ]
    } derive(Default, Eq,
    Debug
    )

    TypeAttributes::default

    TypeAttributes::equal

    TypeAttributes::is_unknown

    fn TypeAttributes::is_unknown(self : TypeAttributes) -> Bool

    Whether the attributes carry the unknown marker. A variable with the marker is not rigid: inference may solve it to any type. An extensible record with the marker has an unknown row variable.

    TypeAttributes::not_equal

    fn TypeAttributes::not_equal(x : TypeAttributes, y : TypeAttributes) -> Bool

    TypeAttributes::with_unknown

    fn TypeAttributes::with_unknown(self : TypeAttributes) -> TypeAttributes

    The attributes with the unknown marker added. The other extensions stay.

    TypeDefinition

    TypeDefinition::equal

    TypeDefinition::not_equal

    fn TypeDefinition::not_equal(x : TypeDefinition, y : TypeDefinition) -> Bool

    TypeDefinition::required_types

    fn TypeDefinition::required_types(self : TypeDefinition) -> Array[Type]

    TypeSpecification

    pub(all) struct TypeSpecification {
    annotations : Array[Annotation]
    body : TypeSpecificationBody
    } derive(Eq,
    Debug
    )

    TypeSpecification::equal

    TypeSpecification::not_equal

    fn TypeSpecification::not_equal(x : TypeSpecification, y : TypeSpecification) -> Bool

    TypeSpecification::required_types

    fn TypeSpecification::required_types(self : TypeSpecification) -> Array[Type]

    TypeSpecificationBody

    TypeSpecificationBody::equal

    TypeSpecificationBody::not_equal

    Value

    Value::equal

    fn Value::equal(Value, Value) -> Bool

    Value::not_equal

    fn Value::not_equal(x : Value, y : Value) -> Bool

    Value::required_types

    fn Value::required_types(self : Value) -> Array[Type]

    Types explicitly required by this expression, including nested definitions and pattern facts. Data and arbitrary extension payloads are never interpreted as type syntax.

    Value::to_repr

    ValueAttributes

    pub(all) struct ValueAttributes {
    source : SourceLocation?
    inferred_type : Type?
    extensions : Map[String,
    Data
    ]
    } derive(Default, Eq,
    Debug
    )

    ValueAttributes::default

    ValueAttributes::equal

    ValueAttributes::not_equal

    fn ValueAttributes::not_equal(x : ValueAttributes, y : ValueAttributes) -> Bool

    ValueDefinition

    Ordered inputs preserve parameter order independently of any wire map spelling.

    ValueDefinition::equal

    ValueDefinition::not_equal

    fn ValueDefinition::not_equal(x : ValueDefinition, y : ValueDefinition) -> Bool

    ValueDefinition::required_types

    fn ValueDefinition::required_types(self : ValueDefinition) -> Array[Type]

    ValueDefinition::to_specification

    fn ValueDefinition::to_specification(self : ValueDefinition) -> ValueSpecification?

    Incomplete definitions without an output type do not yet have a specification.

    ValueSpecification

    pub(all) struct ValueSpecification {
    annotations : Array[Annotation]
    inputs : Array[(
    Name
    , Type)]
    output : Type
    } derive(Eq,
    Debug
    )

    ValueSpecification::equal

    ValueSpecification::not_equal

    ValueSpecification::required_types

    fn ValueSpecification::required_types(self : ValueSpecification) -> Array[Type]

    INFERENCE_EXTENSION

    let INFERENCE_EXTENSION : String

    The extension key of the inference marker.

    UNKNOWN_MARKER

    let UNKNOWN_MARKER : String

    The value of INFERENCE_EXTENSION on a type variable that inference may solve to any type.

    is_classic_placeholder_name

    fn is_classic_placeholder_name(name :
    Name
    ) -> Bool

    Whether name is a morphir-elm let placeholder: t- and one or more digits, as in t-8. Classic IR cannot carry the unknown marker, so on such a variable the name has the same meaning.