mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
java unchecked warning: narrow down highlighting to class/method reference (IDEA-203860)
GitOrigin-RevId: ee686cedeef7aa677445b5054c9e191ce1d15a77
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c9fe57714a
commit
67839b3676
@@ -19,6 +19,7 @@ import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.resolve.graphInference.PsiPolyExpressionUtil;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import org.intellij.lang.annotations.Pattern;
|
||||
import org.jdom.Element;
|
||||
@@ -188,7 +189,16 @@ public class UncheckedWarningLocalInspection extends AbstractBaseJavaLocalInspec
|
||||
final String referenceName = ((PsiMethodCallExpression)callExpression).getMethodExpression().getReferenceName();
|
||||
message += ". Reason: '" + rawExpression + "' has raw type, so result of " + referenceName + " is erased";
|
||||
}
|
||||
holder.registerProblem(psiElement, message, quickFixes);
|
||||
|
||||
PsiElement element2Highlight = null;
|
||||
if (psiElement instanceof PsiNewExpression) {
|
||||
element2Highlight = ((PsiNewExpression)psiElement).getClassOrAnonymousClassReference();
|
||||
}
|
||||
else if (psiElement instanceof PsiMethodCallExpression) {
|
||||
element2Highlight = ((PsiMethodCallExpression)psiElement).getMethodExpression();
|
||||
}
|
||||
|
||||
holder.registerProblem(ObjectUtils.notNull(element2Highlight, psiElement), message, quickFixes);
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -284,10 +294,7 @@ public class UncheckedWarningLocalInspection extends AbstractBaseJavaLocalInspec
|
||||
final String description = getUncheckedCallDescription(callExpression, result);
|
||||
if (description != null) {
|
||||
if (IGNORE_UNCHECKED_CALL) return;
|
||||
final PsiExpression element = callExpression instanceof PsiMethodCallExpression
|
||||
? ((PsiMethodCallExpression)callExpression).getMethodExpression()
|
||||
: callExpression;
|
||||
registerProblem(description, null, element, myGenerifyFixes);
|
||||
registerProblem(description, null, callExpression, myGenerifyFixes);
|
||||
}
|
||||
else {
|
||||
if (IGNORE_UNCHECKED_ASSIGNMENT) return;
|
||||
|
||||
@@ -14,14 +14,14 @@ public class DefaultEventSource<<warning descr="Type parameter 'T' is never used
|
||||
|
||||
@Override
|
||||
List<String> getList() {
|
||||
return <warning descr="Unchecked assignment: 'java.util.List' to 'java.util.List<java.lang.String>'. Reason: 'super' has raw type, so result of getList is erased">super.getList()</warning>;
|
||||
return <warning descr="Unchecked assignment: 'java.util.List' to 'java.util.List<java.lang.String>'. Reason: 'super' has raw type, so result of getList is erased">super.getList</warning>();
|
||||
}
|
||||
|
||||
void f(DefaultEventSource source){
|
||||
final Iterator<String> <warning descr="Variable 'keys' is never used">keys</warning> = <warning descr="Unchecked assignment: 'java.util.Iterator' to 'java.util.Iterator<java.lang.String>'. Reason: 'source' has raw type, so result of getKeys is erased">source. getKeys()</warning>;
|
||||
final Iterator<String> <warning descr="Variable 'keys' is never used">keys</warning> = <warning descr="Unchecked assignment: 'java.util.Iterator' to 'java.util.Iterator<java.lang.String>'. Reason: 'source' has raw type, so result of getKeys is erased">source. getKeys</warning>();
|
||||
final Iterator<String> <warning descr="Variable 'keys1' is never used">keys1</warning> = <warning descr="Unchecked cast: 'java.util.Iterator' to 'java.util.Iterator<java.lang.String>'. Reason: 'source' has raw type, so result of getKeys is erased">(Iterator<String>)source.getKeys()</warning>;
|
||||
final Iterator<String> <warning descr="Variable 'keys2' is assigned but never accessed">keys2</warning>;
|
||||
keys2 = <warning descr="Unchecked assignment: 'java.util.Iterator' to 'java.util.Iterator<java.lang.String>'. Reason: 'source' has raw type, so result of getKeys is erased">source.getKeys()</warning>;
|
||||
keys2 = <warning descr="Unchecked assignment: 'java.util.Iterator' to 'java.util.Iterator<java.lang.String>'. Reason: 'source' has raw type, so result of getKeys is erased">source.getKeys</warning>();
|
||||
|
||||
for (<error descr="Incompatible types. Found: 'java.lang.String', required: 'java.lang.Object'">String <warning descr="Parameter 'o' is never used">o</warning></error> : super.getList()) {}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import java.util.List;
|
||||
class Test{
|
||||
static class Model<K>{
|
||||
Model( Model<? super K> model ){
|
||||
this( <warning descr="Unchecked assignment: 'java.util.List' to 'java.util.List<Test.Model<K>>'">list( <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<Test.Model<? super java.lang.Object>>'">(ArrayList)model.get()</warning> )</warning> );
|
||||
this( <warning descr="Unchecked assignment: 'java.util.List' to 'java.util.List<Test.Model<K>>'">list</warning>( <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<Test.Model<? super java.lang.Object>>'">(ArrayList)model.get()</warning> ) );
|
||||
}
|
||||
Model( List<Model<K>> list ){
|
||||
System.out.println(list);
|
||||
@@ -17,7 +17,7 @@ class Test{
|
||||
}
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
Model model = <warning descr="Unchecked call to 'Model(List<Model<K>>)' as a member of raw type 'Test.Model'">new Model(new ArrayList())</warning>;
|
||||
System.out.println(<warning descr="Unchecked call to 'Model(Model<? super K>)' as a member of raw type 'Test.Model'">new Model(model)</warning>);
|
||||
Model model = new <warning descr="Unchecked call to 'Model(List<Model<K>>)' as a member of raw type 'Test.Model'">Model</warning>(new ArrayList());
|
||||
System.out.println(new <warning descr="Unchecked call to 'Model(Model<? super K>)' as a member of raw type 'Test.Model'">Model</warning>(model));
|
||||
}
|
||||
}
|
||||
@@ -87,11 +87,11 @@ class e {
|
||||
|
||||
class ccc {
|
||||
static Comparable<? super ccc> f() {
|
||||
return <warning descr="Unchecked assignment: 'anonymous java.lang.Comparable' to 'java.lang.Comparable<? super ccc>'">new Comparable () {
|
||||
return new <warning descr="Unchecked assignment: 'anonymous java.lang.Comparable' to 'java.lang.Comparable<? super ccc>'">Comparable</warning> () {
|
||||
public int compareTo(final Object o) {
|
||||
return 0;
|
||||
}
|
||||
}</warning>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class X {
|
||||
void f(Class<? extends Class> aClass) throws ClassNotFoundException {
|
||||
Class<String> classOfString = <warning descr="Unchecked assignment: 'capture<? extends java.lang.Class>' to 'java.lang.Class<java.lang.String>'">aClass.cast(Long.class)</warning>;
|
||||
Class<String> classOfString = <warning descr="Unchecked assignment: 'capture<? extends java.lang.Class>' to 'java.lang.Class<java.lang.String>'">aClass.cast</warning>(Long.class);
|
||||
System.out.println(classOfString);
|
||||
}
|
||||
}
|
||||
@@ -110,7 +110,7 @@ class Example {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<Boolean> list = <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.Boolean>'">new ArrayList()</warning>;
|
||||
List<Boolean> list = new <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.Boolean>'">ArrayList</warning>();
|
||||
System.out.println(list);
|
||||
assertThat(new ArrayList<Boolean>(), hasSize(0));
|
||||
}
|
||||
|
||||
@@ -98,11 +98,11 @@ class e {
|
||||
|
||||
class ccc {
|
||||
static Comparable<? super ccc> f() {
|
||||
return <warning descr="Unchecked assignment: 'anonymous java.lang.Comparable' to 'java.lang.Comparable<? super ccc>'">new Comparable () {
|
||||
return new <warning descr="Unchecked assignment: 'anonymous java.lang.Comparable' to 'java.lang.Comparable<? super ccc>'">Comparable</warning> () {
|
||||
public int compareTo(final Object o) {
|
||||
return 0;
|
||||
}
|
||||
}</warning>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class Test {
|
||||
|
||||
class AB {
|
||||
List<String> a() {
|
||||
return <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.String>'">new ArrayList()</warning>;
|
||||
return new <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.String>'">ArrayList</warning>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@ import java.util.function.IntFunction;
|
||||
class Test {
|
||||
{
|
||||
IntFunction<Class<? extends String>[]> var1 = value -> {
|
||||
return <warning descr="Unchecked assignment: 'java.lang.Class[]' to 'java.lang.Class<? extends java.lang.String>[]'">new Class[value]</warning>;
|
||||
return new <warning descr="Unchecked assignment: 'java.lang.Class[]' to 'java.lang.Class<? extends java.lang.String>[]'">Class</warning>[value];
|
||||
};
|
||||
System.out.println(var1);
|
||||
|
||||
IntFunction<Class<? extends String>[]> var2 = value -> <warning descr="Unchecked assignment: 'java.lang.Class[]' to 'java.lang.Class<? extends java.lang.String>[]'">new Class[value]</warning>;
|
||||
IntFunction<Class<? extends String>[]> var2 = value -> new <warning descr="Unchecked assignment: 'java.lang.Class[]' to 'java.lang.Class<? extends java.lang.String>[]'">Class</warning>[value];
|
||||
System.out.println(var2);
|
||||
}
|
||||
}
|
||||
@@ -110,7 +110,7 @@ class Example {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<Boolean> list = <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.Boolean>'">new ArrayList()</warning>;
|
||||
List<Boolean> list = new <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.Boolean>'">ArrayList</warning>();
|
||||
System.out.println(list);
|
||||
assertThat(new ArrayList<Boolean>(), hasSize(0));
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Collection children = new ArrayList<>();
|
||||
List<String> actualNodes = <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.String>'"><warning descr="Unchecked call to 'ArrayList(Collection<? extends E>)' as a member of raw type 'java.util.ArrayList'">new ArrayList<>(children)</warning></warning>;
|
||||
List<String> actualNodes = new <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.String>'"><warning descr="Unchecked call to 'ArrayList(Collection<? extends E>)' as a member of raw type 'java.util.ArrayList'">ArrayList<></warning></warning>(children);
|
||||
System.out.println(actualNodes);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user