mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-99882 Automatic completion of Groovy code is often wrong (compared to my intention)
This commit is contained in:
+4
-5
@@ -50,17 +50,17 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.formatter.GeeseUtil;
|
||||
import org.jetbrains.plugins.groovy.lang.GrReferenceAdjuster;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GrControlFlowOwner;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
|
||||
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.auxiliary.modifiers.annotation.GrAnnotation;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrLabeledStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement;
|
||||
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.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.GrNewExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
|
||||
@@ -214,11 +214,10 @@ public class GroovyCompletionUtil {
|
||||
public static boolean asVariableInBlock(PsiElement context) {
|
||||
if (context.getParent() instanceof GrReferenceExpression) {
|
||||
PsiElement parent = context.getParent().getParent();
|
||||
if (parent instanceof GrApplicationStatement) {
|
||||
while (parent instanceof GrStatement) {
|
||||
parent = parent.getParent();
|
||||
}
|
||||
if ((parent instanceof GrCodeBlock || parent instanceof GrCaseSection || parent instanceof GrLabeledStatement) &&
|
||||
isNewStatement(context, true)) {
|
||||
if ((parent instanceof GrControlFlowOwner || parent instanceof GrCaseSection) && isNewStatement(context, true)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -1663,4 +1663,11 @@ package bar
|
||||
print new foo.Myclass()
|
||||
''')
|
||||
}
|
||||
|
||||
public void "test def before assignment"() {
|
||||
assert doContainsTest("def", """
|
||||
void foo() {
|
||||
<caret> = baz
|
||||
}""")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user