mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] dfa: check reassigned type in @CompileStatic (IDEA-186753)
This commit is contained in:
+13
-1
@@ -310,7 +310,19 @@ public class GrReferenceExpressionImpl extends GrReferenceElementImpl<GrExpressi
|
||||
|
||||
Boolean reassigned = GrReassignedLocalVarsChecker.isReassignedVar(refExpr);
|
||||
if (reassigned != null && reassigned.booleanValue()) {
|
||||
return GrReassignedLocalVarsChecker.getReassignedVarType(refExpr, true);
|
||||
PsiType reassignedType = GrReassignedLocalVarsChecker.getReassignedVarType(refExpr, true);
|
||||
if (reassignedType == null) {
|
||||
return nominal;
|
||||
}
|
||||
else if (nominal == null) {
|
||||
return reassignedType;
|
||||
}
|
||||
else if (TypeConversionUtil.isAssignable(TypeConversionUtil.erasure(nominal), reassignedType, false)) {
|
||||
return reassignedType;
|
||||
}
|
||||
else {
|
||||
return nominal;
|
||||
}
|
||||
}
|
||||
|
||||
final PsiType inferred = getInferredTypes(refExpr, resolved);
|
||||
|
||||
+13
@@ -1091,4 +1091,17 @@ while (condition) {
|
||||
<caret>prevParent
|
||||
''', 'java.lang.String'
|
||||
}
|
||||
|
||||
void 'test String variable assigned with GString inside closure @CS'() {
|
||||
doTest '''\
|
||||
@groovy.transform.CompileStatic
|
||||
def test() {
|
||||
String key
|
||||
return {
|
||||
key = "hi ${"there"}"
|
||||
<caret>key
|
||||
}
|
||||
}
|
||||
''', JAVA_LANG_STRING
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user