@@ -261,6 +261,7 @@ let push_node r n =
261
261
262
262
263
263
let rec lookup_type_by_name
264
+ ?loc :loc
264
265
(cx :ctxt )
265
266
(scopes :scope list )
266
267
(recur :recur_info )
@@ -302,7 +303,7 @@ let rec lookup_type_by_name
302
303
begin
303
304
fun i t ->
304
305
let t =
305
- resolve_type cx scopes recur t
306
+ resolve_type ?loc:loc cx scopes recur t
306
307
in
307
308
iflog cx (fun _ -> log cx
308
309
" lookup_type_by_name resolved arg %d to %a" i
@@ -325,16 +326,15 @@ let rec lookup_type_by_name
325
326
(Fmt. fmt_to_str Ast. fmt_app_args args);
326
327
end;
327
328
let ty =
328
- rebuild_ty_under_params
329
- ~node_id: (id_of_scope (List. hd scopes))
330
- cx None ty params args true
329
+ rebuild_ty_under_params ?node_id:loc cx None ty params args true
331
330
in
332
331
iflog cx (fun _ -> log cx " --- lookup_type_by_name %a ==> %a"
333
332
Ast. sprintf_name name
334
333
Ast. sprintf_ty ty);
335
334
(scopes', id, ty)
336
335
337
336
and resolve_type
337
+ ?loc :loc
338
338
(cx :ctxt )
339
339
(scopes :(scope list) )
340
340
(recur :recur_info )
@@ -344,7 +344,7 @@ and resolve_type
344
344
let base = ty_fold_rebuild (fun t -> t) in
345
345
let ty_fold_named name =
346
346
let (scopes, node, t) =
347
- lookup_type_by_name cx scopes recur name
347
+ lookup_type_by_name ?loc:loc cx scopes recur name
348
348
in
349
349
iflog cx (fun _ ->
350
350
log cx " resolved type name '%a' to item %d with ty %a"
@@ -356,7 +356,7 @@ and resolve_type
356
356
let recur = push_node recur node in
357
357
iflog cx (fun _ -> log cx " recursively resolving type %a"
358
358
Ast. sprintf_ty t);
359
- resolve_type cx scopes recur t
359
+ resolve_type ?loc:loc cx scopes recur t
360
360
in
361
361
let fold =
362
362
{ base with
@@ -379,7 +379,8 @@ let type_resolving_visitor
379
379
let tinfos = Hashtbl. create 0 in
380
380
381
381
let resolve_ty (t :Ast.ty ) : Ast.ty =
382
- resolve_type cx (! scopes) empty_recur_info t
382
+ resolve_type ~loc: (id_of_scope (List. hd (! scopes)))
383
+ cx (! scopes) empty_recur_info t
383
384
in
384
385
385
386
let resolve_slot (s :Ast.slot ) : Ast.slot =
@@ -412,7 +413,7 @@ let type_resolving_visitor
412
413
let resolve_and_store_type _ =
413
414
let t = ty_of_mod_item item in
414
415
let ty =
415
- resolve_type cx (! scopes) empty_recur_info t
416
+ resolve_type ~loc: item.id cx (! scopes) empty_recur_info t
416
417
in
417
418
log cx " resolved item %s, type as %a" id Ast. sprintf_ty ty;
418
419
htab_put cx.ctxt_all_item_types item.id ty;
@@ -422,7 +423,7 @@ let type_resolving_visitor
422
423
match item.node.Ast. decl_item with
423
424
Ast. MOD_ITEM_type (_ , ty ) ->
424
425
let ty =
425
- resolve_type cx (! scopes) empty_recur_info ty
426
+ resolve_type ~loc: item.id cx (! scopes) empty_recur_info ty
426
427
in
427
428
log cx " resolved item %s, defining type %a"
428
429
id Ast. sprintf_ty ty;
@@ -468,7 +469,7 @@ let type_resolving_visitor
468
469
469
470
let visit_obj_fn_pre obj ident fn =
470
471
let fty =
471
- resolve_type cx (! scopes)
472
+ resolve_type ~loc: fn.id cx (! scopes)
472
473
empty_recur_info (Ast. TY_fn (ty_fn_of_fn fn.node))
473
474
in
474
475
log cx " resolved obj fn %s as %a" ident Ast. sprintf_ty fty;
0 commit comments