fixed exponential building of cf graph

if there was en error in chained qualified expression
This commit is contained in:
Svetlana Isakova
2013-12-24 13:59:13 +04:00
committed by Andrey Breslav
parent 7055ce2a1f
commit c3ff6a2430
7 changed files with 692 additions and 19 deletions
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.cfg;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.intellij.openapi.util.Ref;
import com.intellij.psi.PsiElement;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
@@ -744,26 +743,18 @@ public class JetControlFlowProcessor {
public void visitQualifiedExpressionVoid(@NotNull JetQualifiedExpression expression, CFPContext context) {
mark(expression);
JetExpression selectorExpression = expression.getSelectorExpression();
if (selectorExpression != null) {
final Ref<Boolean> error = new Ref<Boolean>(false);
JetControlFlowBuilderAdapter adapter = new JetControlFlowBuilderAdapter() {
@NotNull
@Override
protected JetControlFlowBuilder getDelegateBuilder() {
return builder;
}
@Override
public void compilationError(@NotNull JetElement element, @NotNull String message) {
error.set(true);
super.compilationError(element, message);
}
};
new CFPVisitor(adapter).generateInstructions(selectorExpression, NOT_IN_CONDITION);
if (selectorExpression == null) {
generateInstructions(expression.getReceiverExpression(), NOT_IN_CONDITION);
return;
}
if (error.get()) {
generateInstructions(expression.getReceiverExpression(), NOT_IN_CONDITION);
}
generateInstructions(selectorExpression, NOT_IN_CONDITION);
// receiver was generated for resolvedCall
JetExpression calleeExpression = JetPsiUtil.getCalleeExpressionIfAny(selectorExpression);
if (calleeExpression == null || getResolvedCall(calleeExpression) == null) {
generateInstructions(expression.getReceiverExpression(), NOT_IN_CONDITION);
}
}
@@ -865,6 +865,9 @@ public class JetPsiUtil {
@Nullable
public static JetExpression getCalleeExpressionIfAny(@NotNull JetExpression expression) {
if (expression instanceof JetSimpleNameExpression) {
return expression;
}
if (expression instanceof JetCallElement) {
JetCallElement callExpression = (JetCallElement) expression;
return callExpression.getCalleeExpression();
@@ -0,0 +1,574 @@
== JetToken ==
class JetToken
---------------------
L0:
<START>
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== JetKeywordCompletionContributor ==
public open class JetKeywordCompletionContributor() {
{
val inTopLevel = 1.0
BunchKeywordRegister()
.add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(IMPORT_KEYWORD, inTopLevel)
.add(PACKAGE_KEYWORD, inTopLevel)
.add(OVERRIDE_KEYWORD, inTopLevel)
.add(IN_KEYWORD, inTopLevel, inTopLevel)
.add(OUT_KEYWORD, inTopLevel)
.add(OBJECT_KEYWORD, unresolvedCode)
.registerAll()
}
private inner class BunchKeywordRegister() {
fun add(keyword= JetToken(), vararg filters: Double): BunchKeywordRegister {
}
fun registerAll() {
}
}
}
---------------------
L0:
<START>
mark({ val inTopLevel = 1.0 BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) .add(OBJECT_KEYWORD, unresolvedCode) .registerAll() })
v(val inTopLevel = 1.0)
r(1.0)
w(inTopLevel)
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) .add(OBJECT_KEYWORD, unresolvedCode) .registerAll())
mark(registerAll())
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) .add(OBJECT_KEYWORD, unresolvedCode))
mark(add(OBJECT_KEYWORD, unresolvedCode))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel))
mark(add(OUT_KEYWORD, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel))
mark(add(IN_KEYWORD, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel))
mark(add(OVERRIDE_KEYWORD, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel))
mark(add(PACKAGE_KEYWORD, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel))
mark(add(IMPORT_KEYWORD, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel))
mark(BunchKeywordRegister())
call(BunchKeywordRegister, <init>)
r(ABSTRACT_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(FINAL_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(OPEN_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(INTERNAL_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(PRIVATE_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(PROTECTED_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(PUBLIC_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(CLASS_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(ENUM_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(FUN_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(GET_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(SET_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(TRAIT_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(VAL_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(VAR_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(TYPE_KEYWORD)
r(inTopLevel)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(IMPORT_KEYWORD)
r(inTopLevel)
call(add, add)
r(PACKAGE_KEYWORD)
r(inTopLevel)
call(add, add)
r(OVERRIDE_KEYWORD)
r(inTopLevel)
call(add, add)
r(IN_KEYWORD)
r(inTopLevel)
r(inTopLevel)
call(add, add)
r(OUT_KEYWORD)
r(inTopLevel)
call(add, add)
r(OBJECT_KEYWORD)
error(unresolvedCode, No resolved call)
call(add, add)
call(registerAll, registerAll)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== ABSTRACT_KEYWORD ==
val ABSTRACT_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val ABSTRACT_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(ABSTRACT_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== FINAL_KEYWORD ==
val FINAL_KEYWORD OPEN_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val FINAL_KEYWORD OPEN_KEYWORD = JetToken())
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== OPEN_KEYWORD ==
val OPEN_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val OPEN_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(OPEN_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== INTERNAL_KEYWORD ==
val INTERNAL_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val INTERNAL_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(INTERNAL_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== PRIVATE_KEYWORD ==
val PRIVATE_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val PRIVATE_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(PRIVATE_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== PROTECTED_KEYWORD ==
val PROTECTED_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val PROTECTED_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(PROTECTED_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== PUBLIC_KEYWORD ==
val PUBLIC_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val PUBLIC_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(PUBLIC_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== CLASS_KEYWORD ==
val CLASS_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val CLASS_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(CLASS_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== ENUM_KEYWORD ==
val ENUM_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val ENUM_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(ENUM_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== FUN_KEYWORD ==
val FUN_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val FUN_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(FUN_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== GET_KEYWORD ==
val GET_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val GET_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(GET_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== SET_KEYWORD ==
val SET_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val SET_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(SET_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== TRAIT_KEYWORD ==
val TRAIT_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val TRAIT_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(TRAIT_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== VAL_KEYWORD ==
val VAL_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val VAL_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(VAL_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== VAR_KEYWORD ==
val VAR_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val VAR_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(VAR_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== TYPE_KEYWORD ==
val TYPE_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val TYPE_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(TYPE_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== IMPORT_KEYWORD ==
val IMPORT_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val IMPORT_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(IMPORT_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== PACKAGE_KEYWORD ==
val PACKAGE_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val PACKAGE_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(PACKAGE_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== OVERRIDE_KEYWORD ==
val OVERRIDE_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val OVERRIDE_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(OVERRIDE_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== IN_KEYWORD ==
val IN_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val IN_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(IN_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== OUT_KEYWORD ==
val OUT_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val OUT_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(OUT_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== OBJECT_KEYWORD ==
val OBJECT_KEYWORD = JetToken()
---------------------
L0:
<START>
v(val OBJECT_KEYWORD = JetToken())
mark(JetToken())
call(JetToken, <init>)
w(OBJECT_KEYWORD)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
@@ -0,0 +1,73 @@
package test
class JetToken
public open class JetKeywordCompletionContributor() {
{
val inTopLevel = 1.0
BunchKeywordRegister()
.add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel)
.add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel)
.add(IMPORT_KEYWORD, inTopLevel)
.add(PACKAGE_KEYWORD, inTopLevel)
.add(OVERRIDE_KEYWORD, inTopLevel)
.add(IN_KEYWORD, inTopLevel, inTopLevel)
.add(OUT_KEYWORD, inTopLevel)
.add(OBJECT_KEYWORD, unresolvedCode)
.registerAll()
}
private inner class BunchKeywordRegister() {
fun add(keyword= JetToken(), vararg filters: Double): BunchKeywordRegister {
}
fun registerAll() {
}
}
}
val ABSTRACT_KEYWORD = JetToken()
val FINAL_KEYWORD OPEN_KEYWORD = JetToken()
val OPEN_KEYWORD = JetToken()
val INTERNAL_KEYWORD = JetToken()
val PRIVATE_KEYWORD = JetToken()
val PROTECTED_KEYWORD = JetToken()
val PUBLIC_KEYWORD = JetToken()
val CLASS_KEYWORD = JetToken()
val ENUM_KEYWORD = JetToken()
val FUN_KEYWORD = JetToken()
val GET_KEYWORD = JetToken()
val SET_KEYWORD = JetToken()
val TRAIT_KEYWORD = JetToken()
val VAL_KEYWORD = JetToken()
val VAR_KEYWORD = JetToken()
val TYPE_KEYWORD = JetToken()
val IMPORT_KEYWORD = JetToken()
val PACKAGE_KEYWORD = JetToken()
val OVERRIDE_KEYWORD = JetToken()
val IN_KEYWORD = JetToken()
val OUT_KEYWORD = JetToken()
val OBJECT_KEYWORD = JetToken()
@@ -0,0 +1,19 @@
== foo ==
fun foo(s: String) {
s.
}
---------------------
L0:
<START>
v(s: String)
w(s)
mark({ s. })
mark(s.)
r(s)
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
@@ -0,0 +1,3 @@
fun foo(s: String) {
s.
}
@@ -92,6 +92,11 @@ public class ControlFlowTestGenerated extends AbstractControlFlowTest {
doTest("compiler/testData/cfg/Basic.kt");
}
@TestMetadata("chainedQualifiedExpression.kt")
public void testChainedQualifiedExpression() throws Exception {
doTest("compiler/testData/cfg/chainedQualifiedExpression.kt");
}
@TestMetadata("DelegatedProperty.kt")
public void testDelegatedProperty() throws Exception {
doTest("compiler/testData/cfg/DelegatedProperty.kt");
@@ -187,6 +192,11 @@ public class ControlFlowTestGenerated extends AbstractControlFlowTest {
doTest("compiler/testData/cfg/propertySafeCall.kt");
}
@TestMetadata("qualifiedExpressionWithoutSelector.kt")
public void testQualifiedExpressionWithoutSelector() throws Exception {
doTest("compiler/testData/cfg/qualifiedExpressionWithoutSelector.kt");
}
@TestMetadata("ReturnFromExpression.kt")
public void testReturnFromExpression() throws Exception {
doTest("compiler/testData/cfg/ReturnFromExpression.kt");