123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380openOdoc_model.PathsopenOdoc_model.NamesmodulerecResolved:sigtypeparent=[`Moduleofmodule_|`ModuleTypeofmodule_type|`FragmentRoot]andmodule_=[`LocalofIdent.path_module|`IdentifierofIdentifier.Path.Module.t|`Substitutedofmodule_|`Substofmodule_type*module_|`Hiddenofmodule_|`Moduleofparent*ModuleName.t|`Canonicalofmodule_*Cpath.module_|`Applyofmodule_*module_|`Aliasofmodule_*module_|`OpaqueModuleofmodule_]andmodule_type=[`LocalofIdent.module_type|`Substitutedofmodule_type|`IdentifierofIdentifier.ModuleType.t|`ModuleTypeofparent*ModuleTypeName.t|`SubstTofmodule_type*module_type|`AliasModuleTypeofmodule_type*module_type|`CanonicalModuleTypeofmodule_type*Cpath.module_type|`OpaqueModuleTypeofmodule_type]andtype_=[`LocalofIdent.path_type|`IdentifierofOdoc_model.Paths.Identifier.Path.Type.t|`Substitutedoftype_|`CanonicalTypeoftype_*Cpath.type_|`Typeofparent*TypeName.t|`Classofparent*ClassName.t|`ClassTypeofparent*ClassTypeName.t]andclass_type=[`LocalofIdent.path_class_type|`Substitutedofclass_type|`IdentifierofOdoc_model.Paths.Identifier.Path.ClassType.t|`Classofparent*ClassName.t|`ClassTypeofparent*ClassTypeName.t]end=ResolvedandCpath:sigtypemodule_=[`ResolvedofResolved.module_|`Substitutedofmodule_|`LocalofIdent.path_module*bool|`IdentifierofIdentifier.Path.Module.t*bool|`Rootofstring|`Forwardofstring|`Dotofmodule_*string|`ModuleofResolved.parent*ModuleName.t(* Like dot, but typed *)|`Applyofmodule_*module_]andmodule_type=[`ResolvedofResolved.module_type|`Substitutedofmodule_type|`LocalofIdent.module_type*bool|`IdentifierofIdentifier.ModuleType.t*bool|`Dotofmodule_*string|`ModuleTypeofResolved.parent*ModuleTypeName.t]andtype_=[`ResolvedofResolved.type_|`Substitutedoftype_|`LocalofIdent.path_type*bool|`IdentifierofOdoc_model.Paths.Identifier.Path.Type.t*bool|`Dotofmodule_*string|`TypeofResolved.parent*TypeName.t|`ClassofResolved.parent*ClassName.t|`ClassTypeofResolved.parent*ClassTypeName.t]andclass_type=[`ResolvedofResolved.class_type|`Substitutedofclass_type|`LocalofIdent.path_class_type*bool|`IdentifierofOdoc_model.Paths.Identifier.Path.ClassType.t*bool|`Dotofmodule_*string|`ClassofResolved.parent*ClassName.t|`ClassTypeofResolved.parent*ClassTypeName.t]end=CpathincludeCpathletrecis_resolved_module_substituted:Resolved.module_->bool=function|`Local_->false|`Substituted_->true|`Identifier_->false|`Subst(_a,_)->false(* is_resolved_module_type_substituted a*)|`Hiddena|`Canonical(a,_)|`Apply(a,_)|`Alias(a,_)->is_resolved_module_substituteda|`Module(a,_)->is_resolved_parent_substituteda|`OpaqueModulea->is_resolved_module_substitutedaandis_resolved_parent_substituted=function|`Modulem->is_resolved_module_substitutedm|`ModuleTypem->is_resolved_module_type_substitutedm|`FragmentRoot->falseandis_resolved_module_type_substituted:Resolved.module_type->bool=function|`Local_->false|`Substituted_->true|`Identifier_->false|`ModuleType(a,_)->is_resolved_parent_substituteda|`SubstT_->false|`AliasModuleType(m1,_)->is_resolved_module_type_substitutedm1|`CanonicalModuleType(m,_)|`OpaqueModuleTypem->is_resolved_module_type_substitutedmandis_resolved_type_substituted:Resolved.type_->bool=function|`Local_->false|`Substituted_->true|`Identifier_->false|`CanonicalType(t,_)->is_resolved_type_substitutedt|`Type(a,_)|`Class(a,_)|`ClassType(a,_)->is_resolved_parent_substitutedaandis_resolved_class_type_substituted:Resolved.class_type->bool=function|`Local_->false|`Substituted_->true|`Identifier_->false|`Class(a,_)|`ClassType(a,_)->is_resolved_parent_substitutedaletrecis_module_substituted:module_->bool=function|`Resolveda->is_resolved_module_substituteda|`Identifier_->false|`Local_->false|`Substituted_->true|`Dot(a,_)|`Apply(a,_)->is_module_substituteda|`Forward_->false|`Root_->false|`Module(a,_)->is_resolved_parent_substitutedaletis_module_type_substituted:module_type->bool=function|`Resolveda->is_resolved_module_type_substituteda|`Identifier_->false|`Local_->false|`Substituted_->true|`Dot(a,_)->is_module_substituteda|`ModuleType(a,_)->is_resolved_parent_substitutedaletis_type_substituted:type_->bool=function|`Resolveda->is_resolved_type_substituteda|`Identifier_->false|`Local_->false|`Substituted_->true|`Dot(a,_)->is_module_substituteda|`Type(a,_)|`Class(a,_)|`ClassType(a,_)->is_resolved_parent_substitutedaletis_class_type_substituted:class_type->bool=function|`Resolveda->is_resolved_class_type_substituteda|`Identifier_->false|`Local_->false|`Substituted_->true|`Dot(a,_)->is_module_substituteda|`Class(a,_)|`ClassType(a,_)->is_resolved_parent_substitutedaletrecis_module_forward:module_->bool=function|`Forward_->true|`Resolved_->false|`Root_->false|`Identifier_->false|`Local_->false|`Substitutedp|`Dot(p,_)|`Apply(p,_)->is_module_forwardp|`Module(_,_)->falseletrecis_module_hidden:module_->bool=function|`Resolvedr->is_resolved_module_hidden~weak_canonical_test:falser|`Substitutedp|`Dot(p,_)|`Apply(p,_)->is_module_hiddenp|`Identifier(_,b)->b|`Local(_,b)->b|`Forward_->false|`Root_->false|`Module(p,_)->is_resolved_parent_hidden~weak_canonical_test:falsepandis_resolved_module_hidden:weak_canonical_test:bool->Resolved.module_->bool=fun~weak_canonical_test->letrecinner=function|`Local_->false|`Identifier(`Module(_,t))whenModuleName.is_internalt->true|`Identifier(`Module_)->false|`Identifier_->false|`Hidden_->true|`Canonical(_,`Resolved_)->false|`Canonical(p,_)->weak_canonical_test||innerp|`Substitutedp|`Apply(p,_)->innerp|`Module(p,_)->is_resolved_parent_hidden~weak_canonical_testp|`Subst(p1,p2)->is_resolved_module_type_hiddenp1||innerp2|`Alias(p1,p2)->innerp1||innerp2|`OpaqueModulem->innermininnerandis_resolved_parent_hidden:weak_canonical_test:bool->Resolved.parent->bool=fun~weak_canonical_test->function|`Modulem->is_resolved_module_hidden~weak_canonical_testm|`ModuleTypem->is_resolved_module_type_hiddenm|`FragmentRoot->falseandis_module_type_hidden:module_type->bool=function|`Resolvedr->is_resolved_module_type_hiddenr|`Identifier(id,b)->b||is_resolved_module_type_hidden(`Identifierid)|`Local(_,b)->b|`Substitutedp->is_module_type_hiddenp|`Dot(p,_)->is_module_hiddenp|`ModuleType(p,_)->is_resolved_parent_hidden~weak_canonical_test:falsepandis_resolved_module_type_hidden:Resolved.module_type->bool=function|`Local_->false|`Identifier(`ModuleType(_,t))whenModuleTypeName.is_internalt->true|`Identifier(`ModuleType_)->false|`Substitutedp->is_resolved_module_type_hiddenp|`ModuleType(p,_)->is_resolved_parent_hidden~weak_canonical_test:falsep|`SubstT(p1,p2)->is_resolved_module_type_hiddenp1||is_resolved_module_type_hiddenp2|`AliasModuleType(p1,p2)->is_resolved_module_type_hiddenp1||is_resolved_module_type_hiddenp2|`CanonicalModuleType(_,`Resolved_)->false|`CanonicalModuleType(p,_)->is_resolved_module_type_hiddenp|`OpaqueModuleTypem->is_resolved_module_type_substitutedmandis_type_hidden:type_->bool=function|`Resolvedr->is_resolved_type_hiddenr|`Identifier(id,b)->b||is_resolved_type_hidden(`Identifier(id:>Identifier.Path.Type.t))|`Local(_,b)->b|`Substitutedp->is_type_hiddenp|`Dot(p,_)->is_module_hiddenp|`Type(p,_)|`Class(p,_)|`ClassType(p,_)->is_resolved_parent_hidden~weak_canonical_test:falsepandis_resolved_type_hidden:Resolved.type_->bool=function|`Local_->false|`Identifier(`Type(_,t))whenTypeName.is_internalt->true|`Identifier(`ClassType(_,t))whenClassTypeName.is_internalt->true|`Identifier(`Class(_,t))whenClassName.is_internalt->true|`Identifier(`Type(_,_))->false|`Identifier(`ClassType(_,_))->false|`Identifier(`Class(_,_))->false|`Identifier(`CoreType_)->false|`Substitutedp->is_resolved_type_hiddenp|`CanonicalType(_,`Resolved_)->false|`CanonicalType(p,_)->is_resolved_type_hiddenp|`Type(p,_)|`Class(p,_)|`ClassType(p,_)->is_resolved_parent_hidden~weak_canonical_test:falsepandis_resolved_class_type_hidden:Resolved.class_type->bool=function|`Local_->false|`Identifier(`ClassType(_,t))whenClassTypeName.is_internalt->true|`Identifier(`Class(_,t))whenClassName.is_internalt->true|`Identifier(`ClassType_)->false|`Identifier(`Class(_,_))->false|`Substitutedp->is_resolved_class_type_hiddenp|`Class(p,_)|`ClassType(p,_)->is_resolved_parent_hidden~weak_canonical_test:falsepandis_class_type_hidden:class_type->bool=function|`Resolvedr->is_resolved_class_type_hiddenr|`Identifier(_,b)->b|`Local(_,b)->b|`Substitutedp->is_class_type_hiddenp|`Dot(p,_)->is_module_hiddenp|`Class(p,_)|`ClassType(p,_)->is_resolved_parent_hidden~weak_canonical_test:falsepletrecresolved_module_of_resolved_module_reference:Reference.Resolved.Module.t->Resolved.module_=function|`Module(parent,name)->`Module(`Module(resolved_module_of_resolved_signature_referenceparent),name)|`Identifieri->`Identifieri|`Alias(_m1,_m2)->failwith"gah"|`Hiddens->`Hidden(resolved_module_of_resolved_module_references)|`Canonical(m1,m2)->`Canonical(resolved_module_of_resolved_module_referencem1,module_of_module_referencem2)andresolved_module_of_resolved_signature_reference:Reference.Resolved.Signature.t->Resolved.module_=function|`Identifier(#Identifier.Module.tasi)->`Identifieri|(`Alias_|`Canonical_|`Module_|`Hidden_)asr'->resolved_module_of_resolved_module_referencer'|`ModuleType(_,n)->failwith("Not a module reference: "^ModuleTypeName.to_stringn)|`AliasModuleType_->failwith"Not a module reference: aliasmoduletype"|`Identifier_->failwith"Not a module reference : identifier"andmodule_of_module_reference:Reference.Module.t->module_=function|`Resolvedr->`Resolved(resolved_module_of_resolved_module_referencer)|`Root(_,_)->failwith"unhandled"|`Dot(((`Resolved(`Identifier#Identifier.Module.t)|`Dot(_,_)|`Module(_,_))asparent),name)->`Dot(module_of_module_referenceparent,name)|`Module(((`Resolved(`Identifier#Identifier.Module.t)|`Dot(_,_)|`Module(_,_))asparent),name)->`Dot(module_of_module_referenceparent,ModuleName.to_stringname)|_->failwith"Not a module reference"letrecunresolve_resolved_module_path:Resolved.module_->module_=function|`Hidden(`Identifierx)->`Identifier(x,true)|`Identifierx->`Identifier(x,false)|`Hidden(`Localx)->`Local(x,true)|`Localx->`Local(x,false)|`Substitutedx->unresolve_resolved_module_pathx|`Subst(_,x)->unresolve_resolved_module_pathx|`Hiddenx->unresolve_resolved_module_pathx(* should assert false here *)|`Module(p,m)->`Dot(unresolve_resolved_parent_pathp,ModuleName.to_stringm)|`Canonical(m,_)->unresolve_resolved_module_pathm|`Apply(m,a)->`Apply(unresolve_resolved_module_pathm,unresolve_resolved_module_patha)|`Alias(_,m)->unresolve_resolved_module_pathm|`OpaqueModulem->unresolve_resolved_module_pathmandunresolve_resolved_module_type_path:Resolved.module_type->module_type=function|(`Local_|`Identifier_)asp->`Resolvedp|`Substitutedx->unresolve_resolved_module_type_pathx|`ModuleType(p,n)->`Dot(unresolve_resolved_parent_pathp,ModuleTypeName.to_stringn)|`SubstT(_,m)->unresolve_resolved_module_type_pathm|`AliasModuleType(_,m2)->unresolve_resolved_module_type_pathm2|`CanonicalModuleType(p,_)->unresolve_resolved_module_type_pathp|`OpaqueModuleTypem->unresolve_resolved_module_type_pathmandunresolve_resolved_parent_path:Resolved.parent->module_=function|`Modulem->unresolve_resolved_module_pathm|`FragmentRoot|`ModuleType_->assertfalseandunresolve_resolved_type_path:Resolved.type_->type_=function|(`Identifier_|`Local_)asp->`Resolvedp|`Substitutedx->unresolve_resolved_type_pathx|`CanonicalType(t1,_)->unresolve_resolved_type_patht1|`Type(p,n)->`Dot(unresolve_resolved_parent_pathp,TypeName.to_stringn)|`Class(p,n)->`Dot(unresolve_resolved_parent_pathp,ClassName.to_stringn)|`ClassType(p,n)->`Dot(unresolve_resolved_parent_pathp,ClassTypeName.to_stringn)andunresolve_resolved_class_type_path:Resolved.class_type->class_type=function|(`Local_|`Identifier_)asp->`Resolvedp|`Substitutedx->unresolve_resolved_class_type_pathx|`Class(p,n)->`Dot(unresolve_resolved_parent_pathp,ClassName.to_stringn)|`ClassType(p,n)->`Dot(unresolve_resolved_parent_pathp,ClassTypeName.to_stringn)andunresolve_module_path:module_->module_=function|`Resolvedm->unresolve_resolved_module_pathm|y->yandunresolve_module_type_path:module_type->module_type=function|`Resolvedm->unresolve_resolved_module_type_pathm|y->yandunresolve_type_path:type_->type_=function|`Resolvedm->unresolve_resolved_type_pathm|y->yandunresolve_class_type_path:class_type->class_type=function|`Resolvedm->unresolve_resolved_class_type_pathm|y->y