FIR IDE: Allow FIR-specific "after" files for

AbstractHighLevelQuickFixTest.
This commit is contained in:
Mark Punzalan
2021-03-18 22:23:29 +00:00
committed by Ilya Kirillov
parent 14ca2d207d
commit e9298d1d71
57 changed files with 76 additions and 57 deletions
@@ -7,7 +7,9 @@ package org.jetbrains.kotlin.idea.quickfix
import com.intellij.codeInsight.intention.IntentionAction
import com.intellij.codeInspection.InspectionProfileEntry
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.test.uitls.IgnoreTests
import java.io.File
import java.nio.file.Paths
@@ -15,7 +17,7 @@ abstract class AbstractHighLevelQuickFixTest : AbstractQuickFixTest() {
override fun doTest(beforeFileName: String) {
IgnoreTests.runTestIfEnabledByFileDirective(
Paths.get(beforeFileName),
enableTestDirective = IgnoreTests.DIRECTIVES.FIR_COMPARISON_MUTLTILINE_COMMENT,
enableTestDirective = IgnoreTests.DIRECTIVES.FIR_COMPARISON_MULTILINE_COMMENT,
directivePosition = IgnoreTests.DirectivePosition.LAST_LINE_IN_FILE,
additionalFilesExtensions = arrayOf("after")
) {
@@ -23,6 +25,15 @@ abstract class AbstractHighLevelQuickFixTest : AbstractQuickFixTest() {
}
}
override fun getAfterFileName(beforeFileName: String): String {
val firAfterFile = File(testPath(beforeFileName + ".fir.after"))
return if (firAfterFile.exists()) {
firAfterFile.name
} else {
super.getAfterFileName(beforeFileName)
}
}
// TODO: Enable these as more actions/inspections are enabled, and/or add more FIR-specific directives
override fun checkForUnexpectedErrors() {}
override fun checkAvailableActionsAreExpected(actions: List<IntentionAction>) {}
@@ -170,7 +170,7 @@ object IgnoreTests {
object DIRECTIVES {
const val FIR_COMPARISON = "// FIR_COMPARISON"
const val FIR_COMPARISON_MUTLTILINE_COMMENT = "/* FIR_COMPARISON */"
const val FIR_COMPARISON_MULTILINE_COMMENT = "/* FIR_COMPARISON */"
const val IGNORE_FIR = "// IGNORE_FIR"
const val FIX_ME = "// FIX_ME: "
}
@@ -2,4 +2,4 @@
class A() {
<caret>abstract fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -8,4 +8,4 @@ class Owner {
<caret>abstract val x: Int
}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
<caret>abstract var i : Int
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
abstract class A() {
<caret>abstract var i : Int
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
<caret>abstract var i : Int = 0
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
var i : Int = 0
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
public class A() {
<caret>abstract var i : Int
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
public abstract class A() {
<caret>abstract var i : Int
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ class B {
<caret>abstract val i: Int = 0
get() = field
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ class B {
val i: Int = 0
get() = field
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A {
<caret>abstract var i = 0
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A {
<caret>var i = 0
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ class B {
abstract<caret> var j: Int = 0
set(v: Int) {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ class B {
var j: Int = 0
set(v: Int) {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -7,4 +7,4 @@ enum class E {
abstract fun foo()
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -10,4 +10,4 @@ interface I {
}
inline class A<caret> : I
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -8,4 +8,4 @@
object O {
<caret>fun foo()
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -6,4 +6,4 @@
// ERROR: Function 'foo' must have a body
<caret>fun foo()
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -19,4 +19,4 @@ object Impl : D, E {
}
<caret>class X : D by Impl, E by Impl {}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
sealed class A() {
fun <caret>i() : Int
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
sealed class A() {
abstract fun <caret>i() : Int
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
fun <caret>foo()
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
fun <caret>foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -2,4 +2,4 @@
abstract class B() {
open fun <caret>foo()
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -2,4 +2,4 @@
abstract class B() {
abstract fun <caret>foo()
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -11,4 +11,4 @@ fun foo() {
val test: Some? = Some()
for (i in <caret>test) { }
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ abstract class My {
abstract var foo: Int
<caret>private set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ abstract class My {
abstract var foo: Int
set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -4,4 +4,4 @@ class A() {
abstract class <caret>C
}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -4,4 +4,4 @@ class A() {
abstract inner class C
}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+1 -1
View File
@@ -5,4 +5,4 @@ class A() {
}
}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -5,4 +5,4 @@ class A() {
}
}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
<caret>open fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
open class A() {
<caret>open fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
<caret>open fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
class A() {
<caret>fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
public class A() {
<caret>open fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
public open class A() {
<caret>open fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -2,4 +2,4 @@
@Deprecated("") class A() {
<caret>open fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@
open class A() {
open fun foo() {}
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ open class My {
open var foo = 42
<caret>private set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ open class My {
var foo = 42
<caret>private set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ open class My {
open var foo = 42
<caret>private set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -3,4 +3,4 @@ open class My {
open var foo = 42
<caret>set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -7,4 +7,4 @@ open class FooImpl : Foo {
override var bar: String = ""
<caret>private set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -7,4 +7,4 @@ open class FooImpl : Foo {
final override var bar: String = ""
<caret>private set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -7,4 +7,4 @@ open class FooImpl : Foo {
override var bar: String = ""
<caret>private set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -7,4 +7,4 @@ open class FooImpl : Foo {
override var bar: String = ""
<caret>set
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
@@ -12,4 +12,4 @@ interface C : A, B {
override fun foo(): <caret>Long
}
/* FIR_COMPARISON */
/* FIR_COMPARISON */
+2 -1
View File
@@ -5,4 +5,5 @@ fun foo(a: String?) {
// comment2
.<caret>length
}
/* FIR_COMPARISON */
// FIR_IDENTICAL
/* FIR_COMPARISON */
@@ -5,4 +5,5 @@ fun foo(a: String?) {
// comment2
?.length
}
/* FIR_COMPARISON */
// FIR_IDENTICAL
/* FIR_COMPARISON */
+2 -1
View File
@@ -4,4 +4,5 @@ fun foo(a: String?) {
val b = a
.<caret>length
}
/* FIR_COMPARISON */
// FIR_IDENTICAL
/* FIR_COMPARISON */
@@ -4,4 +4,5 @@ fun foo(a: String?) {
val b = a
?.length
}
/* FIR_COMPARISON */
// FIR_IDENTICAL
/* FIR_COMPARISON */
@@ -191,7 +191,7 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
)
}
myFixture.checkResultByFile(File(fileName).name + ".after")
myFixture.checkResultByFile(getAfterFileName(fileName))
if (stubComparisonFailure != null) {
throw stubComparisonFailure
@@ -201,6 +201,10 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
}
}
protected open fun getAfterFileName(beforeFileName: String): String {
return File(beforeFileName).name + ".after"
}
@Throws(ClassNotFoundException::class)
private fun checkForUnexpectedActions() {
val text = myFixture.editor.document.text