Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable inlay hints under ghost location #1290

Merged
merged 3 commits into from
May 29, 2024
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
Loading