From 67c44e47df1d068e923b821029418f3eaf5dc617 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 21 Feb 2011 16:59:18 +0100 Subject: [PATCH] forbid diamonds on non-parameterized types (javac should be fixed accordingly) --- .../daemon/impl/analysis/GenericsHighlightUtil.java | 3 +++ .../daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java index 519151b2189f..2d272ee14ae3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java @@ -112,6 +112,9 @@ public class GenericsHighlightUtil { if (referenceParameterList != null) { referenceElements = referenceParameterList.getTypeParameterElements(); if (referenceElements.length == 1 && referenceElements[0].getType() instanceof PsiDiamondType) { + if (!typeParameterListOwner.hasTypeParameters()) { + return HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, referenceElements[0], "Diamond operator is not applicable for non-parameterized types"); + } inferenceResult = ((PsiDiamondType)referenceElements[0].getType()).resolveInferredTypes(); final String errorMessage = inferenceResult.getErrorMessage(); if (errorMessage != null) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java index d802f473b299..1258a5350bf8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java @@ -67,3 +67,9 @@ class MyTest { } } } + +class NonParameterized { + void foo() { + new NonParameterized<>(); + } +}