From 549171d04365a293e53829803c5e8d96c1ef7f44 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 8 Oct 2014 22:28:04 +0400 Subject: [PATCH] Completely rewritten keyword completion implementation using another approach #KT-2816 Fixed --- .../jet/lang/psi/psiUtil/jetPsiUtil.kt | 8 +- .../plugin/completion/CompletionSession.kt | 2 +- .../plugin/completion/KeywordCompletion.kt | 290 +++++++----------- .../completion/keywords/AfterClassKeyword.kt | 11 + .../completion/keywords/AfterClassProperty.kt | 30 +- idea/testData/completion/keywords/AfterDot.kt | 5 +- .../completion/keywords/AfterSpaceAndDot.kt | 2 +- .../completion/keywords/InArgumentList.kt | 25 ++ .../completion/keywords/InBlockComment.kt | 6 +- idea/testData/completion/keywords/InChar.kt | 6 +- .../completion/keywords/InClassBeforeFun.kt | 44 +-- .../completion/keywords/InClassScope.kt | 43 +-- .../keywords/InClassTypeParameters.kt | 5 +- .../completion/keywords/InCodeBlock.kt | 27 ++ .../keywords/InFunctionExpressionBody.kt | 20 ++ .../keywords/InFunctionRecieverType.kt | 5 + .../completion/keywords/InFunctionScope.kt | 51 --- .../keywords/InFunctionTypePosition.kt | 7 + .../keywords/InFunctionTypeReference.kt | 5 - .../keywords/InGetterExpressionBody.kt | 21 ++ .../keywords/InMemberFunParametersList.kt | 12 + .../keywords/InMethodParametersList.kt | 54 ---- .../keywords/InModifierListInsideClass.kt | 3 +- .../InNotFinishedGenericWithFunAfter.kt | 5 +- .../keywords/InParameterDefaultValue.kt | 20 ++ .../completion/keywords/InParametersList.kt | 51 --- .../keywords/InPropertyInitializer.kt | 20 ++ .../keywords/InPropertyTypeReference.kt | 2 +- idea/testData/completion/keywords/InString.kt | 6 +- .../keywords/InTopFunParametersList.kt | 9 + .../completion/keywords/InTopProperty.kt | 8 - .../keywords/InTopScopeAfterPackage.kt | 26 +- .../completion/keywords/InTypeScope.kt | 51 --- .../completion/keywords/LineComment.kt | 6 +- .../keywords/NoCompletionForCapitalPrefix.kt | 2 +- .../completion/keywords/PropertyAccessors.kt | 32 ++ .../completion/keywords/PropertySetter.kt | 50 +++ .../keywords/PropertySetterGetter.kt | 7 - idea/testData/completion/keywords/TopScope.kt | 44 +-- .../completion/keywords/classObject.kt | 5 - .../KeywordCompletionTestGenerated.java | 84 +++-- 41 files changed, 528 insertions(+), 582 deletions(-) create mode 100644 idea/testData/completion/keywords/AfterClassKeyword.kt create mode 100644 idea/testData/completion/keywords/InArgumentList.kt create mode 100644 idea/testData/completion/keywords/InCodeBlock.kt create mode 100644 idea/testData/completion/keywords/InFunctionExpressionBody.kt create mode 100644 idea/testData/completion/keywords/InFunctionRecieverType.kt delete mode 100644 idea/testData/completion/keywords/InFunctionScope.kt create mode 100644 idea/testData/completion/keywords/InFunctionTypePosition.kt delete mode 100644 idea/testData/completion/keywords/InFunctionTypeReference.kt create mode 100644 idea/testData/completion/keywords/InGetterExpressionBody.kt create mode 100644 idea/testData/completion/keywords/InMemberFunParametersList.kt delete mode 100644 idea/testData/completion/keywords/InMethodParametersList.kt create mode 100644 idea/testData/completion/keywords/InParameterDefaultValue.kt delete mode 100644 idea/testData/completion/keywords/InParametersList.kt create mode 100644 idea/testData/completion/keywords/InPropertyInitializer.kt create mode 100644 idea/testData/completion/keywords/InTopFunParametersList.kt delete mode 100644 idea/testData/completion/keywords/InTopProperty.kt delete mode 100644 idea/testData/completion/keywords/InTypeScope.kt create mode 100644 idea/testData/completion/keywords/PropertyAccessors.kt create mode 100644 idea/testData/completion/keywords/PropertySetter.kt delete mode 100644 idea/testData/completion/keywords/PropertySetterGetter.kt delete mode 100644 idea/testData/completion/keywords/classObject.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/psiUtil/jetPsiUtil.kt b/compiler/frontend/src/org/jetbrains/jet/lang/psi/psiUtil/jetPsiUtil.kt index f6a04a0b193..e3ebb4b7c27 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/psiUtil/jetPsiUtil.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/psiUtil/jetPsiUtil.kt @@ -350,4 +350,10 @@ public fun PsiElement.parents(withItself: Boolean = true): Stream { public fun JetExpression.getAssignmentByLHS(): JetBinaryExpression? { val parent = getParent() as? JetBinaryExpression ?: return null return if (JetPsiUtil.isAssignment(parent) && parent.getLeft() == this) parent else null -} \ No newline at end of file +} + +public fun PsiElement.prevLeaf(skipEmptyElements: Boolean = false): PsiElement? + = PsiTreeUtil.prevLeaf(this, skipEmptyElements) + +public fun PsiElement.nextLeaf(skipEmptyElements: Boolean = false): PsiElement? + = PsiTreeUtil.nextLeaf(this, skipEmptyElements) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index 71efbdc0bc5..d25797606a6 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -139,7 +139,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, } } - KeywordCompletion().complete(parameters, collector) + KeywordCompletion.complete(parameters, prefixMatcher, collector) if (completeReference && !shouldRunOnlyTypeCompletion()) { flushToResultSet() diff --git a/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt index fd3bb457f71..dd9af3db93b 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/KeywordCompletion.kt @@ -17,55 +17,52 @@ package org.jetbrains.jet.plugin.completion import com.intellij.psi.filters.* -import com.intellij.psi.PsiWhiteSpace -import com.intellij.psi.impl.source.tree.LeafPsiElement import com.intellij.psi.filters.position.LeftNeighbour import org.jetbrains.jet.lang.psi.* -import org.jetbrains.jet.lexer.JetToken import org.jetbrains.jet.lexer.JetTokens -import com.intellij.psi.filters.position.SuperParentFilter -import com.intellij.psi.util.PsiTreeUtil import com.intellij.psi.PsiElement import com.intellij.psi.filters.position.PositionElementFilter -import com.intellij.util.containers.MultiMap -import java.util.HashSet import com.intellij.codeInsight.completion.* import org.jetbrains.jet.plugin.completion.handlers.JetFunctionInsertHandler -import org.jetbrains.jet.plugin.completion.handlers.KotlinKeywordInsertHandler import com.intellij.codeInsight.lookup.LookupElementBuilder -import java.util.ArrayList +import com.intellij.psi.PsiErrorElement +import org.jetbrains.jet.lexer.JetKeywordToken +import com.intellij.openapi.project.Project +import org.jetbrains.jet.lang.psi.psiUtil.getParentByType +import org.jetbrains.jet.lang.psi.psiUtil.prevLeaf +import org.jetbrains.jet.plugin.completion.handlers.KotlinKeywordInsertHandler class KeywordLookupObject(val keyword: String) -//TODO: it should be object, it's class because of KT-5582 -class KeywordCompletion { - public fun complete(parameters: CompletionParameters, collector: LookupElementsCollector) { +object KeywordCompletion { + private val NON_ACTUAL_KEYWORDS = setOf(JetTokens.REIFIED_KEYWORD.getValue(), + JetTokens.CAPITALIZED_THIS_KEYWORD.getValue(), + JetTokens.TYPE_ALIAS_KEYWORD.getValue()) + private val ALL_KEYWORDS = (JetTokens.KEYWORDS.getTypes() + JetTokens.SOFT_KEYWORDS.getTypes()) + .map { (it as JetKeywordToken).getValue() } + .filter { it !in NON_ACTUAL_KEYWORDS } + + public fun complete(parameters: CompletionParameters, prefixMatcher: PrefixMatcher, collector: LookupElementsCollector) { val position = parameters.getPosition() if (!GENERAL_FILTER.isAcceptable(position, position)) return - for ((filter, keywords) in filterToKeyword) { - if (filter.isAcceptable(position, position)) { - for (keyword in keywords) { - val element = LookupElementBuilder.create(KeywordLookupObject(keyword), keyword) - .bold() - .withInsertHandler(if (keyword !in FUNCTION_KEYWORDS) - KotlinKeywordInsertHandler - else - JetFunctionInsertHandler.NO_PARAMETERS_HANDLER) - collector.addElement(element) - } + val parserFilter = buildParserFilter(position) + for (keyword in ALL_KEYWORDS) { + if (prefixMatcher.prefixMatches(keyword) && parserFilter(keyword)) { + val element = LookupElementBuilder.create(KeywordLookupObject(keyword), keyword) + .bold() + .withInsertHandler(if (keyword !in FUNCTION_KEYWORDS) + KotlinKeywordInsertHandler + else + JetFunctionInsertHandler.NO_PARAMETERS_HANDLER) + collector.addElement(element) } } } private val FUNCTION_KEYWORDS = listOf(JetTokens.GET_KEYWORD.toString(), JetTokens.SET_KEYWORD.toString()) - private val NOT_IDENTIFIER_FILTER = NotFilter(AndFilter( - LeafElementFilter(JetTokens.IDENTIFIER), - NotFilter(ParentFilter(ClassFilter(javaClass()))) - )) - private val GENERAL_FILTER = NotFilter(OrFilter( CommentFilter(), ParentFilter(ClassFilter(javaClass())), @@ -73,91 +70,6 @@ class KeywordCompletion { LeftNeighbour(TextFilter(".")) )) - private fun notIdentifier(filter: ElementFilter) = AndFilter(NOT_IDENTIFIER_FILTER, filter) - - private val filterToKeyword: List>> = run { - val inTopLevel = notIdentifier(InTopFilter) - val inClassBody = notIdentifier(InClassBodyFilter()) - val inNonClassBlock = notIdentifier(InNonClassBlockFilter) - val inPropertyBody = notIdentifier(InPropertyBodyFilter) - - val inNonParameterModifier = notIdentifier(AndFilter( - SuperParentFilter(ClassFilter(javaClass())), - NotFilter(InTypeParameterFirstChildFilter) - )) - - val filtersToKeywords : MultiMap, String> = MultiMap.create() - - fun add(keyword: JetToken, vararg filters: ElementFilter) { - filtersToKeywords.putValue(hashSetOf(*filters), keyword.toString()) - } - - add(JetTokens.ABSTRACT_KEYWORD, inTopLevel, inNonParameterModifier, inClassBody) - add(JetTokens.FINAL_KEYWORD, inTopLevel, inNonParameterModifier, inClassBody) - add(JetTokens.OPEN_KEYWORD, inTopLevel, inNonParameterModifier, inClassBody) - - add(JetTokens.INTERNAL_KEYWORD, inTopLevel, inNonParameterModifier, inClassBody, inNonClassBlock) - add(JetTokens.PRIVATE_KEYWORD, inTopLevel, inNonParameterModifier, inClassBody, inNonClassBlock) - add(JetTokens.PROTECTED_KEYWORD, inTopLevel, inNonParameterModifier, inClassBody, inNonClassBlock) - add(JetTokens.PUBLIC_KEYWORD, inTopLevel, inNonParameterModifier, inClassBody, inNonClassBlock) - - add(JetTokens.CLASS_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.ENUM_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.FUN_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.GET_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.SET_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.TRAIT_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.VAL_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.VAR_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - add(JetTokens.TYPE_ALIAS_KEYWORD, inTopLevel, inClassBody, inNonClassBlock) - - add(JetTokens.IMPORT_KEYWORD, inTopLevel) - add(JetTokens.PACKAGE_KEYWORD, inTopLevel) - - add(JetTokens.OVERRIDE_KEYWORD, inClassBody) - - add(JetTokens.IN_KEYWORD, inNonClassBlock, InTypeParameterFirstChildFilter) - - add(JetTokens.OUT_KEYWORD, InTypeParameterFirstChildFilter) - - add(JetTokens.OBJECT_KEYWORD, inNonClassBlock, inClassBody, AfterClassInClassBodyFilter) - - add(JetTokens.ELSE_KEYWORD, inNonClassBlock, inPropertyBody) - add(JetTokens.IF_KEYWORD, inNonClassBlock, inPropertyBody) - add(JetTokens.TRUE_KEYWORD, inNonClassBlock, inPropertyBody) - add(JetTokens.FALSE_KEYWORD, inNonClassBlock, inPropertyBody) - add(JetTokens.NULL_KEYWORD, inNonClassBlock, inPropertyBody) - add(JetTokens.THIS_KEYWORD, inNonClassBlock, inPropertyBody) - add(JetTokens.WHEN_KEYWORD, inNonClassBlock, inPropertyBody) - - add(JetTokens.AS_KEYWORD, inNonClassBlock) - add(JetTokens.BREAK_KEYWORD, inNonClassBlock) - add(JetTokens.BY_KEYWORD, inNonClassBlock) - add(JetTokens.CATCH_KEYWORD, inNonClassBlock) - add(JetTokens.CONTINUE_KEYWORD, inNonClassBlock) - add(JetTokens.DO_KEYWORD, inNonClassBlock) - add(JetTokens.FINALLY_KEYWORD, inNonClassBlock) - add(JetTokens.FOR_KEYWORD, inNonClassBlock) - add(JetTokens.IS_KEYWORD, inNonClassBlock) - add(JetTokens.RETURN_KEYWORD, inNonClassBlock) - add(JetTokens.SUPER_KEYWORD, inNonClassBlock) - add(JetTokens.CAPITALIZED_THIS_KEYWORD, inNonClassBlock) - add(JetTokens.THROW_KEYWORD, inNonClassBlock) - add(JetTokens.TRY_KEYWORD, inNonClassBlock) - add(JetTokens.VARARG_KEYWORD, inNonClassBlock) - add(JetTokens.WHERE_KEYWORD, inNonClassBlock) - add(JetTokens.WHILE_KEYWORD, inNonClassBlock) - - val result = ArrayList>>() - for ((filters, tokens) in filtersToKeywords.entrySet()) { - val orFilter = OrFilter() - filters.forEach { filter -> orFilter.addFilter(filter) } - result.add(orFilter to tokens) - } - - result - } - private class CommentFilter() : ElementFilter { override fun isAcceptable(element : Any?, context : PsiElement?) = (element is PsiElement) && JetPsiUtil.isInComment(element as PsiElement) @@ -177,82 +89,94 @@ class KeywordCompletion { } } - private object InTopFilter : PositionElementFilter() { - override fun isAcceptable(element : Any?, context : PsiElement?) : Boolean { - val underFile = PsiTreeUtil.getParentOfType(context, javaClass(), false, - javaClass(), javaClass(), javaClass(), javaClass()) != null - - val notInDeclarationElement = PsiTreeUtil.getParentOfType( - context, - javaClass(), javaClass(), javaClass()) == null - - return underFile && notInDeclarationElement - } - } - - private object InNonClassBlockFilter : PositionElementFilter() { - override fun isAcceptable(element : Any?, context : PsiElement?) - = PsiTreeUtil.getParentOfType(context, javaClass(), true, javaClass()) != null - } - - private object InTypeParameterFirstChildFilter : PositionElementFilter() { - override fun isAcceptable(element : Any?, context : PsiElement?) : Boolean { - val typeParameterElement = PsiTreeUtil.getParentOfType(context, javaClass(), true) - return typeParameterElement != null && - context != null && - PsiTreeUtil.isAncestor(typeParameterElement.getFirstChild(), context, false) - } - } - - private open class InClassBodyFilter() : PositionElementFilter() { - override fun isAcceptable(element : Any?, context : PsiElement?) : Boolean { - return PsiTreeUtil.getParentOfType( - context, javaClass(), true, - javaClass(), - javaClass(), - javaClass()) != null - } - } - - private object AfterClassInClassBodyFilter : InClassBodyFilter() { - override fun isAcceptable(element : Any?, context : PsiElement?) : Boolean { - if (super.isAcceptable(element, context)) { - fun isLeafAndClass(psiElement: PsiElement?) = - psiElement is LeafPsiElement && psiElement.getElementType() == JetTokens.CLASS_KEYWORD - - val ps = context?.getPrevSibling() - return isLeafAndClass(if (ps is PsiWhiteSpace) ps.getPrevSibling() else ps) - } - - return false - } - } - - private object InPropertyBodyFilter : PositionElementFilter() { - override fun isAcceptable(element: Any?, context: PsiElement?): Boolean { - if (element !is PsiElement) return false - - val property = PsiTreeUtil.getParentOfType(context, javaClass(), false) - return property != null && isAfterName(property, (element as PsiElement)) - } - - private fun isAfterName(property : JetProperty, element : PsiElement) : Boolean { - var iterableChild = property.getFirstChild() - while (iterableChild != null) { - val child = iterableChild!! - - if (PsiTreeUtil.isAncestor(child, element, false)) { - break + private fun buildParserFilter(position: PsiElement): (String) -> Boolean { + var parent = position.getParent() + var prevParent = position + while (parent != null) { + val _parent = parent + when (_parent) { + is JetBlockExpression -> { + return buildParserFilterWithContextElement("fun foo() { ", prevParent, position) } - if (child.getNode()?.getElementType() == JetTokens.IDENTIFIER) { - return true + is JetWithExpressionInitializer -> { + val initializer = _parent.getInitializer() + if (prevParent == initializer) { + return buildParserFilterWithContextElement("val v = ", initializer, position) + } } - iterableChild = child.getNextSibling() + is JetParameter -> { + val default = _parent.getDefaultValue() + if (prevParent == default) { + return buildParserFilterWithContextElement("val v = ", default, position) + } + } } - return false + if (_parent is JetDeclaration) { + val scope = _parent.getParent() + when (scope) { + is JetClassOrObject -> return buildParserFilterWithContextElement("class X { ", _parent, position) + is JetFile -> return buildParserFilterWithContextElement("", _parent, position) + } + } + + prevParent = parent!! + parent = parent!!.getParent() } + + val builder = StringBuilder() + buildReducedContextBefore(builder, position) + return buildParserFilterByText(builder.toString(), position.getProject()) + } + + private fun buildParserFilterWithContextElement(prefixText: String, + contextElement: PsiElement, + position: PsiElement): (String) -> Boolean { + val offset = position.getStartOffsetInAncestor(contextElement) + val truncatedContext = contextElement.getText()!!.substring(0, offset) + return buildParserFilterByText(prefixText + truncatedContext, contextElement.getProject()) + } + + private fun buildParserFilterByText(prefixText: String, project: Project): (String) -> Boolean { + val psiFactory = JetPsiFactory(project) + return { keyword -> + val file = psiFactory.createFile(prefixText + keyword) + val elementAt = file.findElementAt(prefixText.length)!! + val nodeType = elementAt.getNode()!!.getElementType() + when { + nodeType !in JetTokens.KEYWORDS && nodeType !in JetTokens.SOFT_KEYWORDS -> false + + elementAt.getParentByType(javaClass(), strict = false) != null -> false + + elementAt.prevLeaf() is PsiErrorElement -> false + + else -> true + } + } + } + + // builds text before position element excluding declarations + private fun buildReducedContextBefore(builder: StringBuilder, position: PsiElement) { + val parent = position.getParent() ?: return + + buildReducedContextBefore(builder, parent) + + var child = parent.getFirstChild() + while (child != position) { + if (child !is JetDeclaration) { + builder.append(child!!.getText()) + } + child = child!!.getNextSibling() + } + } + + private fun PsiElement.getStartOffsetInAncestor(ancestor: PsiElement): Int { + val parent = getParent()!! + return if (parent == ancestor) + getStartOffsetInParent() + else + parent.getStartOffsetInAncestor(ancestor) + getStartOffsetInParent() } } diff --git a/idea/testData/completion/keywords/AfterClassKeyword.kt b/idea/testData/completion/keywords/AfterClassKeyword.kt new file mode 100644 index 00000000000..84eb5a77459 --- /dev/null +++ b/idea/testData/completion/keywords/AfterClassKeyword.kt @@ -0,0 +1,11 @@ +class Test { + class +} + +/*TODO: should be only 'object'*/ +// EXIST: class +// EXIST: fun +// EXIST: object +// EXIST: trait +// EXIST: val +// NUMBER: 5 \ No newline at end of file diff --git a/idea/testData/completion/keywords/AfterClassProperty.kt b/idea/testData/completion/keywords/AfterClassProperty.kt index 0b0fe0c590d..ef8bc2ba4cf 100644 --- a/idea/testData/completion/keywords/AfterClassProperty.kt +++ b/idea/testData/completion/keywords/AfterClassProperty.kt @@ -1,7 +1,33 @@ class MouseMovedEventArgs { public val X : int = 0 - in + } -// EXIST: internal \ No newline at end of file +// EXIST: abstract +// EXIST: annotation +// EXIST: as +// EXIST: class +// EXIST: enum +// EXIST: final +// EXIST: fun +// EXIST: get +// EXIST: in +/*why?*/ +// EXIST: inner +// EXIST: internal +// EXIST: object +// EXIST: open +// EXIST: out +/*why?*/ +// EXIST: override +// EXIST: private +// EXIST: protected +// EXIST: public +// EXIST: set +// EXIST: trait +// EXIST: val +// EXIST: var +// EXIST: vararg +/*why?*/ +// NUMBER: 23 diff --git a/idea/testData/completion/keywords/AfterDot.kt b/idea/testData/completion/keywords/AfterDot.kt index 033e493b284..7d6d15e3c5c 100644 --- a/idea/testData/completion/keywords/AfterDot.kt +++ b/idea/testData/completion/keywords/AfterDot.kt @@ -3,7 +3,4 @@ fun foo() { str. } -// ABSENT: package, as, type, class, this, super, val, var, fun, for, null, true -// ABSENT: false, is, in, throw, return, break, continue, object, if, try, else, while -// ABSENT: do, when, trait, This - +// NUMBER: 0 diff --git a/idea/testData/completion/keywords/AfterSpaceAndDot.kt b/idea/testData/completion/keywords/AfterSpaceAndDot.kt index 39fa179f90b..1ab69d2c3ff 100644 --- a/idea/testData/completion/keywords/AfterSpaceAndDot.kt +++ b/idea/testData/completion/keywords/AfterSpaceAndDot.kt @@ -3,4 +3,4 @@ fun foo() { str. } -// ABSENT: public, val, in, if, when, this \ No newline at end of file +// NUMBER: 0 diff --git a/idea/testData/completion/keywords/InArgumentList.kt b/idea/testData/completion/keywords/InArgumentList.kt new file mode 100644 index 00000000000..def1fc00587 --- /dev/null +++ b/idea/testData/completion/keywords/InArgumentList.kt @@ -0,0 +1,25 @@ +fun foo(p: Int) { + x() + y() + val edge = a.b() + z() +} + +// EXIST: break +// EXIST: continue +// EXIST: do +// EXIST: false +// EXIST: for +// EXIST: if +// EXIST: null +// EXIST: object +// EXIST: package +// EXIST: return +// EXIST: super +// EXIST: this +// EXIST: throw +// EXIST: true +// EXIST: try +// EXIST: when +// EXIST: while +// NUMBER: 17 diff --git a/idea/testData/completion/keywords/InBlockComment.kt b/idea/testData/completion/keywords/InBlockComment.kt index 742c3e61e07..d7e63bf146f 100644 --- a/idea/testData/completion/keywords/InBlockComment.kt +++ b/idea/testData/completion/keywords/InBlockComment.kt @@ -4,8 +4,4 @@ class TestClass { } } -// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do -// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in -// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public -// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var -// ABSENT: vararg, when, where, while \ No newline at end of file +// NUMBER: 0 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InChar.kt b/idea/testData/completion/keywords/InChar.kt index a31b31b4e53..927187f2f81 100644 --- a/idea/testData/completion/keywords/InChar.kt +++ b/idea/testData/completion/keywords/InChar.kt @@ -4,8 +4,4 @@ class TestClass { } } -// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do -// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in -// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public -// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var -// ABSENT: vararg, when, where, while \ No newline at end of file +// NUMBER: 0 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InClassBeforeFun.kt b/idea/testData/completion/keywords/InClassBeforeFun.kt index e11ad1ba696..b82b22961a7 100644 --- a/idea/testData/completion/keywords/InClassBeforeFun.kt +++ b/idea/testData/completion/keywords/InClassBeforeFun.kt @@ -7,52 +7,28 @@ public class Test { } } + // EXIST: abstract -/* // ABSENT: annotation */ -// ABSENT: as -// ABSENT: break -// ABSENT: by -// ABSENT: catch +// EXIST: annotation // EXIST: class -// ABSENT: continue -// ABSENT: default -// ABSENT: do -// ABSENT: else // EXIST: enum -// ABSENT: false // EXIST: final -// ABSENT: finally -// ABSENT: for // EXIST: fun -// EXIST: get -// ABSENT: if -// ABSENT: import -// ABSENT: in +// EXIST: in +/*why?*/ +// EXIST: inner // EXIST: internal -// ABSENT: is -// ABSENT: null // EXIST: object // EXIST: open -// ABSENT: out +// EXIST: out +/*why?*/ // EXIST: override -// ABSENT: package // EXIST: private // EXIST: protected // EXIST: public -// ABSENT: ref -// ABSENT: return -// EXIST: set -// ABSENT: super -// ABSENT: This -// ABSENT: this -// ABSENT: throw // EXIST: trait -// ABSENT: true -// ABSENT: try -// EXIST: typealias // EXIST: val // EXIST: var -// ABSENT: vararg -// ABSENT: when -// ABSENT: where -// ABSENT: while \ No newline at end of file +// EXIST: vararg +/*why?*/ +// NUMBER: 20 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InClassScope.kt b/idea/testData/completion/keywords/InClassScope.kt index 1c73fb2c8c3..def7c1823e6 100644 --- a/idea/testData/completion/keywords/InClassScope.kt +++ b/idea/testData/completion/keywords/InClassScope.kt @@ -3,51 +3,26 @@ class TestClass { } // EXIST: abstract -// ABSENT: annotation -// ABSENT: as -// ABSENT: break -// ABSENT: by -// ABSENT: catch +// EXIST: annotation // EXIST: class -// ABSENT: continue -// ABSENT: default -// ABSENT: do -// ABSENT: else // EXIST: enum -// ABSENT: false // EXIST: final -// ABSENT: finally -// ABSENT: for // EXIST: fun -// EXIST: get -// ABSENT: if -// ABSENT: import -// ABSENT: in +// EXIST: in +/*why?*/ +// EXIST: inner // EXIST: internal -// ABSENT: is -// ABSENT: null // EXIST: object // EXIST: open -// ABSENT: out +// EXIST: out +/*why?*/ // EXIST: override -// ABSENT: package // EXIST: private // EXIST: protected // EXIST: public -// ABSENT: ref -// ABSENT: return -// EXIST: set -// ABSENT: super -// ABSENT: This -// ABSENT: this -// ABSENT: throw // EXIST: trait -// ABSENT: true -// ABSENT: try -// EXIST: typealias // EXIST: val // EXIST: var -// ABSENT: vararg -// ABSENT: when -// ABSENT: where -// ABSENT: while \ No newline at end of file +// EXIST: vararg +/*why?*/ +// NUMBER: 20 diff --git a/idea/testData/completion/keywords/InClassTypeParameters.kt b/idea/testData/completion/keywords/InClassTypeParameters.kt index dd327fb4561..899e31954c0 100644 --- a/idea/testData/completion/keywords/InClassTypeParameters.kt +++ b/idea/testData/completion/keywords/InClassTypeParameters.kt @@ -1,4 +1,5 @@ class T<> -// EXIST: in, out -// ABSENT: private \ No newline at end of file +// EXIST: in +/*TODO: // EXIST: out*/ +// NUMBER: 1 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InCodeBlock.kt b/idea/testData/completion/keywords/InCodeBlock.kt new file mode 100644 index 00000000000..7c6a38f2e82 --- /dev/null +++ b/idea/testData/completion/keywords/InCodeBlock.kt @@ -0,0 +1,27 @@ +fun foo() { + +} + +// EXIST: break +// EXIST: class +// EXIST: continue +// EXIST: do +// EXIST: false +// EXIST: for +// EXIST: fun +// EXIST: if +// EXIST: null +// EXIST: object +// EXIST: package +// EXIST: return +// EXIST: super +// EXIST: this +// EXIST: throw +// EXIST: trait +// EXIST: true +// EXIST: try +// EXIST: val +// EXIST: var +// EXIST: when +// EXIST: while +// NUMBER: 22 diff --git a/idea/testData/completion/keywords/InFunctionExpressionBody.kt b/idea/testData/completion/keywords/InFunctionExpressionBody.kt new file mode 100644 index 00000000000..7e282538e4f --- /dev/null +++ b/idea/testData/completion/keywords/InFunctionExpressionBody.kt @@ -0,0 +1,20 @@ +fun foo() = + +// EXIST: break +// EXIST: continue +// EXIST: do +// EXIST: false +// EXIST: for +// EXIST: if +// EXIST: null +// EXIST: object +// EXIST: package +// EXIST: return +// EXIST: super +// EXIST: this +// EXIST: throw +// EXIST: true +// EXIST: try +// EXIST: when +// EXIST: while +// NUMBER: 17 diff --git a/idea/testData/completion/keywords/InFunctionRecieverType.kt b/idea/testData/completion/keywords/InFunctionRecieverType.kt new file mode 100644 index 00000000000..8749b6665b2 --- /dev/null +++ b/idea/testData/completion/keywords/InFunctionRecieverType.kt @@ -0,0 +1,5 @@ +fun . + +// NUMBER: 0 + +// For KT-1894 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InFunctionScope.kt b/idea/testData/completion/keywords/InFunctionScope.kt deleted file mode 100644 index 14f3acfc7d9..00000000000 --- a/idea/testData/completion/keywords/InFunctionScope.kt +++ /dev/null @@ -1,51 +0,0 @@ -fun foo() { - -} - -// ABSENT: abstract -/* // ABSENT: annotation */ -// EXIST: as -// EXIST: break -// EXIST: by -// EXIST: catch -// EXIST: class -// EXIST: continue -// EXIST: do -// EXIST: else -// EXIST: enum -// EXIST: false -// ABSENT: final -// EXIST: finally -// EXIST: for -// EXIST: fun -// EXIST: get -// EXIST: if -// ABSENT: import -// EXIST: in -// EXIST: internal -// EXIST: is -// EXIST: null -// EXIST: object -// ABSENT: open -// ABSENT: out -// ABSENT: override -// ABSENT: package -// EXIST: private -// EXIST: protected -// EXIST: public -// EXIST: return -// EXIST: set -// EXIST: super -// EXIST: This -// EXIST: this -// EXIST: throw -// EXIST: trait -// EXIST: true -// EXIST: try -// EXIST: typealias -// EXIST: val -// EXIST: var -// EXIST: vararg -// EXIST: when -// EXIST: where -// EXIST: while diff --git a/idea/testData/completion/keywords/InFunctionTypePosition.kt b/idea/testData/completion/keywords/InFunctionTypePosition.kt new file mode 100644 index 00000000000..a5ca16c17c1 --- /dev/null +++ b/idea/testData/completion/keywords/InFunctionTypePosition.kt @@ -0,0 +1,7 @@ +fun foo() { + val test : +} + +/*TODO: Is 'package' type qualifier syntax correct?*/ +// EXIST: package +// NUMBER: 1 diff --git a/idea/testData/completion/keywords/InFunctionTypeReference.kt b/idea/testData/completion/keywords/InFunctionTypeReference.kt deleted file mode 100644 index 57495c23492..00000000000 --- a/idea/testData/completion/keywords/InFunctionTypeReference.kt +++ /dev/null @@ -1,5 +0,0 @@ -fun f. - -// ABSENT: final - -// For KT-1894 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InGetterExpressionBody.kt b/idea/testData/completion/keywords/InGetterExpressionBody.kt new file mode 100644 index 00000000000..adfdbd6b9bc --- /dev/null +++ b/idea/testData/completion/keywords/InGetterExpressionBody.kt @@ -0,0 +1,21 @@ +val prop: Int + get() = + +// EXIST: break +// EXIST: continue +// EXIST: do +// EXIST: false +// EXIST: for +// EXIST: if +// EXIST: null +// EXIST: object +// EXIST: package +// EXIST: return +// EXIST: super +// EXIST: this +// EXIST: throw +// EXIST: true +// EXIST: try +// EXIST: when +// EXIST: while +// NUMBER: 17 diff --git a/idea/testData/completion/keywords/InMemberFunParametersList.kt b/idea/testData/completion/keywords/InMemberFunParametersList.kt new file mode 100644 index 00000000000..91e21b93f64 --- /dev/null +++ b/idea/testData/completion/keywords/InMemberFunParametersList.kt @@ -0,0 +1,12 @@ +package TestData + +class TestSample() { + fun test() { + } +} + +/* TODO: they all are not correct */ +// EXIST: val +// EXIST: var +// EXIST: in +// NUMBER: 3 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InMethodParametersList.kt b/idea/testData/completion/keywords/InMethodParametersList.kt deleted file mode 100644 index ea5be921211..00000000000 --- a/idea/testData/completion/keywords/InMethodParametersList.kt +++ /dev/null @@ -1,54 +0,0 @@ -package TestData - -class TestSample() { - fun test() { - } -} - -// ABSENT: abstract -// ABSENT: annotation -// ABSENT: as -// ABSENT: break -// ABSENT: by -// ABSENT: catch -// ABSENT: class -// ABSENT: continue -// ABSENT: do -// ABSENT: else -// ABSENT: enum -// ABSENT: false -// ABSENT: final -// ABSENT: finally -// ABSENT: for -// ABSENT: fun -// ABSENT: get -// ABSENT: if -// ABSENT: import -// ABSENT: in -// ABSENT: internal -// ABSENT: is -// ABSENT: null -// ABSENT: object -// ABSENT: open -// ABSENT: out -// ABSENT: override -// ABSENT: package -// ABSENT: private -// ABSENT: protected -// ABSENT: public -// ABSENT: return -// ABSENT: set -// ABSENT: super -// ABSENT: This -// ABSENT: this -// ABSENT: throw -// ABSENT: trait -// ABSENT: true -// ABSENT: try -// ABSENT: type -// ABSENT: val -// ABSENT: var -// ABSENT: vararg -// ABSENT: when -// ABSENT: where -// ABSENT: while \ No newline at end of file diff --git a/idea/testData/completion/keywords/InModifierListInsideClass.kt b/idea/testData/completion/keywords/InModifierListInsideClass.kt index 1bc7e037f9c..1e2eebd8f9a 100644 --- a/idea/testData/completion/keywords/InModifierListInsideClass.kt +++ b/idea/testData/completion/keywords/InModifierListInsideClass.kt @@ -3,4 +3,5 @@ open class Foo { p val foo = 1 } -// EXIST: private, public, protected \ No newline at end of file +// EXIST: private, public, protected, open +// NUMBER: 4 diff --git a/idea/testData/completion/keywords/InNotFinishedGenericWithFunAfter.kt b/idea/testData/completion/keywords/InNotFinishedGenericWithFunAfter.kt index 0976920a34c..98f6b0fde2e 100644 --- a/idea/testData/completion/keywords/InNotFinishedGenericWithFunAfter.kt +++ b/idea/testData/completion/keywords/InNotFinishedGenericWithFunAfter.kt @@ -2,5 +2,6 @@ class Test< fun testing() {} -// ABSENT: private, public, protected, abstract -// EXIST: in, out \ No newline at end of file +// EXIST: in +/*TODO: // EXIST: out*/ +// NUMBER: 1 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InParameterDefaultValue.kt b/idea/testData/completion/keywords/InParameterDefaultValue.kt new file mode 100644 index 00000000000..13602f98c0b --- /dev/null +++ b/idea/testData/completion/keywords/InParameterDefaultValue.kt @@ -0,0 +1,20 @@ +fun foo(p: Int = ) + +// EXIST: break +// EXIST: continue +// EXIST: do +// EXIST: false +// EXIST: for +// EXIST: if +// EXIST: null +// EXIST: object +// EXIST: package +// EXIST: return +// EXIST: super +// EXIST: this +// EXIST: throw +// EXIST: true +// EXIST: try +// EXIST: when +// EXIST: while +// NUMBER: 17 diff --git a/idea/testData/completion/keywords/InParametersList.kt b/idea/testData/completion/keywords/InParametersList.kt deleted file mode 100644 index 42220a88a1f..00000000000 --- a/idea/testData/completion/keywords/InParametersList.kt +++ /dev/null @@ -1,51 +0,0 @@ -fun test() { - -} - -// ABSENT: abstract -// ABSENT: annotation -// ABSENT: as -// ABSENT: break -// ABSENT: by -// ABSENT: catch -// ABSENT: class -// ABSENT: continue -// ABSENT: do -// ABSENT: else -// ABSENT: enum -// ABSENT: false -// ABSENT: final -// ABSENT: finally -// ABSENT: for -// ABSENT: fun -// ABSENT: get -// ABSENT: if -// ABSENT: import -// ABSENT: in -// ABSENT: internal -// ABSENT: is -// ABSENT: null -// ABSENT: object -// ABSENT: open -// ABSENT: out -// ABSENT: override -// ABSENT: package -// ABSENT: private -// ABSENT: protected -// ABSENT: public -// ABSENT: return -// ABSENT: set -// ABSENT: super -// ABSENT: This -// ABSENT: this -// ABSENT: throw -// ABSENT: trait -// ABSENT: true -// ABSENT: try -// ABSENT: type -// ABSENT: val -// ABSENT: var -// ABSENT: vararg -// ABSENT: when -// ABSENT: where -// ABSENT: while \ No newline at end of file diff --git a/idea/testData/completion/keywords/InPropertyInitializer.kt b/idea/testData/completion/keywords/InPropertyInitializer.kt new file mode 100644 index 00000000000..03563d947ff --- /dev/null +++ b/idea/testData/completion/keywords/InPropertyInitializer.kt @@ -0,0 +1,20 @@ +var a : Int = + +// EXIST: break +// EXIST: continue +// EXIST: do +// EXIST: false +// EXIST: for +// EXIST: if +// EXIST: null +// EXIST: object +// EXIST: package +// EXIST: return +// EXIST: super +// EXIST: this +// EXIST: throw +// EXIST: true +// EXIST: try +// EXIST: when +// EXIST: while +// NUMBER: 17 diff --git a/idea/testData/completion/keywords/InPropertyTypeReference.kt b/idea/testData/completion/keywords/InPropertyTypeReference.kt index 64df110d512..e26b9121ef7 100644 --- a/idea/testData/completion/keywords/InPropertyTypeReference.kt +++ b/idea/testData/completion/keywords/InPropertyTypeReference.kt @@ -1,5 +1,5 @@ val e. -// ABSENT: else +// NUMBER: 0 // For KT-1950 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InString.kt b/idea/testData/completion/keywords/InString.kt index c8266dbffa3..62b53e13c43 100644 --- a/idea/testData/completion/keywords/InString.kt +++ b/idea/testData/completion/keywords/InString.kt @@ -4,8 +4,4 @@ class TestClass { } } -// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do -// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in -// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public -// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var -// ABSENT: vararg, when, where, while \ No newline at end of file +// NUMBER: 0 diff --git a/idea/testData/completion/keywords/InTopFunParametersList.kt b/idea/testData/completion/keywords/InTopFunParametersList.kt new file mode 100644 index 00000000000..723b9c822f8 --- /dev/null +++ b/idea/testData/completion/keywords/InTopFunParametersList.kt @@ -0,0 +1,9 @@ +fun test() { + +} + +/* TODO: they all are not correct */ +// EXIST: val +// EXIST: var +// EXIST: in +// NUMBER: 3 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InTopProperty.kt b/idea/testData/completion/keywords/InTopProperty.kt deleted file mode 100644 index ea8bb7a4cbc..00000000000 --- a/idea/testData/completion/keywords/InTopProperty.kt +++ /dev/null @@ -1,8 +0,0 @@ -var a : Int = - -// EXIST: else -// EXIST: false -// EXIST: if -// EXIST: null -// EXIST: this -// EXIST: true \ No newline at end of file diff --git a/idea/testData/completion/keywords/InTopScopeAfterPackage.kt b/idea/testData/completion/keywords/InTopScopeAfterPackage.kt index 80d8446a904..33ffe618170 100644 --- a/idea/testData/completion/keywords/InTopScopeAfterPackage.kt +++ b/idea/testData/completion/keywords/InTopScopeAfterPackage.kt @@ -2,8 +2,28 @@ package Test -// EXIST: enum -// EXIST: trait +// EXIST: abstract +// EXIST: annotation // EXIST: class +// EXIST: enum +// EXIST: final // EXIST: fun - +// EXIST: import +// EXIST: in +/*why?*/ +// EXIST: inner +// EXIST: internal +// EXIST: object +// EXIST: open +// EXIST: out +/*why?*/ +// EXIST: override +// EXIST: private +// EXIST: protected +// EXIST: public +// EXIST: trait +// EXIST: val +// EXIST: var +// EXIST: vararg +/*why?*/ +// NUMBER: 21 diff --git a/idea/testData/completion/keywords/InTypeScope.kt b/idea/testData/completion/keywords/InTypeScope.kt deleted file mode 100644 index 8d698bd4ae4..00000000000 --- a/idea/testData/completion/keywords/InTypeScope.kt +++ /dev/null @@ -1,51 +0,0 @@ -fun foo() { - val test : -} - -// ABSENT: abstract -/* // ABSENT: annotation */ -// EXIST: as -// EXIST: break -// EXIST: by -// EXIST: catch -// EXIST: class -// EXIST: continue -// EXIST: do -// EXIST: else -// EXIST: enum -// EXIST: false -// ABSENT: final -// EXIST: finally -// EXIST: for -// EXIST: fun -// EXIST: get -// EXIST: if -// ABSENT: import -// EXIST: in -// EXIST: internal -// EXIST: is -// EXIST: null -// EXIST: object -// ABSENT: open -// ABSENT: out -// ABSENT: override -// ABSENT: package -// EXIST: private -// EXIST: protected -// EXIST: public -// EXIST: return -// EXIST: set -// EXIST: super -// EXIST: This -// EXIST: this -// EXIST: throw -// EXIST: trait -// EXIST: true -// EXIST: try -// EXIST: typealias -// EXIST: val -// EXIST: var -// EXIST: vararg -// EXIST: when -// EXIST: where -// EXIST: while diff --git a/idea/testData/completion/keywords/LineComment.kt b/idea/testData/completion/keywords/LineComment.kt index 00b65b0328e..af3bd9da1a0 100644 --- a/idea/testData/completion/keywords/LineComment.kt +++ b/idea/testData/completion/keywords/LineComment.kt @@ -2,8 +2,4 @@ class TestClass { // } -// ABSENT: abstract, annotation, as, break, by, catch, class, continue, default, do -// ABSENT: else, enum, false, final, finally, for, fun, get, if, import, in -// ABSENT: internal, is, null, object, open, out, override, package, private, protected, public -// ABSENT: ref, return, set, super, This, this, throw, trait, true, try, type, val, var -// ABSENT: vararg, when, where, while \ No newline at end of file +// NUMBER: 0 diff --git a/idea/testData/completion/keywords/NoCompletionForCapitalPrefix.kt b/idea/testData/completion/keywords/NoCompletionForCapitalPrefix.kt index ca982f7b7c1..3f7ca5c25a1 100644 --- a/idea/testData/completion/keywords/NoCompletionForCapitalPrefix.kt +++ b/idea/testData/completion/keywords/NoCompletionForCapitalPrefix.kt @@ -1,3 +1,3 @@ P -// ABSENT: public, private, protected \ No newline at end of file +// NUMBER: 0 diff --git a/idea/testData/completion/keywords/PropertyAccessors.kt b/idea/testData/completion/keywords/PropertyAccessors.kt new file mode 100644 index 00000000000..4aefdc5fc8a --- /dev/null +++ b/idea/testData/completion/keywords/PropertyAccessors.kt @@ -0,0 +1,32 @@ +class Some { + var a : Int + +} + +// EXIST: abstract +// EXIST: annotation +// EXIST: by +// EXIST: class +// EXIST: enum +// EXIST: final +// EXIST: fun +// EXIST: get +// EXIST: in +/*why?*/ +// EXIST: inner +// EXIST: internal +// EXIST: object +// EXIST: open +// EXIST: out +/*why?*/ +// EXIST: override +// EXIST: private +// EXIST: protected +// EXIST: public +// EXIST: set +// EXIST: trait +// EXIST: val +// EXIST: var +// EXIST: vararg +/*why?*/ +// NUMBER: 23 diff --git a/idea/testData/completion/keywords/PropertySetter.kt b/idea/testData/completion/keywords/PropertySetter.kt new file mode 100644 index 00000000000..0e4f6f69bd7 --- /dev/null +++ b/idea/testData/completion/keywords/PropertySetter.kt @@ -0,0 +1,50 @@ +/* + * Copyright 2010-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class Some { + var a : Int + get() = 0 + +} + +// EXIST: abstract +// EXIST: annotation +// EXIST: as +// EXIST: class +// EXIST: enum +// EXIST: final +// EXIST: fun +// EXIST: get +/*TODO*/ +// EXIST: in +/*why?*/ +// EXIST: inner +// EXIST: internal +// EXIST: object +// EXIST: open +// EXIST: out +/*why?*/ +// EXIST: override +// EXIST: private +// EXIST: protected +// EXIST: public +// EXIST: set +// EXIST: trait +// EXIST: val +// EXIST: var +// EXIST: vararg +/*why?*/ +// NUMBER: 23 diff --git a/idea/testData/completion/keywords/PropertySetterGetter.kt b/idea/testData/completion/keywords/PropertySetterGetter.kt deleted file mode 100644 index 16a0ed279d6..00000000000 --- a/idea/testData/completion/keywords/PropertySetterGetter.kt +++ /dev/null @@ -1,7 +0,0 @@ -class Some { - val a : Int - -} - -// EXIST: get -// EXIST: set \ No newline at end of file diff --git a/idea/testData/completion/keywords/TopScope.kt b/idea/testData/completion/keywords/TopScope.kt index 975086a9c9b..b50e7f7189f 100644 --- a/idea/testData/completion/keywords/TopScope.kt +++ b/idea/testData/completion/keywords/TopScope.kt @@ -1,50 +1,28 @@ // EXIST: abstract -// ABSENT: annotation -// ABSENT: as -// ABSENT: break -// ABSENT: by -// ABSENT: catch +// EXIST: annotation // EXIST: class -// ABSENT: continue -// ABSENT: default -// ABSENT: do -// ABSENT: else // EXIST: enum -// ABSENT: false // EXIST: final -// ABSENT: finally -// ABSENT: for // EXIST: fun -// EXIST: get -// ABSENT: if // EXIST: import -// ABSENT: in +// EXIST: in +/*why?*/ +// EXIST: inner // EXIST: internal -// ABSENT: is -// ABSENT: null +// EXIST: object // EXIST: open -// ABSENT: out -// ABSENT: override +// EXIST: out +/*why?*/ +// EXIST: override // EXIST: package // EXIST: private // EXIST: protected // EXIST: public -// ABSENT: ref -// ABSENT: return -// EXIST: set -// ABSENT: super -// ABSENT: This -// ABSENT: this -// ABSENT: throw // EXIST: trait -// ABSENT: true -// ABSENT: try -// EXIST: typealias // EXIST: val // EXIST: var -// ABSENT: vararg -// ABSENT: when -// ABSENT: where -// ABSENT: while \ No newline at end of file +// EXIST: vararg +/*why?*/ +// NUMBER: 22 diff --git a/idea/testData/completion/keywords/classObject.kt b/idea/testData/completion/keywords/classObject.kt deleted file mode 100644 index cfaa7effe3e..00000000000 --- a/idea/testData/completion/keywords/classObject.kt +++ /dev/null @@ -1,5 +0,0 @@ -class Test { - class -} - -// EXIST: object \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java index 0fff1420c09..bcd7aa0ec56 100644 --- a/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java @@ -34,6 +34,12 @@ import java.util.regex.Pattern; @TestDataPath("$PROJECT_ROOT") @RunWith(org.jetbrains.jet.JUnit3RunnerWithInners.class) public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTest { + @TestMetadata("AfterClassKeyword.kt") + public void testAfterClassKeyword() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/AfterClassKeyword.kt"); + doTest(fileName); + } + @TestMetadata("AfterClassProperty.kt") public void testAfterClassProperty() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/AfterClassProperty.kt"); @@ -56,9 +62,9 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/completion/keywords"), Pattern.compile("^(.+)\\.kt$"), false); } - @TestMetadata("classObject.kt") - public void testClassObject() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/classObject.kt"); + @TestMetadata("InArgumentList.kt") + public void testInArgumentList() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InArgumentList.kt"); doTest(fileName); } @@ -104,27 +110,45 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest(fileName); } + @TestMetadata("InCodeBlock.kt") + public void testInCodeBlock() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InCodeBlock.kt"); + doTest(fileName); + } + + @TestMetadata("InFunctionExpressionBody.kt") + public void testInFunctionExpressionBody() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InFunctionExpressionBody.kt"); + doTest(fileName); + } + @TestMetadata("InFunctionName.kt") public void testInFunctionName() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InFunctionName.kt"); doTest(fileName); } - @TestMetadata("InFunctionScope.kt") - public void testInFunctionScope() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InFunctionScope.kt"); + @TestMetadata("InFunctionRecieverType.kt") + public void testInFunctionRecieverType() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InFunctionRecieverType.kt"); doTest(fileName); } - @TestMetadata("InFunctionTypeReference.kt") - public void testInFunctionTypeReference() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InFunctionTypeReference.kt"); + @TestMetadata("InFunctionTypePosition.kt") + public void testInFunctionTypePosition() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InFunctionTypePosition.kt"); doTest(fileName); } - @TestMetadata("InMethodParametersList.kt") - public void testInMethodParametersList() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InMethodParametersList.kt"); + @TestMetadata("InGetterExpressionBody.kt") + public void testInGetterExpressionBody() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InGetterExpressionBody.kt"); + doTest(fileName); + } + + @TestMetadata("InMemberFunParametersList.kt") + public void testInMemberFunParametersList() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InMemberFunParametersList.kt"); doTest(fileName); } @@ -140,9 +164,15 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest(fileName); } - @TestMetadata("InParametersList.kt") - public void testInParametersList() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InParametersList.kt"); + @TestMetadata("InParameterDefaultValue.kt") + public void testInParameterDefaultValue() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InParameterDefaultValue.kt"); + doTest(fileName); + } + + @TestMetadata("InPropertyInitializer.kt") + public void testInPropertyInitializer() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InPropertyInitializer.kt"); doTest(fileName); } @@ -158,9 +188,9 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest(fileName); } - @TestMetadata("InTopProperty.kt") - public void testInTopProperty() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InTopProperty.kt"); + @TestMetadata("InTopFunParametersList.kt") + public void testInTopFunParametersList() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InTopFunParametersList.kt"); doTest(fileName); } @@ -170,12 +200,6 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest(fileName); } - @TestMetadata("InTypeScope.kt") - public void testInTypeScope() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/InTypeScope.kt"); - doTest(fileName); - } - @TestMetadata("LineComment.kt") public void testLineComment() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/LineComment.kt"); @@ -188,9 +212,15 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest(fileName); } - @TestMetadata("PropertySetterGetter.kt") - public void testPropertySetterGetter() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/PropertySetterGetter.kt"); + @TestMetadata("PropertyAccessors.kt") + public void testPropertyAccessors() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/PropertyAccessors.kt"); + doTest(fileName); + } + + @TestMetadata("PropertySetter.kt") + public void testPropertySetter() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/keywords/PropertySetter.kt"); doTest(fileName); }