Refactor - subclass PositionElementFilter and don't implement isClassAcceptable
This commit is contained in:
@@ -78,7 +78,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
||||
|
||||
private static final String IF_TEMPLATE = "if (<#<condition>#>) {\n<#<block>#>\n}";
|
||||
private static final String IF_ELSE_TEMPLATE = "if (<#<condition>#>) {\n<#<block>#>\n} else {\n<#<block>#>\n}";
|
||||
private static final String IF_ELSE_ONELINE_TEMPLATE = "if (<#<condition>#>) <#<value>#> else <#<value>#>";
|
||||
private static final String IF_ELSE_ONE_LINE_TEMPLATE = "if (<#<condition>#>) <#<value>#> else <#<value>#>";
|
||||
private static final String FUN_TEMPLATE = "fun <#<name>#>(<#<params>#>) : <#<returnType>#> {\n<#<body>#>\n}";
|
||||
private static final String VAL_SIMPLE_TEMPLATE = "val <#<name>#> = <#<value>#>";
|
||||
private static final String VAL_WITH_TYPE_TEMPLATE = "val <#<name>#> : <#<valType>#> = <#<value>#>";
|
||||
@@ -129,57 +129,37 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
||||
}
|
||||
}
|
||||
|
||||
private static class InTopFilter implements ElementFilter {
|
||||
private static class InTopFilter extends PositionElementFilter {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
//noinspection unchecked
|
||||
return PsiTreeUtil.getParentOfType(context, JetFile.class, false, JetClassBody.class, JetBlockExpression.class, JetFunction.class) != null &&
|
||||
PsiTreeUtil.getParentOfType(context, JetParameterList.class, JetTypeParameterList.class) == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClassAcceptable(Class hintClass) {
|
||||
return true;
|
||||
PsiTreeUtil.getParentOfType(context, JetParameterList.class, JetTypeParameterList.class, JetClass.class) == null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class InNonClassBlockFilter implements ElementFilter {
|
||||
private static class InNonClassBlockFilter extends PositionElementFilter {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
//noinspection unchecked
|
||||
return PsiTreeUtil.getParentOfType(context, JetBlockExpression.class, true, JetClassBody.class) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClassAcceptable(Class hintClass) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private static class InParametersFilter implements ElementFilter {
|
||||
private static class InParametersFilter extends PositionElementFilter {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
return PsiTreeUtil.getParentOfType(context, JetParameterList.class, false) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClassAcceptable(Class hintClass) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private static class InClassBodyFilter implements ElementFilter {
|
||||
private static class InClassBodyFilter extends PositionElementFilter {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
//noinspection unchecked
|
||||
return PsiTreeUtil.getParentOfType(context, JetClassBody.class, true,
|
||||
JetBlockExpression.class, JetProperty.class, JetParameterList.class) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClassAcceptable(Class hintClass) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private static class AfterClassInClassBodyFilter extends InClassBodyFilter {
|
||||
@@ -198,7 +178,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
||||
}
|
||||
}
|
||||
|
||||
private static class InPropertyBodyFilter implements ElementFilter {
|
||||
private static class InPropertyBodyFilter extends PositionElementFilter {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
if (!(element instanceof PsiElement)) return false;
|
||||
@@ -206,11 +186,6 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
||||
return property != null && isAfterName(property, (PsiElement) element);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClassAcceptable(Class hintClass) {
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean isAfterName(@NotNull JetProperty property, @NotNull PsiElement element) {
|
||||
for (PsiElement child = property.getFirstChild(); child != null; child = child.getNextSibling()) {
|
||||
if (PsiTreeUtil.isAncestor(child, element, false)) {
|
||||
@@ -226,16 +201,11 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
||||
}
|
||||
}
|
||||
|
||||
private static class InWhenFilter implements ElementFilter {
|
||||
private static class InWhenFilter extends PositionElementFilter {
|
||||
@Override
|
||||
public boolean isAcceptable(Object element, PsiElement context) {
|
||||
return PsiTreeUtil.getParentOfType(context, JetWhenExpression.class, false) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClassAcceptable(Class hintClass) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private static class SimplePrefixMatcher extends PrefixMatcher {
|
||||
@@ -341,12 +311,12 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
||||
TRAIT_TEMPLATE, CLASS_TEMPLATE, CLASS_OBJECT_TEMPLATE,
|
||||
ENUM_CLASS_TEMPLATE);
|
||||
registerScopeKeywordsCompletion(new InNonClassBlockFilter(),
|
||||
IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONELINE_TEMPLATE,
|
||||
IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONE_LINE_TEMPLATE,
|
||||
FUN_TEMPLATE, VAL_SIMPLE_TEMPLATE, VAR_SIMPLE_TEMPLATE,
|
||||
TRAIT_TEMPLATE, CLASS_TEMPLATE, FOR_TEMPLATE,
|
||||
WHEN_TEMPLATE, WHILE_TEMPLATE, DO_WHILE_TEMPLATE, ENUM_CLASS_TEMPLATE);
|
||||
registerScopeKeywordsCompletion(new InPropertyBodyFilter(),
|
||||
IF_ELSE_ONELINE_TEMPLATE, WHEN_TEMPLATE);
|
||||
IF_ELSE_ONE_LINE_TEMPLATE, WHEN_TEMPLATE);
|
||||
registerScopeKeywordsCompletion(new AfterClassInClassBodyFilter(), false,
|
||||
CLASS_OBJECT_WITHOUT_CLASS_TEMPLATE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user