Skip to content

Commit 2629921

Browse files
authored
fix: import completion after meta import (#8704)
The details of `identWithPartialTrailingDot` prevent a robust approach using quotations.
1 parent e123b32 commit 2629921

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/Lean/Server/Completion/ImportCompletion.lean

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,18 @@ def AvailableImports.toImportTrie (imports : AvailableImports) : ImportTrie := I
2424
importTrie := importTrie.insert i i
2525
return importTrie
2626

27-
/-- Checks whether `completionPos` points at the position after an incomplete `import` statement. -/
2827
def isImportNameCompletionRequest (headerStx : TSyntax ``Parser.Module.header) (completionPos : String.Pos) : Bool := Id.run do
2928
let `(Parser.Module.header| $[module]? $[prelude]? $importsStx*) := headerStx
3029
| return false
31-
importsStx.anyM fun
32-
| `(Parser.Module.import| $[private]? $[meta]? import%$importCmd $[all%$allTk?]? $importId) =>
33-
let keywordsTailPos := allTk?.bind (·.getTailPos?) <|> importCmd.getTailPos?
34-
return importId.raw.isMissing && keywordsTailPos.isSome && completionPos == keywordsTailPos.get! + ' '
35-
| _ => unreachable!
30+
return importsStx.any fun importStx => Id.run do
31+
let importStx := importStx.raw
32+
-- `importStx[0] == "private"?`
33+
-- `importStx[1] == "meta"?`
34+
let importCmd := importStx[2]
35+
let allTk? := importStx[3].getOptional?
36+
let importId := importStx[4]
37+
let keywordsTailPos := allTk?.bind (·.getTailPos?) <|> importCmd.getTailPos?
38+
return importId.isMissing && keywordsTailPos.isSome && completionPos == keywordsTailPos.get! + ' '
3639

3740
/-- Checks whether `completionPos` points at a free space in the header. -/
3841
def isImportCmdCompletionRequest (headerStx : TSyntax ``Parser.Module.header) (completionPos : String.Pos) : Bool := Id.run do

0 commit comments

Comments
 (0)