diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetExtensionReceiverTypeContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetExtensionReceiverTypeContributor.java index 3f7a369a7f1..2676a853545 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetExtensionReceiverTypeContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetExtensionReceiverTypeContributor.java @@ -28,11 +28,10 @@ import org.jetbrains.jet.lexer.JetTokens; * Special contributor for getting completion of type for extensions receiver. */ public class JetExtensionReceiverTypeContributor extends CompletionContributor { + // A way to add reference into file at completion place + public static final String DUMMY_IDENTIFIER = "KotlinExtensionDummy.fake() {}"; - static final String DUMMY_IDENTIFIER = "KotlinExtensionDummy.fake() {}"; - - static final ElementPattern ACTIVATION_PATTERN = - // TODO: Check for fun with generic type parameters + public static final ElementPattern ACTIVATION_PATTERN = PlatformPatterns.psiElement().afterLeaf( JetTokens.FUN_KEYWORD.toString(), JetTokens.VAL_KEYWORD.toString(), diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt index d8cdd9d75a9..e3609c2c2cc 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.kt @@ -33,17 +33,15 @@ import com.intellij.psi.filters.position.PositionElementFilter import com.intellij.util.containers.MultiMap import java.util.HashSet import com.intellij.openapi.util.text.StringUtil -import com.intellij.codeInsight.completion.PrefixMatcher -import com.intellij.codeInsight.completion.CompletionProvider -import com.intellij.codeInsight.completion.CompletionParameters -import com.intellij.codeInsight.completion.CompletionResultSet -import com.intellij.util.ProcessingContext -import com.intellij.codeInsight.lookup.LookupElementBuilder +import com.intellij.codeInsight.completion.* import org.jetbrains.jet.plugin.completion.handlers.JetFunctionInsertHandler -import com.intellij.psi.filters.position.FilterPattern -import com.intellij.patterns.PlatformPatterns import org.jetbrains.jet.plugin.completion.handlers.JetKeywordInsertHandler import org.jetbrains.jet.plugin.completion.weigher.addJetSorting +import com.intellij.util.ProcessingContext +import com.intellij.codeInsight.lookup.LookupElementBuilder +import com.intellij.psi.filters.position.FilterPattern +import com.intellij.patterns.PlatformPatterns +import com.intellij.psi.filters.position.PatternFilter public open class JetKeywordCompletionContributor() : CompletionContributor() { { @@ -153,6 +151,7 @@ public open class JetKeywordCompletionContributor() : CompletionContributor() { CommentFilter(), ParentFilter(ClassFilter(javaClass())), ParentFilter(ClassFilter(javaClass())), + PatternFilter(JetExtensionReceiverTypeContributor.ACTIVATION_PATTERN), LeftNeighbour(TextFilter(".")) )) diff --git a/idea/testData/completion/keywords/InClassNoCompletionInValName.kt b/idea/testData/completion/keywords/InClassNoCompletionInValName.kt new file mode 100644 index 00000000000..8eccdf21d6e --- /dev/null +++ b/idea/testData/completion/keywords/InClassNoCompletionInValName.kt @@ -0,0 +1,6 @@ +class Test { + val +} + +// NUMBER: 0 +/* KT-4158 Type "var i" and press space. "var if" is auto-inserted. */ \ No newline at end of file diff --git a/idea/testData/completion/keywords/InFunctionName.kt b/idea/testData/completion/keywords/InFunctionName.kt index 360c1ff4af9..5f87b974423 100644 --- a/idea/testData/completion/keywords/InFunctionName.kt +++ b/idea/testData/completion/keywords/InFunctionName.kt @@ -2,51 +2,4 @@ fun () { } -// 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: inline -// 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 +// NUMBER: 0 \ No newline at end of file diff --git a/idea/testData/completion/keywords/InFunctionNoCompletionInValName.kt b/idea/testData/completion/keywords/InFunctionNoCompletionInValName.kt new file mode 100644 index 00000000000..bc452017e7c --- /dev/null +++ b/idea/testData/completion/keywords/InFunctionNoCompletionInValName.kt @@ -0,0 +1,8 @@ +fun test() { + val +} + +// NUMBER: 0 + +/* KT-4158 Type "var i" and press space. "var if" is auto-inserted. */ + diff --git a/idea/testData/completion/keywords/InTopNoCompletionInVarName.kt b/idea/testData/completion/keywords/InTopNoCompletionInVarName.kt new file mode 100644 index 00000000000..a17f27c1dab --- /dev/null +++ b/idea/testData/completion/keywords/InTopNoCompletionInVarName.kt @@ -0,0 +1,5 @@ +var + +// NUMBER: 0 + +/* KT-4158 Type "var i" and press space. "var if" is auto-inserted. */ \ 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 75b645d36e5..15e5087fcc0 100644 --- a/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/KeywordCompletionTestGenerated.java @@ -71,6 +71,11 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest("idea/testData/completion/keywords/InClassBeforeFun.kt"); } + @TestMetadata("InClassNoCompletionInValName.kt") + public void testInClassNoCompletionInValName() throws Exception { + doTest("idea/testData/completion/keywords/InClassNoCompletionInValName.kt"); + } + @TestMetadata("InClassProperty.kt") public void testInClassProperty() throws Exception { doTest("idea/testData/completion/keywords/InClassProperty.kt"); @@ -91,6 +96,11 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest("idea/testData/completion/keywords/InFunctionName.kt"); } + @TestMetadata("InFunctionNoCompletionInValName.kt") + public void testInFunctionNoCompletionInValName() throws Exception { + doTest("idea/testData/completion/keywords/InFunctionNoCompletionInValName.kt"); + } + @TestMetadata("InFunctionScope.kt") public void testInFunctionScope() throws Exception { doTest("idea/testData/completion/keywords/InFunctionScope.kt"); @@ -131,6 +141,11 @@ public class KeywordCompletionTestGenerated extends AbstractKeywordCompletionTes doTest("idea/testData/completion/keywords/InString.kt"); } + @TestMetadata("InTopNoCompletionInVarName.kt") + public void testInTopNoCompletionInVarName() throws Exception { + doTest("idea/testData/completion/keywords/InTopNoCompletionInVarName.kt"); + } + @TestMetadata("InTopProperty.kt") public void testInTopProperty() throws Exception { doTest("idea/testData/completion/keywords/InTopProperty.kt");