mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] correct receiver parameter type check (IDEA-175906)
This commit is contained in:
+12
-9
@@ -681,16 +681,19 @@ public class AnnotationsHighlightUtil {
|
||||
enclosingClass = enclosingClass.getContainingClass();
|
||||
}
|
||||
|
||||
if (enclosingClass != null && !enclosingClass.equals(PsiUtil.resolveClassInType(parameter.getType()))) {
|
||||
PsiElement range = ObjectUtils.notNull(parameter.getTypeElement(), parameter);
|
||||
String text = JavaErrorMessages.message("receiver.type.mismatch");
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(range).descriptionAndTooltip(text).create();
|
||||
}
|
||||
if (enclosingClass != null) {
|
||||
PsiClassType type = PsiElementFactory.SERVICE.getInstance(parameter.getProject()).createType(enclosingClass, PsiSubstitutor.EMPTY);
|
||||
if (!type.equals(parameter.getType())) {
|
||||
PsiElement range = ObjectUtils.notNull(parameter.getTypeElement(), parameter);
|
||||
String text = JavaErrorMessages.message("receiver.type.mismatch");
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(range).descriptionAndTooltip(text).create();
|
||||
}
|
||||
|
||||
PsiThisExpression identifier = parameter.getIdentifier();
|
||||
if (enclosingClass != null && !enclosingClass.equals(PsiUtil.resolveClassInType(identifier.getType()))) {
|
||||
String text = JavaErrorMessages.message("receiver.name.mismatch");
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(identifier).descriptionAndTooltip(text).create();
|
||||
PsiThisExpression identifier = parameter.getIdentifier();
|
||||
if (!enclosingClass.equals(PsiUtil.resolveClassInType(identifier.getType()))) {
|
||||
String text = JavaErrorMessages.message("receiver.name.mismatch");
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(identifier).descriptionAndTooltip(text).create();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
+7
-1
@@ -49,4 +49,10 @@ class C {
|
||||
B(C <error descr="The receiver name does not match the enclosing class type">B.this</error>, long p) { }
|
||||
B(C <error descr="The receiver name does not match the enclosing class type">this</error>, float p) { }
|
||||
}
|
||||
}
|
||||
|
||||
static class CI<T> {
|
||||
void m1(CI<T> this) { }
|
||||
<T> void m2(<error descr="The receiver type does not match the enclosing class type">CI<T></error> this) { }
|
||||
void m3(<error descr="The receiver type does not match the enclosing class type">CI<String></error> this) { }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user