@@ -596,3 +596,74 @@ and module_binding = {
596
596
pmb_loc : Location .t ;
597
597
}
598
598
(* X = ME *)
599
+
600
+ module Legacy = struct
601
+ let rec expression (e : expression ) : Parsetree0.expression =
602
+ {
603
+ pexp_desc = expression_desc e.pexp_desc;
604
+ pexp_loc = e.pexp_loc;
605
+ pexp_attributes = attributes e.pexp_attributes;
606
+ }
607
+
608
+ and expression_desc (_e : expression_desc ) : Parsetree0.expression_desc =
609
+ assert false
610
+
611
+ and expression_option (e : expression option ) : Parsetree0.expression option =
612
+ Option. map expression e
613
+
614
+ and attributes (a : attributes ) : Parsetree0.attributes = List. map attribute a
615
+
616
+ and attribute ((lbl , p ) : attribute ) : Parsetree0.attribute = (lbl, payload p)
617
+
618
+ and payload (p : payload ) : Parsetree0.payload =
619
+ match p with
620
+ | PStr s -> PStr (structure s)
621
+ | PPat (p , l ) -> PPat (pattern p, expression_option l)
622
+ | PTyp t -> PTyp (core_type t)
623
+ | PSig s -> PSig (signature s)
624
+
625
+ and structure (s : structure ) : Parsetree0.structure =
626
+ List. map structure_item s
627
+
628
+ and structure_item (_i : structure_item ) : Parsetree0.structure_item =
629
+ assert false
630
+
631
+ and signature (s : signature ) : Parsetree0.signature =
632
+ List. map signature_item s
633
+
634
+ and signature_item (_i : signature_item ) : Parsetree0.signature_item =
635
+ assert false
636
+
637
+ and pattern (_p : pattern ) : Parsetree0.pattern = assert false
638
+
639
+ and core_type (t : core_type ) : Parsetree0.core_type =
640
+ {
641
+ ptyp_desc = core_type_desc t.ptyp_desc;
642
+ ptyp_loc = t.ptyp_loc;
643
+ ptyp_attributes = attributes t.ptyp_attributes;
644
+ }
645
+
646
+ and core_type_desc (d : core_type_desc ) : Parsetree0.core_type_desc =
647
+ match d with
648
+ | Ptyp_any -> Ptyp_any
649
+ | Ptyp_var s -> Ptyp_var s
650
+ | Ptyp_arrow (lbl , t1 , t2 ) -> Ptyp_arrow (lbl, core_type t1, core_type t2)
651
+ | Ptyp_tuple tl -> Ptyp_tuple (List. map core_type tl)
652
+ | Ptyp_constr (lid , tl ) -> Ptyp_constr (lid, List. map core_type tl)
653
+ | Ptyp_object (fields , closed ) ->
654
+ Ptyp_object (List. map object_field fields, closed)
655
+ | Ptyp_class () -> Ptyp_class ()
656
+ | Ptyp_alias (t , lid ) -> Ptyp_alias (core_type t, lid)
657
+ | Ptyp_variant (row_fields , closed , labels ) ->
658
+ Ptyp_variant (List. map row_field row_fields, closed, labels)
659
+ | Ptyp_poly (s , t ) -> Ptyp_poly (s, core_type t)
660
+ | Ptyp_package (lid , tl ) ->
661
+ Ptyp_package (lid, List. map (fun (l , t ) -> (l, core_type t)) tl)
662
+ | Ptyp_extension ext -> Ptyp_extension (extension ext)
663
+
664
+ and object_field (_f : object_field ) : Parsetree0.object_field = assert false
665
+
666
+ and row_field (_f : row_field ) : Parsetree0.row_field = assert false
667
+
668
+ and extension (_e : extension ) : Parsetree0.extension = assert false
669
+ end
0 commit comments