From f5aa2eb74982a5cc61fbda940c00644bdd5a31d9 Mon Sep 17 00:00:00 2001 From: Katarzyna Marek Date: Wed, 13 Sep 2023 18:57:40 +0200 Subject: [PATCH] bugfix: handle EOF in java completions --- .../scala/meta/internal/pc/JavaCompletionProvider.scala | 4 +++- .../scala/meta/internal/mtags/JavaToplevelMtags.scala | 2 +- .../src/test/scala/pc/CompletionKeywordSuite.scala | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/mtags-java/src/main/scala/scala/meta/internal/pc/JavaCompletionProvider.scala b/mtags-java/src/main/scala/scala/meta/internal/pc/JavaCompletionProvider.scala index 326c3de1ec4..b1fe39e9382 100644 --- a/mtags-java/src/main/scala/scala/meta/internal/pc/JavaCompletionProvider.scala +++ b/mtags-java/src/main/scala/scala/meta/internal/pc/JavaCompletionProvider.scala @@ -36,7 +36,9 @@ class JavaCompletionProvider( lazy val identifier = extractIdentifier.toLowerCase def completions(): CompletionList = { val nextIsWhitespace = - params.text().charAt(params.offset()).isWhitespace + if (params.offset() < params.text().length()) + params.text().charAt(params.offset()).isWhitespace + else false val textWithSemicolon = if (nextIsWhitespace) params.text().substring(0, params.offset()) + diff --git a/mtags/src/main/scala/scala/meta/internal/mtags/JavaToplevelMtags.scala b/mtags/src/main/scala/scala/meta/internal/mtags/JavaToplevelMtags.scala index 8a5bf0550e4..80fee852cfb 100644 --- a/mtags/src/main/scala/scala/meta/internal/mtags/JavaToplevelMtags.scala +++ b/mtags/src/main/scala/scala/meta/internal/mtags/JavaToplevelMtags.scala @@ -80,7 +80,7 @@ class JavaToplevelMtags(val input: Input.VirtualFile) extends MtagsIndexer { @tailrec def kwOrIdent(start: Int, builder: StringBuilder): Token = { val ch = reader.ch - if (Character.isJavaIdentifierPart(ch)) { + if (ch != SU && Character.isJavaIdentifierPart(ch)) { reader.nextChar() kwOrIdent(start, builder.append(ch)) } else if (builder.isEmpty) { diff --git a/tests/javapc/src/test/scala/pc/CompletionKeywordSuite.scala b/tests/javapc/src/test/scala/pc/CompletionKeywordSuite.scala index fb1ea5686cc..820a7a85ffa 100644 --- a/tests/javapc/src/test/scala/pc/CompletionKeywordSuite.scala +++ b/tests/javapc/src/test/scala/pc/CompletionKeywordSuite.scala @@ -53,6 +53,15 @@ class CompletionKeywordSuite extends BaseJavaCompletionSuite { |""".stripMargin, ) + check( + "end of file", + """ + |pac@@""".stripMargin, + """ + |package + |""".stripMargin, + ) + check( "extends", """