


The compiler Module_Level_Declarations api defines access to functionlity tracking modules in the compilation process. (In this context, a “module” is essentially what you get from compiling one sourcefile.)
The Module_Level_Declarations api is implemented by the module_level_declarations package.
The Module_Level_Declarations api source code is in src/lib/compiler/front/typer-stuff/modules/module.api.
See also: Module_Junk.
The above information is manually maintained and may contain errors.
api { Share_Spec = List(symbol_path::Symbol_Path );
Api = API Api_Record | ERRONEOUS_API;
Api_Element
= GENERIC_IN_API {a_generic_api:Generic_Api, module_stamp:stamp::Stamp,
slot:Int}
| PACKAGE_IN_API {an_api:Api,
definition:Null_Or(((Package_Definition , Int)) ),
module_stamp:stamp::Stamp, slot:Int}
| TYP_IN_API {is_a_replica:Bool, module_stamp:stamp::Stamp,
scope:Int, typ:types::Typ}
| VALCON_IN_API {datatype:types::Valcon, slot:Null_Or(Int )}
| VALUE_IN_API {slot:Int, type:types::Type};
Generic_Api
= ERRONEOUS_GENERIC_API
| GENERIC_API {body_api:Api, kind:Null_Or(symbol::Symbol ),
parameter_api:Api,
parameter_symbol:Null_Or(symbol::Symbol ),
parameter_variable:stamp::Stamp};
External_Definition
= EXTERNAL_DEFINITION_OF_PACKAGE (symbol_path::Symbol_Path , Package_Definition)
| EXTERNAL_DEFINITION_OF_TYP {extdef_is_relative:Bool,
extdef_path:symbol_path::Symbol_Path,
extdef_typ:types::Typ};
Package_Definition
= CONSTANT_PACKAGE_DEFINITION Package
| VARIABLE_PACKAGE_DEFINITION (Api , ?.stamppath::Stamppath);
Package
= A_PACKAGE Package_Record
| ERRONEOUS_PACKAGE
| PACKAGE_API {an_api:Api, stamppath:?.stamppath::Stamppath};
Generic = ERRONEOUS_GENERIC | GENERIC Generic_Record;
Typerstore_Entry
= ERRONEOUS_ENTRY
| GENERIC_ENTRY Typechecked_Generic
| PACKAGE_ENTRY Typechecked_Package
| TYP_ENTRY Typechecked_Typ;
Generic_Closure
= GENERIC_CLOSURE {body_package_expression:Package_Expression,
parameter_module_stamp:stamp::Stamp,
typerstore:Typerstore};
Stamp_Expression
= GET_STAMP Package_Expression | MAKE_STAMP;
Typechecked_Typ_Expression
= CONSTANT_TYP types::Typ
| FORMAL_TYP types::Typ
| TYPE_VARIABLE_TYP ?.stamppath::Stamppath;
Package_Expression
= ABSTRACT_PACKAGE (Api , Package_Expression)
| APPLY (Generic_Expression , Package_Expression)
| COERCED_PACKAGE {boundvar:stamp::Stamp, coercion:Package_Expression,
raw:Package_Expression}
| CONSTANT_PACKAGE Typechecked_Package
| FORMAL_PACKAGE Generic_Api
| PACKAGE {module_declaration:Module_Declaration,
stamp:Stamp_Expression}
| PACKAGE_LET {declaration:Module_Declaration,
expression:Package_Expression}
| VARIABLE_PACKAGE ?.stamppath::Stamppath;
Generic_Expression
= CONSTANT_GENERIC Typechecked_Generic
| LAMBDA {body:Package_Expression, parameter:stamp::Stamp}
| LAMBDA_TP {an_api:Generic_Api, body:Package_Expression,
parameter:stamp::Stamp}
| LET_GENERIC (Module_Declaration , Generic_Expression)
| VARIABLE_GENERIC ?.stamppath::Stamppath;
Module_Expression
= DUMMY_GENERIC_EVALUATION_EXPRESSION
| ERRONEOUS_ENTRY_EXPRESSION
| GENERIC_EXPRESSION Generic_Expression
| PACKAGE_EXPRESSION Package_Expression
| TYP_EXPRESSION Typechecked_Typ_Expression;
Module_Declaration
= EMPTY_GENERIC_EVALUATION_DECLARATION
| ERRONEOUS_ENTRY_DECLARATION
| GENERIC_DECLARATION (stamp::Stamp , Generic_Expression)
| LOCAL_DECLARATION (Module_Declaration , Module_Declaration)
| PACKAGE_DECLARATION (stamp::Stamp , Package_Expression , symbol::Symbol)
| SEQUENTIAL_DECLARATIONS List(Module_Declaration )
| TYP_DECLARATION (stamp::Stamp , Typechecked_Typ_Expression);
Typerstore
= ERRONEOUS_ENTRY_DICTIONARY
| MARKED_TYPERSTORE Typerstore_Record
| NAMED_TYPERSTORE (?.stamppath::Map(Typerstore_Entry ) , Typerstore)
| NULL_TYPERSTORE;
Modtree
= API_MODTREE_NODE Api_Record
| GENERIC_MODTREE_NODE Generic_Record
| MODTREE_BRANCH List(Modtree )
| PACKAGE_MODTREE_NODE Package_Record
| PLAIN_TYP_MODTREE_NODE types::Plain_Typ_Record
| TYPERSTORE_MODTREE_NODE Typerstore_Record;
Stub_Info = {is_lib:Bool, modtree:Modtree,
owner:picklehash::Picklehash};
Api_Record = {api_elements:List(((symbol::Symbol , Api_Element)) ),
closed:Bool, contains_generic:Bool,
name:Null_Or(symbol::Symbol ),
package_sharing:List(Share_Spec ),
property_list:property_list::Property_List,
stamp:stamp::Stamp, stub:Null_Or(Stub_Info ),
symbols:List(symbol::Symbol ),
type_sharing:List(Share_Spec )};
Typerstore_Record = {stamp:stamp::Stamp, stub:Null_Or(Stub_Info ),
typerstore:Typerstore};
Typechecked_Package = {inverse_path:?.inverse_path::Inverse_Path,
property_list:property_list::Property_List,
stamp:stamp::Stamp, stub:Null_Or(Stub_Info ),
typerstore:Typerstore};
Package_Record = {an_api:Api,
inlining_info:inlining_information::Inlining_Information,
typechecked_package:Typechecked_Package,
varhome:varhome::Varhome};
Typechecked_Generic =
{generic_closure:Generic_Closure,
inverse_path:?.inverse_path::Inverse_Path,
property_list:property_list::Property_List,
stamp:stamp::Stamp, stub:Null_Or(Stub_Info ),
typ_path:Null_Or(types::Typ_Path )};
Generic_Record = {a_generic_api:Generic_Api,
inlining_info:inlining_information::Inlining_Information,
typechecked_generic:Typechecked_Generic,
varhome:varhome::Varhome};
Typechecked_Typ = types::Typ;
Api_Elements =
List(((symbol::Symbol , Api_Element)) );
bogus_typechecked_package : Typechecked_Package;
bogus_typechecked_generic : Typechecked_Generic;
};


