Skip to content

Commit ca44329

Browse files
datho7561rgrunber
authored andcommitted
Do not suggest import keyword before package declaration
eg. `import` should not be suggested as a completion at the `|`: ```java imp| package dev.datho7561.utils; public class HelloWorld { } ``` Fixes eclipse-jdt#3799 Signed-off-by: David Thompson <davthomp@redhat.com>
1 parent 16d5f9f commit ca44329

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9177,7 +9177,7 @@ public void testCompletionKeywordImport7() throws JavaModelException {
91779177
cu.codeComplete(cursorLocation, requestor);
91789178

91799179
assertEquals(
9180-
"element:import completion:import relevance:"+(R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE+ R_NON_RESTRICTED),
9180+
"",
91819181
requestor.getResults());
91829182
}
91839183
public void testCompletionKeywordImport8() throws JavaModelException {

org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2164,9 +2164,12 @@ public void complete(ICompilationUnit sourceUnit, int completionPosition, int ad
21642164
contextAccepted = true;
21652165
buildContext(importReference, null, parsedUnit, null, null);
21662166
if(!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
2167-
setSourceAndTokenRange(importReference.sourceStart, importReference.sourceEnd);
2168-
CompletionOnKeyword keyword = (CompletionOnKeyword)importReference;
2169-
findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), false, parsedUnit.currentPackage != null);
2167+
// do not suggest `import` or `package` keywords if the cursor is before an existing package declaration
2168+
if (parsedUnit.currentPackage == null || importReference.sourceStart >= parsedUnit.currentPackage.sourceStart) {
2169+
setSourceAndTokenRange(importReference.sourceStart, importReference.sourceEnd);
2170+
CompletionOnKeyword keyword = (CompletionOnKeyword)importReference;
2171+
findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), false, parsedUnit.currentPackage != null);
2172+
}
21702173
}
21712174
debugPrintf();
21722175
return;

0 commit comments

Comments
 (0)