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 7cf25ed54e07..e77e03eae5bd 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 @@ -2218,6 +2218,9 @@ private void insideNewClass(Env env) throws IOException { case GTGTGT: controller = env.getController(); TypeMirror tm = controller.getTrees().getTypeMirror(new TreePath(path, nc.getIdentifier())); + if (tm.getKind() == TypeKind.ERROR) { + tm = env.getController().getTrees().getOriginalType((ErrorType) tm); + } addMembers(env, tm, ((DeclaredType) tm).asElement(), EnumSet.of(CONSTRUCTOR), null, false, false, false, true, addSwitchItemDefault); break; } diff --git a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/diamond1.pass b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/diamond1.pass new file mode 100644 index 000000000000..488d6ffd6f56 --- /dev/null +++ b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/diamond1.pass @@ -0,0 +1,2 @@ +public Test(T value) +public Test(String name, T value) diff --git a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask18FeaturesTest.java b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask18FeaturesTest.java index d36656a73820..0f3077788a61 100644 --- a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask18FeaturesTest.java +++ b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask18FeaturesTest.java @@ -346,6 +346,21 @@ public void testEffectivellyFinal() throws Exception { performTest("Final", 1125, "var", "effectivellyFinal.pass", "1.8"); } + public void testDiamond1() throws Exception { + performTest("Empty", 808, + """ + package test; + public class Test { + public static class Test { + public Test(T value) { } + public Test(String name, T value) { } + } + private static void test() { + new Test<> + """, + "diamond1.pass", "1.8"); + } + static { JavacParser.DISABLE_SOURCE_LEVEL_DOWNGRADE = true; }