@@ -151,8 +151,12 @@ let mkuplus ~oploc name arg =
151
151
152
152
let local_ext_loc loc = mkloc " extension.local" loc
153
153
154
+ let mk_attr ~loc name payload =
155
+ Builtin_attributes. (register_attr Parser name);
156
+ Attr. mk ~loc name payload
157
+
154
158
let local_attr loc =
155
- Builtin_attributes. mk_internal ~loc (local_ext_loc loc) (PStr [] )
159
+ mk_attr ~loc (local_ext_loc loc) (PStr [] )
156
160
157
161
let local_extension loc =
158
162
Exp. mk ~loc: Location. none
@@ -161,8 +165,7 @@ let local_extension loc =
161
165
let include_functor_ext_loc loc = mkloc " extension.include_functor" loc
162
166
163
167
let include_functor_attr loc =
164
- Builtin_attributes. mk_internal ~loc: loc (include_functor_ext_loc loc)
165
- (PStr [] )
168
+ mk_attr ~loc: loc (include_functor_ext_loc loc) (PStr [] )
166
169
167
170
let mkexp_stack ~loc ~kwd_loc exp =
168
171
ghexp ~loc (Pexp_apply (local_extension (make_loc kwd_loc), [Nolabel , exp]))
@@ -189,8 +192,7 @@ let wrap_exp_local_if p exp loc =
189
192
if p then wrap_exp_stack exp (make_loc loc) else exp
190
193
191
194
let curry_attr loc =
192
- Builtin_attributes. mk_internal ~loc: Location. none
193
- (mkloc " extension.curry" loc) (PStr [] )
195
+ mk_attr ~loc: Location. none (mkloc " extension.curry" loc) (PStr [] )
194
196
195
197
let is_curry_attr attr =
196
198
attr.attr_name.txt = " extension.curry"
@@ -208,12 +210,12 @@ let maybe_curry_typ typ loc =
208
210
let global_loc loc = mkloc " extension.global" loc
209
211
210
212
let global_attr loc =
211
- Builtin_attributes. mk_internal ~loc: loc (global_loc loc) (PStr [] )
213
+ mk_attr ~loc: loc (global_loc loc) (PStr [] )
212
214
213
215
let nonlocal_loc loc = mkloc " extension.nonlocal" loc
214
216
215
217
let nonlocal_attr loc =
216
- Builtin_attributes. mk_internal ~loc: Location. none (nonlocal_loc loc) (PStr [] )
218
+ mk_attr ~loc: Location. none (nonlocal_loc loc) (PStr [] )
217
219
218
220
let mkld_global ld loc =
219
221
{ ld with pld_attributes = global_attr loc :: ld .pld_attributes }
@@ -4177,17 +4179,17 @@ attr_id:
4177
4179
) { $1 }
4178
4180
;
4179
4181
attribute:
4180
- LBRACKETAT attr_id payload RBRACKET
4181
- { Builtin_attributes.mk_internal ~loc:(make_loc $sloc) $2 $3 }
4182
+ LBRACKETAT attr_id attr_payload RBRACKET
4183
+ { mk_attr ~loc:(make_loc $sloc) $2 $3 }
4182
4184
;
4183
4185
post_item_attribute:
4184
- LBRACKETATAT attr_id payload RBRACKET
4185
- { Builtin_attributes.mk_internal ~loc:(make_loc $sloc) $2 $3 }
4186
+ LBRACKETATAT attr_id attr_payload RBRACKET
4187
+ { mk_attr ~loc:(make_loc $sloc) $2 $3 }
4186
4188
;
4187
4189
floating_attribute:
4188
- LBRACKETATATAT attr_id payload RBRACKET
4190
+ LBRACKETATATAT attr_id attr_payload RBRACKET
4189
4191
{ mark_symbol_docs $sloc;
4190
- Builtin_attributes.mk_internal ~loc:(make_loc $sloc) $2 $3 }
4192
+ mk_attr ~loc:(make_loc $sloc) $2 $3 }
4191
4193
;
4192
4194
%inline post_item_attributes:
4193
4195
post_item_attribute*
@@ -4227,4 +4229,10 @@ payload:
4227
4229
| QUESTION pattern { PPat ($2, None) }
4228
4230
| QUESTION pattern WHEN seq_expr { PPat ($2, Some $4) }
4229
4231
;
4232
+ attr_payload:
4233
+ payload
4234
+ { Builtin_attributes.mark_payload_attrs_used $1;
4235
+ $1
4236
+ }
4237
+ ;
4230
4238
%%
0 commit comments