@@ -652,19 +652,19 @@ let rec type_module = (~toplevel=false, anchor, env, statements) => {
652652 ] ,
653653 );
654654 | PProvideType ({name: {txt: IdentName (name )}, alias, loc}) =>
655- let (type_id , _ ) = Typetexp . find_type(env , loc , IdentName (name)) ;
656- switch (alias) {
657- | Some ({txt : IdentName ( alias )}) =>
658- type_export_aliases :=
659- [
660- (type_id , PIdent ( Ident . create(alias. txt))) ,
661- ... type_export_aliases^,
662- ]
663- | Some ( _ ) => failwith ( "Impossible: invalid alias" )
664- | None => ( )
665- } ;
666- let type_ = Env . find_type(type_id , env) ;
667- ([ TSigType (Path . head(type_id) , type_, TRecNot ), ... sigs] , stmts);
655+ let (type_path , type_ ) =
656+ Typetexp . find_type(env , loc , IdentName (name)) ;
657+ let id =
658+ switch (alias) {
659+ | Some ({txt : IdentName ( alias )}) =>
660+ let id = Ident . create(alias. txt);
661+ type_export_aliases :=
662+ [ (type_path , PIdent (id)) , ... type_export_aliases ^ ] ;
663+ id ;
664+ | Some ( _ ) => failwith ( "Impossible: invalid alias" )
665+ | None => Ident . create( Path . last(type_path))
666+ } ;
667+ ([ TSigType (id , type_, TRecNot ), ... sigs] , stmts);
668668 | PProvideModule ({name: {txt: IdentName (name )}, alias, loc}) =>
669669 let (mod_path , mod_decl ) =
670670 Typetexp . find_module(env, loc, IdentName (name));
@@ -934,7 +934,11 @@ let rec type_module = (~toplevel=false, anchor, env, statements) => {
934934 switch (get_alias(type_export_aliases^, PIdent (id))) {
935935 | None => TSigType (id, resolve_type_decl(decl), rs)
936936 | Some ((name , alias )) =>
937- TSigType (Path . head(alias), resolve_type_decl(decl), rs)
937+ TSigType (
938+ Ident . create(Path . last(alias)),
939+ resolve_type_decl(decl),
940+ rs,
941+ )
938942 }
939943 | TSigValue (id , {val_type, val_kind} as vd ) =>
940944 let val_kind =
0 commit comments