diff --git a/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java b/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java index e77e03eae5bd..ab43b4c26038 100644 --- a/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java +++ b/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java @@ -3356,7 +3356,6 @@ private void insideRecord(Env env) throws IOException { } List members = cls.getMembers(); - Tree lastParam = null; for (Tree member : members) { if (member.getKind() == Tree.Kind.VARIABLE) { ModifiersTree modifiers = ((VariableTree) member).getModifiers(); @@ -3367,29 +3366,9 @@ private void insideRecord(Env env) throws IOException { if (paramPos == Diagnostic.NOPOS || offset <= paramPos) { break; } - lastParam = member; startPos = paramPos; } } - - if (lastParam != null) { - TokenSequence first = findFirstNonWhitespaceToken(env, startPos, offset); - if (first != null && first.token().id() == JavaTokenId.COMMA) { - controller.toPhase(Phase.ELEMENTS_RESOLVED); - env.addToExcludes(controller.getTrees().getElement(path)); - addTypes(env, EnumSet.of(INTERFACE, ANNOTATION_TYPE), null); - return; - } - if (first != null && first.token().id() == JavaTokenId.RPAREN) { - first = nextNonWhitespaceToken(first); - if (!tu.isInterface(cls) && first.token().id() == JavaTokenId.LBRACE) { - addKeyword(env, IMPLEMENTS_KEYWORD, SPACE, false); - } - - } - return; - } - } TypeParameterTree lastTypeParam = null; @@ -3405,7 +3384,7 @@ private void insideRecord(Env env) throws IOException { TokenSequence lastNonWhitespaceToken = findLastNonWhitespaceToken(env, startPos, offset); if (lastNonWhitespaceToken != null) { switch (lastNonWhitespaceToken.token().id()) { - case LPAREN: + case COMMA, LPAREN: addMemberModifiers(env, Collections.emptySet(), true); addClassTypes(env, null); break; diff --git a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/deprecated.pass b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/deprecated.pass new file mode 100644 index 000000000000..69d9f4564455 --- /dev/null +++ b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/deprecated.pass @@ -0,0 +1 @@ +Deprecated diff --git a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/typesStartingStr.pass b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/typesStartingStr.pass new file mode 100644 index 000000000000..f850003b429e --- /dev/null +++ b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/typesStartingStr.pass @@ -0,0 +1,5 @@ +StrictMath +String +StringBuffer +StringBuilder +StringIndexOutOfBoundsException diff --git a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/21/typesStartingStr.pass b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/21/typesStartingStr.pass new file mode 100644 index 000000000000..8f2578993e1f --- /dev/null +++ b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/21/typesStartingStr.pass @@ -0,0 +1,6 @@ +StrictMath +String +StringBuffer +StringBuilder +StringIndexOutOfBoundsException +StringTemplate diff --git a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/25/typesStartingStr.pass b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/25/typesStartingStr.pass new file mode 100644 index 000000000000..f850003b429e --- /dev/null +++ b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/25/typesStartingStr.pass @@ -0,0 +1,5 @@ +StrictMath +String +StringBuffer +StringBuilder +StringIndexOutOfBoundsException diff --git a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask116FeaturesTest.java b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask116FeaturesTest.java index f9493def699e..acb48603c0b4 100644 --- a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask116FeaturesTest.java +++ b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask116FeaturesTest.java @@ -81,6 +81,26 @@ public void testVariableNameSuggestion() throws Exception { performTest("Records", 1071, null, "recordVariableSuggestion.pass", SOURCE_LEVEL); } + public void testRecordFirstComponentType() throws Exception { + performTest("Records", 1036, "Str", "typesStartingStr.pass", SOURCE_LEVEL); + } + + public void testRecordSecondComponentType() throws Exception { + performTest("Records", 1036, "Exception a, Str", "typesStartingStr.pass", SOURCE_LEVEL); + } + + public void testRecordThirdComponentType() throws Exception { + performTest("Records", 1036, "Exception a, Exception b, Str", "typesStartingStr.pass", SOURCE_LEVEL); + } + + public void testRecordThirdComponentAnnotation() throws Exception { + performTest("Records", 1036, "Exception a, Exception b, @Dep", "deprecated.pass", SOURCE_LEVEL); + } + + public void testRecordThirdComponentAnnotationThenType() throws Exception { + performTest("Records", 1036, "Exception a, Exception b, @Deprecated Str", "typesStartingStr.pass", SOURCE_LEVEL); + } + static { JavacParser.DISABLE_SOURCE_LEVEL_DOWNGRADE = true; }