KTIJ-650 [Code completion]: "sealed interface" is for 1.5+ only

This commit is contained in:
Andrei Klunnyi
2020-12-17 15:46:17 +01:00
parent 27ebb6c946
commit 3eb0745b58
22 changed files with 40 additions and 4 deletions
@@ -122,11 +122,13 @@ object KeywordCompletion {
fun complete(position: PsiElement, prefixMatcher: PrefixMatcher, isJvmModule: Boolean, consumer: (LookupElement) -> Unit) { fun complete(position: PsiElement, prefixMatcher: PrefixMatcher, isJvmModule: Boolean, consumer: (LookupElement) -> Unit) {
if (!GENERAL_FILTER.isAcceptable(position, position)) return if (!GENERAL_FILTER.isAcceptable(position, position)) return
val sealedInterfacesEnabled = position.languageVersionSettings.supportsFeature(LanguageFeature.SealedInterfaces)
val parserFilter = buildFilter(position) val parserFilter = buildFilter(position)
for (keywordToken in ALL_KEYWORDS) { for (keywordToken in ALL_KEYWORDS) {
val nextKeywords = keywordToken.getNextPossibleKeywords(position) ?: setOf(null) val nextKeywords = keywordToken.getNextPossibleKeywords(position) ?: setOf(null)
nextKeywords.forEach { nextKeywords.forEach {
if (keywordToken == SEALED_KEYWORD && it == INTERFACE_KEYWORD && !sealedInterfacesEnabled) return@forEach
handleCompoundKeyword(position, keywordToken, it, isJvmModule, prefixMatcher, parserFilter, consumer) handleCompoundKeyword(position, keywordToken, it, isJvmModule, prefixMatcher, parserFilter, consumer)
} }
} }
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class MouseMovedEventArgs class MouseMovedEventArgs
{ {
public val X : Int = 0 public val X : Int = 0
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class A { class A {
fun foo() { fun foo() {
bar() bar()
@@ -33,8 +33,6 @@ class B {
// EXIST: infix // EXIST: infix
// EXIST: sealed class // EXIST: sealed class
// EXIST: sealed class AfterClasses_LangLevel10 // EXIST: sealed class AfterClasses_LangLevel10
// EXIST: sealed interface AfterClasses_LangLevel10
// EXIST: sealed interface
// EXIST: data class // EXIST: data class
// EXIST: { "lookupString":"data class", "itemText":"data class", "tailText":" AfterClasses_LangLevel10(...)", "attributes":"bold" } // EXIST: { "lookupString":"data class", "itemText":"data class", "tailText":" AfterClasses_LangLevel10(...)", "attributes":"bold" }
// EXIST: inline // EXIST: inline
@@ -33,8 +33,6 @@ class B {
// EXIST: infix // EXIST: infix
// EXIST: sealed class // EXIST: sealed class
// EXIST: sealed class AfterClasses_LangLevel11 // EXIST: sealed class AfterClasses_LangLevel11
// EXIST: sealed interface AfterClasses_LangLevel11
// EXIST: sealed interface
// EXIST: data class // EXIST: data class
// EXIST: { "lookupString":"data class", "itemText":"data class", "tailText":" AfterClasses_LangLevel11(...)", "attributes":"bold" } // EXIST: { "lookupString":"data class", "itemText":"data class", "tailText":" AfterClasses_LangLevel11(...)", "attributes":"bold" }
// EXIST: inline // EXIST: inline
+2
View File
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class A { class A {
fun foo() { fun foo() {
bar() bar()
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
fun foo() { fun foo() {
bar() bar()
} }
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
annotation class Test { annotation class Test {
<caret> <caret>
} }
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
public class Test { public class Test {
<caret> <caret>
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class TestClass { class TestClass {
<caret> <caret>
} }
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
enum class Test { enum class Test {
; ;
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
interface Test { interface Test {
<caret> <caret>
} }
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
object Test { object Test {
<caret> <caret>
} }
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
package Test package Test
<caret> <caret>
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class Some { class Some {
var a : Int var a : Int
<caret> <caret>
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class Some { class Some {
var a : Int = 1 var a : Int = 1
<caret> <caret>
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class Some { class Some {
var a : Int var a : Int
get() = 0 get() = 0
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
seal<caret> seal<caret>
// EXIST: "sealed class SealedWithName" // EXIST: "sealed class SealedWithName"
// EXIST: "sealed interface SealedWithName" // EXIST: "sealed interface SealedWithName"
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
class OuterClass { class OuterClass {
seal<caret> seal<caret>
} }
+2
View File
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
<caret> <caret>
// EXIST: abstract // EXIST: abstract
+2
View File
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
<caret> <caret>
// EXIST: abstract // EXIST: abstract
+2
View File
@@ -1,3 +1,5 @@
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+MultiPlatformProjects
<caret> <caret>
// EXIST: abstract // EXIST: abstract