leanprover / leanprover/lean4

Missing unknown identifier code action in specific situation

Open
#8,838 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug P-medium
Dominant language
Lean
Stars
9.2k
Forks
990
Avg merge
1d 17h
Merged PRs (30d)
175

Description

Prerequisites

Please put an X between the brackets as you perform the following steps:

Description

Consider a file A.lean containing

namespace A.B

structure C.D where
  foo : Nat

end A.B

Now consider a file Basic.lean containing

namespace A.B.E

structure F.C where
  cd : C.D

end A.B.E

C.D is an unknown identifier, so I would like to do Ctrl+. and get an offer to import A.lean. This usually works, but in this specific situation it doesn't: no code action is offered. If the structure isn't called F.C but something else (like F.H), then the code action works.

Context

I ran into this while working on Grove.

Steps to Reproduce
  1. https://github.com/TwoFX/import-autocomplete-test
  2. Navigate to the C.D in line 4 of Basic.lean
  3. Press Ctrl+.
  4. Nothing happens

Expected behavior: Code action offers to import A.lean

Actual behavior: Nothing happens

Versions

4.20.1 and nightly-2025-06-09.

Impact

Add 👍 to issues you consider important. If others are impacted by this issue, please ask them to add 👍 to it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue in the linked import-autocomplete-test project, using A.lean and Basic.lean as shown and invoking Ctrl+. on C.D. Then trace Lean 4's unknown-identifier code action handling for this case; done means the action offers to import A.lean when C.D is selected.

Written by the indexing model from the issue text.

Assessment

Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.