diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrClosableBlockImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrClosableBlockImpl.java index fcee7c717ce1..0159e3412d4e 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrClosableBlockImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/blocks/GrClosableBlockImpl.java @@ -338,6 +338,6 @@ public class GrClosableBlockImpl extends GrBlockImpl implements GrClosableBlock @Override public boolean isTopControlFlowOwner() { - return true; + return !(getParent() instanceof GrStringInjection); } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy index 8a15559b0a8c..57ff1e8b2c2e 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy @@ -1647,4 +1647,20 @@ def foo(x) { ''', PsiMethod) } + + void testInferredTypeInsideGStringInjection() { + resolveByText('''\ +class A {} +class B extends A { + String bar() {'bar'} +} + +def foo(A b) { + if (b instanceof B) { + doSomethingElse("Message: ${b.bar()}") + + } +} +''', PsiMethod) + } }