don't suggest to replace annotated type elements with diamond (IDEA-207586)

This commit is contained in:
Bas Leijdekkers
2019-02-22 15:32:54 +01:00
parent 7042612210
commit 767bf19c4a
2 changed files with 31 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.codeInspection;
import com.intellij.codeInsight.daemon.GroupNames;
@@ -52,6 +52,11 @@ public class ExplicitTypeCanBeDiamondInspection extends AbstractBaseJavaLocalIns
LOG.assertTrue(classReference != null);
final PsiReferenceParameterList parameterList = classReference.getParameterList();
LOG.assertTrue(parameterList != null);
for (PsiTypeElement typeElement : parameterList.getTypeParameterElements()) {
if (typeElement.getAnnotations().length > 0) {
return;
}
}
final PsiElement firstChild = parameterList.getFirstChild();
final PsiElement lastChild = parameterList.getLastChild();
final TextRange range = new TextRange(firstChild != null && firstChild.getNode().getElementType() == JavaTokenType.LT ? 1 : 0,

View File

@@ -0,0 +1,25 @@
// "Replace with <>" "false"
class XYZ {
@Target({ElementType.TYPE_USE, ElementType.METHOD})
public @interface Nullable {}
public final static class Wrapper<T> {
private final T value;
public Wrapper(T value) {
this.value = value;
}
}
@Nullable
public static String getString() {
return ThreadLocalRandom.current().nextBoolean() ? "hello" : null;
}
public static <T> void genericConsumer(T item) {}
public static void main(String[] args) {
genericConsumer(new Wrapper<@Nullable<caret>s String>(getString()));
// below one works great
Wrapper<@Nullable String> wrapper = new Wrapper<>(getString());
}
}