IDEA-89670 Groovy: 'instanceof' keyword is not exist in completion variants

This commit is contained in:
Maxim.Medvedev
2012-08-03 16:17:37 +04:00
parent 2987fdb884
commit 677a9b9606
4 changed files with 21 additions and 8 deletions
@@ -570,8 +570,8 @@ public class GroovyCompletionData {
return true;
}
if (context.getParent() instanceof GrReferenceExpression &&
GroovyCompletionUtil.nearestLeftSibling(context.getParent()) instanceof PsiErrorElement &&
GroovyCompletionUtil.endsWithExpression(GroovyCompletionUtil.nearestLeftSibling(context.getParent()).getPrevSibling())) {
GroovyCompletionUtil.nearestLeftLeaf(context) instanceof PsiErrorElement &&
GroovyCompletionUtil.endsWithExpression(GroovyCompletionUtil.nearestLeftLeaf(context).getPrevSibling())) {
return true;
}
if (context.getParent() instanceof PsiErrorElement &&
@@ -39,10 +39,7 @@ import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.psi.util.TypeConversionUtil;
import com.intellij.psi.util.*;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.CollectionFactory;
@@ -91,7 +88,7 @@ public class GroovyCompletionUtil {
}
/**
* Return true if last element of curren statement is expression
* Return true if last element of current statement is expression
*
* @param statement
* @return
@@ -119,6 +116,18 @@ public class GroovyCompletionUtil {
return elem;
}
@Nullable
public static PsiElement nearestLeftLeaf(PsiElement elem) {
elem = PsiTreeUtil.prevLeaf(elem);
while (elem != null &&
(elem instanceof PsiWhiteSpace ||
elem instanceof PsiComment ||
mNLS.equals(elem.getNode().getElementType()))) {
elem = PsiTreeUtil.prevLeaf(elem);
}
return elem;
}
/**
* Shows whether keyword may be placed as a new statement beginning
*
@@ -89,8 +89,9 @@ public class KeywordCompletionTest extends CompletionTestBase {
void testPrimitiveTypes() { doTest() }
void testIncompleteConstructor() { doTest() }
void testAtInterface() { doTest() }
void testInstanceOf() { doTest() }
String basePath = "${TestUtils.testDataPath}groovy/oldCompletion/keyword"
String basePath = TestUtils.testDataPath + 'groovy/oldCompletion/keyword'
@Override
protected boolean addReferenceVariants() {
@@ -0,0 +1,3 @@
if (!(a ins<caret>))
-----
instanceof