Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions ocaml-lsp-server/src/inlay_hints.ml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ let hint_binding_iter ?(hint_let_bindings = false)
| Texp_match (expr, cases, _) ->
iter.expr iter expr;
List.iter cases ~f:(case hint_pattern_variables iter)
(* Stop iterating when we see a ghost location to avoid annotating generated code *)
| _ when e.exp_loc.loc_ghost -> ()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't the case be above the Tstr_match and continue iteration with the default iterator?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What makes you say that? Continuing with the default iterator will create inlay hints on the generated code.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right!
Wouldn't it be possible for this to break the test suite because it's expressed in ‘expected’ tests, which de facto gives them a ghost location?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That seems to be what's happening. When I build within Jane Street, the tests work fine (presumably because the document is created with non-ghost locations), but building with external libraries causes this issue where the test document has ghost locations. I'm trying to track down the source of the difference.

| _ -> I.default_iterator.expr iter e
in

Expand All @@ -65,6 +67,8 @@ let hint_binding_iter ?(hint_let_bindings = false)
| Typedtree.Tstr_value (_, vbs) ->
List.iter vbs ~f:(fun (vb : Typedtree.value_binding) ->
expr iter vb.vb_expr)
(* Stop iterating when we see a ghost location to avoid annotating generated code *)
| _ when item.str_loc.loc_ghost -> ()
| _ -> I.default_iterator.structure_item iter item
in
let pat (type k) iter (pat : k Typedtree.general_pattern) =
Expand Down