@@ -64,65 +64,89 @@ let rec getAttributePayload checkText (attributes : Typedtree.attributes) =
64
64
in
65
65
match attributes with
66
66
| [] -> None
67
- | ({Asttypes. txt} , payload ) :: _tl when checkText txt -> (
67
+ | ({txt; loc} , payload ) :: _tl when checkText txt -> (
68
+ let payload =
69
+ match payload with
70
+ | PStr [] -> Some UnrecognizedPayload
71
+ | PStr ({pstr_desc = Pstr_eval (expr , _ )} :: _ ) -> expr |> fromExpr
72
+ | PStr ({pstr_desc = Pstr_extension _ } :: _ ) -> Some UnrecognizedPayload
73
+ | PStr ({pstr_desc = Pstr_value _ } :: _ ) -> Some UnrecognizedPayload
74
+ | PStr ({pstr_desc = Pstr_primitive _ } :: _ ) -> Some UnrecognizedPayload
75
+ | PStr ({pstr_desc = Pstr_type _ } :: _ ) -> Some UnrecognizedPayload
76
+ | PStr ({pstr_desc = Pstr_typext _ } :: _ ) -> Some UnrecognizedPayload
77
+ | PStr ({pstr_desc = Pstr_exception _ } :: _ ) -> Some UnrecognizedPayload
78
+ | PStr ({pstr_desc = Pstr_module _ } :: _ ) -> Some UnrecognizedPayload
79
+ | PStr ({pstr_desc = Pstr_recmodule _ } :: _ ) -> Some UnrecognizedPayload
80
+ | PStr ({pstr_desc = Pstr_modtype _ } :: _ ) -> Some UnrecognizedPayload
81
+ | PStr ({pstr_desc = Pstr_open _ } :: _ ) -> Some UnrecognizedPayload
82
+ | PStr ({pstr_desc = Pstr_class _ } :: _ ) -> Some UnrecognizedPayload
83
+ | PStr ({pstr_desc = Pstr_class_type _ } :: _ ) -> Some UnrecognizedPayload
84
+ | PStr ({pstr_desc = Pstr_include _ } :: _ ) -> Some UnrecognizedPayload
85
+ | PStr ({pstr_desc = Pstr_attribute _ } :: _ ) -> Some UnrecognizedPayload
86
+ | PPat _ -> Some UnrecognizedPayload
87
+ | PSig _ -> Some UnrecognizedPayload
88
+ | PTyp _ -> Some UnrecognizedPayload
89
+ in
68
90
match payload with
69
- | PStr [] -> Some UnrecognizedPayload
70
- | PStr ({pstr_desc = Pstr_eval (expr , _ )} :: _ ) -> expr |> fromExpr
71
- | PStr ({pstr_desc = Pstr_extension _ } :: _ ) -> Some UnrecognizedPayload
72
- | PStr ({pstr_desc = Pstr_value _ } :: _ ) -> Some UnrecognizedPayload
73
- | PStr ({pstr_desc = Pstr_primitive _ } :: _ ) -> Some UnrecognizedPayload
74
- | PStr ({pstr_desc = Pstr_type _ } :: _ ) -> Some UnrecognizedPayload
75
- | PStr ({pstr_desc = Pstr_typext _ } :: _ ) -> Some UnrecognizedPayload
76
- | PStr ({pstr_desc = Pstr_exception _ } :: _ ) -> Some UnrecognizedPayload
77
- | PStr ({pstr_desc = Pstr_module _ } :: _ ) -> Some UnrecognizedPayload
78
- | PStr ({pstr_desc = Pstr_recmodule _ } :: _ ) -> Some UnrecognizedPayload
79
- | PStr ({pstr_desc = Pstr_modtype _ } :: _ ) -> Some UnrecognizedPayload
80
- | PStr ({pstr_desc = Pstr_open _ } :: _ ) -> Some UnrecognizedPayload
81
- | PStr ({pstr_desc = Pstr_class _ } :: _ ) -> Some UnrecognizedPayload
82
- | PStr ({pstr_desc = Pstr_class_type _ } :: _ ) -> Some UnrecognizedPayload
83
- | PStr ({pstr_desc = Pstr_include _ } :: _ ) -> Some UnrecognizedPayload
84
- | PStr ({pstr_desc = Pstr_attribute _ } :: _ ) -> Some UnrecognizedPayload
85
- | PPat _ -> Some UnrecognizedPayload
86
- | PSig _ -> Some UnrecognizedPayload
87
- | PTyp _ -> Some UnrecognizedPayload )
91
+ | None -> None
92
+ | Some payload -> Some (loc, payload))
88
93
| _hd :: tl -> getAttributePayload checkText tl
89
94
90
95
let getGenTypeAsRenaming attributes =
91
96
match attributes |> getAttributePayload tagIsGenTypeAs with
92
- | Some (StringPayload s ) -> Some s
97
+ | Some (_ , StringPayload s ) -> Some s
93
98
| None -> (
94
99
match attributes |> getAttributePayload tagIsGenType with
95
- | Some (StringPayload s ) -> Some s
100
+ | Some (_ , StringPayload s ) -> Some s
96
101
| _ -> None )
97
102
| _ -> None
98
103
104
+ (* This is not supported anymore: only use to give a warning *)
105
+ let checkUnsupportedGenTypeAsRenaming attributes =
106
+ let error ~loc =
107
+ Log_.Color. setup () ;
108
+ Log_. info ~loc ~name: " Warning genType" (fun ppf () ->
109
+ Format. fprintf ppf
110
+ " @\n \
111
+ @genType.as is not supported anymore in type definitions. Use @as \
112
+ from the language." )
113
+ in
114
+ match attributes |> getAttributePayload tagIsGenTypeAs with
115
+ | Some (loc , _ ) -> error ~loc
116
+ | None -> (
117
+ match attributes |> getAttributePayload tagIsGenType with
118
+ | Some (loc , _ ) -> error ~loc
119
+ | None -> () )
120
+
99
121
let getBsAsRenaming attributes =
100
122
match attributes |> getAttributePayload tagIsBsAs with
101
- | Some (StringPayload s ) -> Some s
123
+ | Some (_ , StringPayload s ) -> Some s
102
124
| _ -> None
103
125
104
126
let getBsAsInt attributes =
105
127
match attributes |> getAttributePayload tagIsBsAs with
106
- | Some (IntPayload s ) -> (
128
+ | Some (_ , IntPayload s ) -> (
107
129
try Some (int_of_string s) with Failure _ -> None )
108
130
| _ -> None
109
131
110
132
let getAttributeImportRenaming attributes =
111
133
let attributeImport = attributes |> getAttributePayload tagIsGenTypeImport in
112
134
let genTypeAsRenaming = attributes |> getGenTypeAsRenaming in
113
135
match (attributeImport, genTypeAsRenaming) with
114
- | Some (StringPayload importString ), _ ->
136
+ | Some (_ , StringPayload importString ), _ ->
115
137
(Some importString, genTypeAsRenaming)
116
138
| ( Some
117
- (TuplePayload [StringPayload importString; StringPayload renameString]),
139
+ ( _,
140
+ TuplePayload [StringPayload importString; StringPayload renameString]
141
+ ),
118
142
_ ) ->
119
143
(Some importString, Some renameString)
120
144
| _ -> (None , genTypeAsRenaming)
121
145
122
146
let getDocString attributes =
123
147
let docPayload = attributes |> getAttributePayload tagIsOcamlDoc in
124
148
match docPayload with
125
- | Some (StringPayload docString ) -> " /** " ^ docString ^ " */\n "
149
+ | Some (_ , StringPayload docString ) -> " /** " ^ docString ^ " */\n "
126
150
| _ -> " "
127
151
128
152
let hasAttribute checkText (attributes : Typedtree.attributes ) =
@@ -133,7 +157,7 @@ let fromAttributes ~loc (attributes : Typedtree.attributes) =
133
157
else if hasAttribute (fun s -> tagIsGenType s || tagIsGenTypeAs s) attributes
134
158
then (
135
159
(match attributes |> getAttributePayload tagIsGenType with
136
- | Some UnrecognizedPayload -> ()
160
+ | Some ( _ , UnrecognizedPayload) -> ()
137
161
| Some _ ->
138
162
Log_.Color. setup () ;
139
163
Log_. info ~loc ~name: " Warning genType" (fun ppf () ->
0 commit comments