diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java index 5e7cb7ba7f9f..3f99e7717c1e 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java @@ -55,8 +55,8 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement; import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrOpenBlock; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrCodeBlock; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.clauses.GrCaseSection; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression; @@ -184,23 +184,17 @@ public class GroovyCompletionUtil { } public static boolean asVariableInBlock(PsiElement context) { - if (context.getParent() instanceof GrReferenceExpression && - (context.getParent().getParent() instanceof GrOpenBlock || - context.getParent().getParent() instanceof GrClosableBlock) && - isNewStatement(context, true)) { - return true; + if (context.getParent() instanceof GrReferenceExpression) { + PsiElement parent = context.getParent().getParent(); + if (parent instanceof GrApplicationStatement) { + parent = parent.getParent(); + } + if ((parent instanceof GrCodeBlock || parent instanceof GrCaseSection) && isNewStatement(context, true)) { + return true; + } } - if (context.getParent() instanceof GrReferenceExpression && - context.getParent().getParent() instanceof GrApplicationStatement && - (context.getParent().getParent().getParent() instanceof GrOpenBlock || - context.getParent().getParent().getParent() instanceof GrClosableBlock) && - isNewStatement(context, true)) { - return true; - } - - return context.getParent() instanceof GrTypeDefinitionBody && - isNewStatement(context, true); + return context.getParent() instanceof GrTypeDefinitionBody && isNewStatement(context, true); } public static boolean asTypedMethod(PsiElement context) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/KeywordCompletionTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/KeywordCompletionTest.java index 8cd50478b599..bcb21b00bf34 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/KeywordCompletionTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/KeywordCompletionTest.java @@ -82,6 +82,7 @@ public class KeywordCompletionTest extends CompletionTestBase { public void testVar7() throws Throwable { doTest(); } public void testVar8() throws Throwable { doTest(); } public void testWhile55() throws Throwable { doTest(); } + public void testDefInsideCase() throws Throwable { doTest(); } @Override diff --git a/plugins/groovy/testdata/groovy/oldCompletion/keyword/defInsideCase.test b/plugins/groovy/testdata/groovy/oldCompletion/keyword/defInsideCase.test new file mode 100644 index 000000000000..c25c0958054a --- /dev/null +++ b/plugins/groovy/testdata/groovy/oldCompletion/keyword/defInsideCase.test @@ -0,0 +1,7 @@ +switch (x) { + case 2: + de +} +----- +def +default \ No newline at end of file