From 167917cf07e44a7daa34dd15d44e2ad8bed2f54c Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 9 Jun 2021 13:11:09 +0200 Subject: [PATCH] FIR IDE: ignore attributes in completion tests --- .../common/boldOrGrayed/AfterNullableAutoCast.kt | 1 + .../common/boldOrGrayed/AfterNullableAutoCast2.kt | 1 + .../boldOrGrayed/ImmediateExtensionMembers1.kt | 1 + .../boldOrGrayed/ImmediateExtensionMembers2.kt | 1 + .../boldOrGrayed/ImmediateExtensionMembersGeneric.kt | 1 + .../basic/common/boldOrGrayed/ImmediateMembers1.kt | 1 + .../basic/common/boldOrGrayed/ImmediateMembers2.kt | 1 + .../basic/common/boldOrGrayed/ImmediateMembers3.kt | 1 + .../basic/common/boldOrGrayed/ImmediateMembers5.kt | 1 + .../testData/basic/common/boldOrGrayed/KT9835.kt | 1 + .../common/boldOrGrayed/NonPredictableSmartCast.kt | 1 + .../NonPredictableSmartCastWithWrongReturnType.kt | 1 + .../basic/common/boldOrGrayed/TwoReceivers.kt | 1 + .../basic/common/dslMarker/2dslsInsideOtherChild.kt | 1 + .../testData/basic/common/dslMarker/root.kt | 1 + .../common/inStringLiterals/StringTemplateDot.kt | 1 + .../boldOrGrayed/ImmediateMembersForPlatformType.kt | 1 + .../idea/completion/test/CompletionTestUtil.kt | 5 +++-- .../idea/completion/test/ExpectedCompletionUtils.kt | 12 +++++++----- .../test/KotlinFixtureCompletionBaseTestCase.kt | 3 +++ .../AbstractHighLevelJvmBasicCompletionTest.kt | 4 ++++ 21 files changed, 34 insertions(+), 7 deletions(-) diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast.kt index bf2a071df2c..0f174dc144c 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON fun String?.forNullableString(){} fun Any?.forNullableAny(){} fun String.forString(){} diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast2.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast2.kt index 858e2f5fc96..bde6ca15586 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast2.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/AfterNullableAutoCast2.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON interface T1 { fun inT1(){} } diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers1.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers1.kt index 8da751284c5..5a6ff012cbe 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers1.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers1.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON fun String.extFunForString(){} fun Any.extFunForAny(){} fun String?.extFunForStringNullable(){} diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers2.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers2.kt index f508bea0ff3..1bb9e6750cd 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers2.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembers2.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON fun String.extFunForString(){} fun Any.extFunForAny(){} fun String?.extFunForStringNullable(){} diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembersGeneric.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembersGeneric.kt index 560520bc33d..8da0b9371d5 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembersGeneric.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateExtensionMembersGeneric.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON fun List.forListT(){} fun Collection.forCollectionT(){} fun T.forT() {} diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers1.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers1.kt index e9cdac32a53..8db5e5b734e 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers1.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers1.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON interface T { fun fromTrait(){} } diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers2.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers2.kt index b3b32077627..aeb728e494c 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers2.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers2.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON interface T { fun fromTrait(){} } diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers3.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers3.kt index 36c6a4f2eca..80b2bebaf3d 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers3.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers3.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON interface T { fun f(){} } diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers5.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers5.kt index dadb0559da5..1fc60f8ae9a 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers5.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/ImmediateMembers5.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON fun globalFun(){} interface T { diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/KT9835.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/KT9835.kt index ef84f674871..27f8d47c44e 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/KT9835.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/KT9835.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON interface R val R.prop: Int get() = TODO() diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCast.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCast.kt index dd79c7320db..672da669fdb 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCast.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCast.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON // COMPILER_ARGUMENTS: -XXLanguage:-NewInference fun String.forString(){} diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCastWithWrongReturnType.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCastWithWrongReturnType.kt index 2ff38e3d707..ac2b7807014 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCastWithWrongReturnType.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/NonPredictableSmartCastWithWrongReturnType.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON // COMPILER_ARGUMENTS: -XXLanguage:-NewInference interface A { diff --git a/idea/idea-completion/testData/basic/common/boldOrGrayed/TwoReceivers.kt b/idea/idea-completion/testData/basic/common/boldOrGrayed/TwoReceivers.kt index 15d4321ee21..92efa1bd85e 100644 --- a/idea/idea-completion/testData/basic/common/boldOrGrayed/TwoReceivers.kt +++ b/idea/idea-completion/testData/basic/common/boldOrGrayed/TwoReceivers.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON interface Base { fun inBase() } diff --git a/idea/idea-completion/testData/basic/common/dslMarker/2dslsInsideOtherChild.kt b/idea/idea-completion/testData/basic/common/dslMarker/2dslsInsideOtherChild.kt index 70168873254..aff3072f691 100644 --- a/idea/idea-completion/testData/basic/common/dslMarker/2dslsInsideOtherChild.kt +++ b/idea/idea-completion/testData/basic/common/dslMarker/2dslsInsideOtherChild.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON @DslMarker annotation class SimpleDsl diff --git a/idea/idea-completion/testData/basic/common/dslMarker/root.kt b/idea/idea-completion/testData/basic/common/dslMarker/root.kt index ad9683041a8..576b2c2bb77 100644 --- a/idea/idea-completion/testData/basic/common/dslMarker/root.kt +++ b/idea/idea-completion/testData/basic/common/dslMarker/root.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON @DslMarker annotation class SimpleDsl diff --git a/idea/idea-completion/testData/basic/common/inStringLiterals/StringTemplateDot.kt b/idea/idea-completion/testData/basic/common/inStringLiterals/StringTemplateDot.kt index 483455c7215..45e7defbb7f 100644 --- a/idea/idea-completion/testData/basic/common/inStringLiterals/StringTemplateDot.kt +++ b/idea/idea-completion/testData/basic/common/inStringLiterals/StringTemplateDot.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON fun foo(param: String) { val s = "$param.bla-bla-bla" } diff --git a/idea/idea-completion/testData/basic/java/boldOrGrayed/ImmediateMembersForPlatformType.kt b/idea/idea-completion/testData/basic/java/boldOrGrayed/ImmediateMembersForPlatformType.kt index 5ed0c7fe81b..fa09730f3d9 100644 --- a/idea/idea-completion/testData/basic/java/boldOrGrayed/ImmediateMembersForPlatformType.kt +++ b/idea/idea-completion/testData/basic/java/boldOrGrayed/ImmediateMembersForPlatformType.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON fun String.extFunForString(){} fun Any.extFunForAny(){} fun String?.extFunForStringNullable(){} diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt index 8636415e822..1a5161cc631 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt @@ -22,6 +22,7 @@ fun testCompletion( complete: (CompletionType, Int) -> Array?, defaultCompletionType: CompletionType = CompletionType.BASIC, defaultInvocationCount: Int = 0, + ignoreProperties: Collection = emptyList(), additionalValidDirectives: Collection = emptyList() ) { testWithAutoCompleteSetting(fileText) { @@ -40,8 +41,8 @@ fun testCompletion( "Should be some assertions about completion", expected.size != 0 || unexpected.size != 0 || itemsNumber != null || nothingElse ) - ExpectedCompletionUtils.assertContainsRenderedItems(expected, items, ExpectedCompletionUtils.isWithOrder(fileText), nothingElse) - ExpectedCompletionUtils.assertNotContainsRenderedItems(unexpected, items) + ExpectedCompletionUtils.assertContainsRenderedItems(expected, items, ExpectedCompletionUtils.isWithOrder(fileText), nothingElse, ignoreProperties) + ExpectedCompletionUtils.assertNotContainsRenderedItems(unexpected, items, ignoreProperties) if (itemsNumber != null) { val expectedItems = ExpectedCompletionUtils.listToString(ExpectedCompletionUtils.getItemsInformation(items)) diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt index b4cf212dac5..b54980a5498 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt @@ -64,9 +64,10 @@ object ExpectedCompletionUtils { } } - fun matches(expectedProposal: CompletionProposal): Boolean { + fun matches(expectedProposal: CompletionProposal, ignoreProperties: Collection): Boolean { return expectedProposal.map.entries.none { expected -> val actualValues = when (expected.key) { + in ignoreProperties -> return@none false "lookupString" -> { // FIR IDE adds `.` after package names in completion listOf(map[expected.key]?.removeSuffix("."), map[expected.key]) @@ -223,7 +224,8 @@ object ExpectedCompletionUtils { expected: Array, items: Array, checkOrder: Boolean, - nothingElse: Boolean + nothingElse: Boolean, + ignoreProperties: Collection, ) { val itemsInformation = getItemsInformation(items) val allItemsString = listToString(itemsInformation) @@ -238,7 +240,7 @@ object ExpectedCompletionUtils { for (index in itemsInformation.indices) { val proposal = itemsInformation[index] - if (proposal.matches(expectedProposal)) { + if (proposal.matches(expectedProposal, ignoreProperties)) { isFound = true Assert.assertTrue( @@ -280,7 +282,7 @@ object ExpectedCompletionUtils { return InTextDirectivesUtils.getPrefixedInt(fileText, NUMBER_LINE_PREFIX) } - fun assertNotContainsRenderedItems(unexpected: Array, items: Array) { + fun assertNotContainsRenderedItems(unexpected: Array, items: Array, ignoreProperties: Collection) { val itemsInformation = getItemsInformation(items) val allItemsString = listToString(itemsInformation) @@ -288,7 +290,7 @@ object ExpectedCompletionUtils { for (proposal in itemsInformation) { Assert.assertFalse( "Unexpected '$unexpectedProposal' presented in\n$allItemsString", - proposal.matches(unexpectedProposal) + proposal.matches(unexpectedProposal, ignoreProperties) ) } } diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt index 394cb43e695..fbbe0bb2d7e 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt @@ -46,6 +46,7 @@ abstract class KotlinFixtureCompletionBaseTestCase : KotlinLightCodeInsightFixtu { completionType, count -> complete(completionType, count) }, defaultCompletionType(), defaultInvocationCount(), + ignoreProperties = ignoreProperties, additionalValidDirectives = CompilerTestDirectives.ALL_COMPILER_TEST_DIRECTIVES + IgnoreTests.DIRECTIVES.FIR_IDENTICAL ) } @@ -55,6 +56,8 @@ abstract class KotlinFixtureCompletionBaseTestCase : KotlinLightCodeInsightFixtu } } + open val ignoreProperties: Collection = emptyList() + protected open fun executeTest(test: () -> Unit) { test() } diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/completion/AbstractHighLevelJvmBasicCompletionTest.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/completion/AbstractHighLevelJvmBasicCompletionTest.kt index 6d37bbe4802..9b4da3850a1 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/completion/AbstractHighLevelJvmBasicCompletionTest.kt +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/completion/AbstractHighLevelJvmBasicCompletionTest.kt @@ -6,11 +6,15 @@ package org.jetbrains.kotlin.idea.fir.completion import org.jetbrains.kotlin.idea.completion.test.AbstractJvmBasicCompletionTest +import org.jetbrains.kotlin.idea.completion.test.ExpectedCompletionUtils import org.jetbrains.kotlin.test.utils.IgnoreTests abstract class AbstractHighLevelJvmBasicCompletionTest : AbstractJvmBasicCompletionTest() { override val captureExceptions: Boolean = false + override val ignoreProperties: Collection = + listOf(ExpectedCompletionUtils.CompletionProposal.PRESENTATION_TEXT_ATTRIBUTES) + override fun executeTest(test: () -> Unit) { IgnoreTests.runTestIfEnabledByFileDirective(testDataFile().toPath(), IgnoreTests.DIRECTIVES.FIR_COMPARISON, ".after") { super.executeTest(test)