PreviousUpNext

14.5.48  Type_Declaration_Types

The compiler Type_Declaration_Types api defines access to type representation and manipulation functionality used in the front end.

The Type_Declaration_Types api is implemented by the type_declaration_types package.

The Type_Declaration_Types api source code is in src/lib/compiler/front/typer-stuff/types/type-declaration-types.api.

The above information is manually maintained and may contain errors.

api {
    Label;
    Typescheme_Eqflags;
        package e
          : api {
                Is_Eqtype  = CHUNK | DATA | INDETERMINATE | NO | UNDEF | YES;};;
    Literal_Kind  = CHAR | FLOAT | INT | STRING | UNT;
        Typevar
        = INCOMPLETE_RECORD_TYPEVAR
        {eq:Bool, fn_nesting:Int, known_fields:List(((Label , Typoid)) )}
        |
        LITERAL_TYPEVAR
        {kind:Literal_Kind, source_code_region:line_number_db::Source_Code_Region}
        |
        META_TYPEVAR
        {eq:Bool, fn_nesting:Int}
        |
        OVERLOADED_TYPEVAR
        Bool
        |
        RESOLVED_TYPEVAR
        Typoid
        |
        TYPEVAR_MARK
        Int
        |
        USER_TYPEVAR
        {eq:Bool, fn_nesting:Int, name:symbol::Symbol};
        Typepath
        = TYPEPATH_APPLY
        (Typepath , List(Typepath ))
        |
        TYPEPATH_GENERIC
        (List(Typepath ) , List(Typepath ))
        |
        TYPEPATH_SELECT
        (Typepath , Int)
        |
        TYPEPATH_TYPE
        Type
        |
        TYPEPATH_VARIABLE
        Exception;
        Typekind
        = ABSTRACT
        Type
        |
        BASE
        Int
        |
        FLEXIBLE_TYPE
        Typepath
        |
        FORMAL
        |
        SUMTYPE {family:Sumtype_Family, free_types:List(Type ), index:Int, root:Null_Or(stamp::Stamp ),
                stamps:?.Vector(stamp::Stamp )}
        |
        TEMP;
        Type
        = ERRONEOUS_TYPE
        |
        FREE_TYPE
        Int
        |
        NAMED_TYPE
                {namepath:?.inverse_path::Inverse_Path, stamp:stamp::Stamp, strict:List(Bool ),
                typescheme:Typescheme}
        |
        RECORD_TYPE
        List(Label )
        |
        RECURSIVE_TYPE
        Int
        |
        SUM_TYPE
        Sumtype_Record
        |
        TYPE_BY_STAMPPATH
        {arity:Int, namepath:?.inverse_path::Inverse_Path, stamppath:?.stamppath::Stamppath};
        Typoid
        = TYPCON_TYPOID
        (Type , List(Typoid ))
        |
        TYPESCHEME_ARG
        Int
        |
        TYPESCHEME_TYPOID
        {typescheme:Typescheme, typescheme_eqflags:Typescheme_Eqflags}
        |
        TYPEVAR_REF
        Typevar_Ref
        |
        UNDEFINED_TYPOID
        |
        WILDCARD_TYPOID;
    Typescheme  = TYPESCHEME {arity:Int, body:Typoid};
    Valcon_Info  = {domain:Null_Or(Typoid ), form:varhome::Valcon_Form, name:symbol::Symbol};
          Sumtype_Member  =
                {an_api:varhome::Valcon_Signature, arity:Int, is_eqtype:Ref(e::Is_Eqtype ), is_lazy:Bool,
                name_symbol:symbol::Symbol, valcons:List(Valcon_Info )};
          Sumtype_Family  =
          {members:?.Vector(Sumtype_Member ), mkey:stamp::Stamp, property_list:property_list::Property_List};
    Stub_Info  = {is_lib:Bool, owner:picklehash::Picklehash};
          Sumtype_Record  =
                {arity:Int, is_eqtype:Ref(e::Is_Eqtype ), kind:Typekind, namepath:?.inverse_path::Inverse_Path,
                stamp:stamp::Stamp, stub:Null_Or(Stub_Info )};
    Typevar_Ref  = {id:Int, ref_typevar:Ref(Typevar )};
    infinity : Int;
    copy_typevar_ref : Typevar_Ref -> Typevar_Ref;
    make_typevar_ref : (Typevar , List(String )) -> Typevar_Ref;
    make_typevar_ref' : (Ref(Typevar ) , List(String )) -> Typevar_Ref;
        Valcon
        = VALCON        {form:varhome::Valcon_Form, is_constant:Bool, is_lazy:Bool, name:symbol::Symbol,
                        signature:varhome::Valcon_Signature, typoid:Typoid};};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext