mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
lambda: treat fields qualified with this as unqualified (IDEA-154174)
This commit is contained in:
@@ -861,7 +861,7 @@ public class ControlFlowUtil {
|
||||
|
||||
private static PsiReferenceExpression findReferenceTo(PsiElement element, PsiVariable variable) {
|
||||
if (element instanceof PsiReferenceExpression
|
||||
&& !((PsiReferenceExpression)element).isQualified()
|
||||
&& isUnqualified((PsiReferenceExpression)element)
|
||||
&& ((PsiReferenceExpression)element).resolve() == variable) {
|
||||
return (PsiReferenceExpression)element;
|
||||
}
|
||||
@@ -873,6 +873,14 @@ public class ControlFlowUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean isUnqualified(PsiReferenceExpression element) {
|
||||
if (element.isQualified()) {
|
||||
final PsiExpression qualifierExpression = element.getQualifierExpression();
|
||||
return qualifierExpression instanceof PsiThisExpression && ((PsiThisExpression)qualifierExpression).getQualifier() == null;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public static boolean isVariableDefinitelyAssigned(@NotNull final PsiVariable variable, @NotNull final ControlFlow flow) {
|
||||
class MyVisitor extends InstructionClientVisitor<Boolean> {
|
||||
|
||||
+10
@@ -89,3 +89,13 @@ class TestAnonymousWithRefToTheTopLevelUninitializedField {
|
||||
|
||||
}
|
||||
|
||||
class TestThisQualified {
|
||||
final String s;
|
||||
|
||||
final Runnable r = () -> System.out.println(<error descr="Variable 'this.s' might not have been initialized">this.s</error>.length());
|
||||
final Runnable r2 = () -> System.out.println(this.r2);
|
||||
|
||||
public TestThisQualified() {
|
||||
s = "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user