[kotlin] Improve test coverage of collected FUS quickfixes data

#KTIJ-389

GitOrigin-RevId: c8554b77a988a77484d1dada64353345b7a1fa35
This commit is contained in:
Vladimir Dolzhenko
2023-07-20 05:59:17 +00:00
committed by intellij-monorepo-bot
parent a2b07c9418
commit bab54c6d29
5063 changed files with 11037 additions and 2967 deletions
@@ -6,7 +6,7 @@ import com.jetbrains.fus.reporting.model.lion3.LogEvent
import java.util.concurrent.CompletableFuture
import java.util.concurrent.Executor
class TestStatisticsEventLogger(private val session: String = "testSession",
open class TestStatisticsEventLogger(private val session: String = "testSession",
private val build: String = "999.999",
private val bucket: String = "1",
private val recorderVersion: String = "1") : StatisticsEventLogger {
@@ -3,3 +3,6 @@ import kotlin.*;<caret>
fun foo() {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
@@ -3,3 +3,6 @@ import kotlin.*<caret>
fun foo() {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
@@ -5,4 +5,6 @@ fun foo() {
}
fun a(){}
fun b(){}
fun b(){}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
@@ -5,4 +5,6 @@ fun foo() {
}
fun a(){}
fun b(){}
fun b(){}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.codeinsights.impl.base.quickFix.DeletePsiElementOfInterestFix
@@ -5,3 +5,5 @@ import kotlinx.serialization.json.*
fun foo() {
<caret>Json {}.encodeToString(Any())
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.compilerPlugin.kotlinxSerialization.quickfixes.JsonRedundantDefaultQuickFix
@@ -5,3 +5,5 @@ import kotlinx.serialization.json.*
fun foo() {
Json.encodeToString(Any())
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.compilerPlugin.kotlinxSerialization.quickfixes.JsonRedundantDefaultQuickFix
@@ -6,3 +6,5 @@ import kotlinx.serialization.json.Json as Alias
fun foo() {
<caret>Alias {}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.compilerPlugin.kotlinxSerialization.quickfixes.JsonRedundantDefaultQuickFix
@@ -6,3 +6,5 @@ import kotlinx.serialization.json.Json as Alias
fun foo() {
Alias
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.compilerPlugin.kotlinxSerialization.quickfixes.JsonRedundantDefaultQuickFix
@@ -10,7 +10,11 @@ import com.intellij.codeInsight.intention.impl.CachedIntentions
import com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler
import com.intellij.codeInspection.SuppressableProblemGroup
import com.intellij.codeInspection.ex.QuickFixWrapper
import com.intellij.internal.statistic.eventLog.StatisticsEventLoggerProvider
import com.intellij.openapi.Disposable
import com.intellij.openapi.command.CommandProcessor
import com.intellij.openapi.extensions.LoadingOrder
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.util.text.StringUtil
import com.intellij.openapi.vfs.CharsetToolkit
@@ -18,6 +22,7 @@ import com.intellij.rt.execution.junit.FileComparisonFailure
import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.testFramework.PsiTestUtil
import com.intellij.testFramework.UsefulTestCase
import com.intellij.util.io.write
import com.intellij.util.ui.UIUtil
import junit.framework.TestCase
import org.jetbrains.kotlin.idea.caches.resolve.ResolveInDispatchThreadException
@@ -25,6 +30,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.forceCheckForResolveInDispatchTh
import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.QuickFixActionBase
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
import org.jetbrains.kotlin.idea.facet.KotlinFacet
import org.jetbrains.kotlin.idea.statistic.FilterableTestStatisticsEventLoggerProvider
import org.jetbrains.kotlin.idea.test.*
import org.jetbrains.kotlin.psi.KtFile
import org.junit.Assert
@@ -57,8 +63,38 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
}
}
private var statisticDisposable: Disposable? = null
protected var statisticsEventLoggerProvider: FilterableTestStatisticsEventLoggerProvider? = null
private var actionHint: ActionHint? = null
override fun setUp() {
super.setUp()
val newDisposable = Disposer.newDisposable(testRootDisposable, "statisticTestDisposable")
statisticDisposable = newDisposable
val loggerProvider = FilterableTestStatisticsEventLoggerProvider("FUS") { it == "called" }
statisticsEventLoggerProvider = loggerProvider
StatisticsEventLoggerProvider.EP_NAME.point.registerExtension(
loggerProvider,
LoadingOrder.FIRST,
newDisposable
)
}
override fun tearDown() {
runAll(
{
actionHint = null
statisticDisposable?.let(Disposer::dispose)
statisticDisposable = null
},
{ super.tearDown() },
)
}
protected open fun doTest(beforeFileName: String) {
val beforeFileText = FileUtil.loadFile(File(beforeFileName))
val beforeFile = File(beforeFileName)
val beforeFileText = FileUtil.loadFile(beforeFile)
InTextDirectivesUtils.checkIfMuted(beforeFileText)
withCustomCompilerOptions(beforeFileText, project, module) {
loadScriptConfiguration()
@@ -69,6 +105,7 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
doKotlinQuickFixTest(beforeFileName)
checkForUnexpectedErrors()
checkFusEvents(beforeFile, beforeFileText)
PsiTestUtil.checkPsiStructureWithCommit(file, PsiTestUtil::checkPsiMatchesTextIgnoringNonCode)
} finally {
myFixture.disableInspections(*inspections)
@@ -76,6 +113,49 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
}
}
private fun checkFusEvents(file: File, fileText: String) {
val calledEventIds = statisticsEventLoggerProvider!!.getLoggedEvents()
.map { it.event }
.filter {
it.id == "called"
}
.map {
it.data["id"]
}
val applyQuickFix = applyQuickFix()
if (actionHint?.shouldPresent() == false || !applyQuickFix) {
assertTrue("no `called` event should happen: $calledEventIds", calledEventIds.isEmpty())
return
}
val calledId = calledEventIds.singleOrNull() as? String ?: error("single `called` event is expected: $calledEventIds")
val fusDirectiveName = if (isFirPlugin) {
"FUS_K2_QUICKFIX_NAME"
} else {
"FUS_QUICKFIX_NAME"
}
val quickFixName = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// $fusDirectiveName:")
if (quickFixName.isNullOrEmpty()) {
val expected = """
|$fileText
|// $fusDirectiveName: $calledId
""".trimMargin()
throw FileComparisonFailure(
"expected to find quickfix `called` id", fileText, expected, file.toString()
)
}
if (calledId != quickFixName) {
throw FileComparisonFailure(
"expected to find quickfix `called` id",
fileText,
fileText.replace("// $fusDirectiveName: $quickFixName", "// $fusDirectiveName: $calledId"),
file.toString()
)
}
}
override fun getProjectDescriptor(): LightProjectDescriptor =
if ("createfromusage" in testDataDirectory.path.toLowerCase()) {
// TODO: WTF
@@ -170,12 +250,13 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
}
private fun applyAction(contents: String, fileName: String) {
val actionHint = ActionHint.parse(myFixture.file, contents.replace("\${file}", fileName, ignoreCase = true))
val intention = findActionWithText(actionHint.expectedText)
if (actionHint.shouldPresent()) {
val hint = ActionHint.parse(myFixture.file, contents.replace("\${file}", fileName, ignoreCase = true))
actionHint = hint
val intention = findActionWithText(hint.expectedText)
if (hint.shouldPresent()) {
if (intention == null) {
fail(
"Action with text '" + actionHint.expectedText + "' not found\nAvailable actions:\n" +
"Action with text '" + hint.expectedText + "' not found\nAvailable actions:\n" +
myFixture.availableIntentions.joinToString(separator = "\n") { "// \"${it.text}\" \"true\"" })
return
}
@@ -201,8 +282,7 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
}
}
val applyQuickFix = (InTextDirectivesUtils.findStringWithPrefixes(myFixture.file.text, "// $APPLY_QUICKFIX_DIRECTIVE: ")
?: "true").toBoolean()
val applyQuickFix = applyQuickFix()
val stubComparisonFailure: ComparisonFailure?
if (applyQuickFix) {
stubComparisonFailure = try {
@@ -218,10 +298,10 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
UIUtil.dispatchAllInvocationEvents()
if (!shouldBeAvailableAfterExecution()) {
var action = findActionWithText(actionHint.expectedText)
var action = findActionWithText(hint.expectedText)
action = if (action == null) null else IntentionActionDelegate.unwrap(action)
assertNull(
"Action '${actionHint.expectedText}' (${action?.javaClass}) is still available after its invocation in test " + fileName,
"Action '${hint.expectedText}' (${action?.javaClass}) is still available after its invocation in test " + fileName,
action
)
}
@@ -233,10 +313,12 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
stubComparisonFailure?.let { throw it }
} else {
assertNull("Action with text ${actionHint.expectedText} is present, but should not", intention)
assertNull("Action with text ${hint.expectedText} is present, but should not", intention)
}
}
private fun applyQuickFix() = InTextDirectivesUtils.getPrefixedBoolean(myFixture.file.text, "$APPLY_QUICKFIX_DIRECTIVE:") != false
protected open fun getAfterFileName(beforeFileName: String): String {
return File(beforeFileName).name + ".after"
}
@@ -2,3 +2,6 @@
class A() {
<caret>abstract fun foo() {}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -2,3 +2,6 @@
class A() {
fun foo() {}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@ abstract class A() {
<caret>abstract fun foo() {}
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -3,4 +3,5 @@ abstract class A() {
<caret>abstract fun foo()
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -3,4 +3,5 @@ abstract class A() {
<caret>abstract fun foo() : Any { return "a" }
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -3,4 +3,5 @@ abstract class A() {
<caret>abstract fun foo() : Any
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -3,4 +3,5 @@ abstract class A() {
<caret>abstract fun foo() : Any = 1
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -3,4 +3,5 @@ abstract class A() {
<caret>abstract fun foo() : Any
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -5,4 +5,5 @@ abstract class A() {
}
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -3,4 +3,5 @@ abstract class A() {
<caret>abstract fun foo() /*1*/
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -4,4 +4,5 @@ abstract class A() {
{ "" /*2*/ } // 3
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -4,4 +4,5 @@ abstract class A() {
abstract fun foo() // 3
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveFunctionBodyFix
@@ -2,3 +2,6 @@
class A() {
<caret>abstract var i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
abstract class A() {
<caret>abstract var i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
class A() {
<caret>abstract var i : Int = 0
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -2,3 +2,6 @@
class A() {
var i : Int = 0
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -2,3 +2,6 @@
public class A() {
<caret>abstract var i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
public abstract class A() {
<caret>abstract var i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -1,2 +1,4 @@
// "Make 'i' not abstract" "true"
class A(<caret>abstract val i: Int) {}
class A(<caret>abstract val i: Int) {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,2 +1,4 @@
// "Make 'i' not abstract" "true"
class A(<caret>val i: Int) {}
class A(<caret>val i: Int) {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,2 +1,5 @@
// "Make 'i' not abstract" "true"
<caret>abstract val i: Int = 1
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,2 +1,5 @@
// "Make 'i' not abstract" "true"
<caret>val i: Int = 1
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@ abstract class A {
abstract var i = 0<caret>
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemovePartsFromPropertyFix
@@ -3,4 +3,5 @@ abstract class A {
abstract var i: Int
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemovePartsFromPropertyFix
@@ -3,4 +3,5 @@ abstract class A {
abstract var i: Int = 0<caret>
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemovePartsFromPropertyFix
@@ -3,4 +3,5 @@ abstract class A {
abstract var i: Int<caret>
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemovePartsFromPropertyFix
@@ -3,3 +3,6 @@ class B {
<caret>abstract val i: Int = 0
get() = field
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,3 +3,6 @@ class B {
val i: Int = 0
get() = field
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@ abstract class B {
abstract val i = <caret>0
get() = field
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemovePartsFromPropertyFix
@@ -2,4 +2,5 @@
abstract class B {
abstract val i: Int<caret>
}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemovePartsFromPropertyFix
@@ -2,3 +2,6 @@
class A {
<caret>abstract var i = 0
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -2,3 +2,6 @@
class A {
<caret>var i = 0
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,3 +3,6 @@ class B {
abstract<caret> var j: Int = 0
set(v: Int) {}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,3 +3,6 @@ class B {
var j: Int = 0
set(v: Int) {}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -2,3 +2,6 @@
abstract class A() {
var <caret>i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
abstract class A() {
abstract var <caret>i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
class A() {
var <caret>i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
abstract class A() {
abstract var <caret>i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
open class A() {
var <caret>i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
abstract class A() {
abstract var <caret>i : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
sealed class A() {
fun <caret>i() : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
sealed class A() {
abstract fun <caret>i() : Int
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -10,3 +10,6 @@ open class Foo {
x = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -10,3 +10,6 @@ abstract class Foo {
x = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -10,3 +10,6 @@ open class Foo {
x = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -10,3 +10,6 @@ abstract class Foo {
x = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
class A() {
fun <caret>foo()
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddFunctionBodyFix
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddFunctionBodyFix
@@ -2,3 +2,6 @@
class A() {
fun <caret>foo() {}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddFunctionBodyFix
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddFunctionBodyFix
@@ -1,2 +1,5 @@
// "Make 'foo' not abstract" "true"
<caret>abstract fun foo() {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,2 +1,5 @@
// "Make 'foo' not abstract" "true"
fun foo() {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,4 +1,5 @@
// "Add function body" "true"
fun <caret>foo()
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddFunctionBodyFix
@@ -1,4 +1,5 @@
// "Add function body" "true"
fun foo() {}
/* IGNORE_FIR */
/* IGNORE_FIR */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddFunctionBodyFix
@@ -4,4 +4,6 @@ interface I {
}
<caret>class A : I {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -4,4 +4,6 @@ interface I {
}
abstract class A : I {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -4,4 +4,6 @@ abstract class A {
}
<caret>class B : A() {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -4,4 +4,6 @@ abstract class A {
}
abstract class B : A() {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
abstract class B() {
open fun <caret>foo()
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -2,3 +2,6 @@
abstract class B() {
abstract fun <caret>foo()
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddModifierFix
@@ -4,4 +4,5 @@ annotation class Foo
class Test {
fun foo(): <caret>@Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -5,4 +5,5 @@ annotation class Foo
class Test {
fun foo(): @Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class Foo
<caret>@Foo
class Test
class Test
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class Foo
@Foo
class Test
class Test
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class Foo
<caret>@Foo
class Test
class Test
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class Foo
@Foo
class Test
class Test
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -6,4 +6,5 @@ annotation class Foo
class Test {
@Foo
fun foo(): <caret>@Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -7,4 +7,5 @@ annotation class Foo
class Test {
@Foo
fun foo(): @Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -5,4 +5,5 @@ annotation class Foo
fun test() {
var v = 0
<caret>@Foo v++
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -6,4 +6,5 @@ annotation class Foo
fun test() {
var v = 0
@Foo v++
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@ annotation class Foo
fun test() {
var v = 0
<caret>@Foo v++
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -6,4 +6,5 @@ annotation class Foo
fun test() {
var v = 0
@Foo v++
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -5,4 +5,5 @@ annotation class Foo
fun test() {
var v = 0
<caret>@Foo v++
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -6,4 +6,5 @@ annotation class Foo
fun test() {
var v = 0
@Foo v++
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -3,4 +3,5 @@
package test
@Target
annotation class Ann
annotation class Ann
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -3,4 +3,5 @@
package test
@Target(AnnotationTarget.FILE)
annotation class Ann
annotation class Ann
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -5,4 +5,5 @@ annotation class Foo
class Test {
fun foo(): <caret>@Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -5,4 +5,5 @@ annotation class Foo
class Test {
fun foo(): @Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -5,4 +5,5 @@ annotation class Foo
class Test {
fun foo(): <caret>@Foo String = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -5,4 +5,5 @@ annotation class Foo
class Test {
fun foo(): @Foo String = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -7,4 +7,5 @@ annotation class Foo
class Test {
@Foo
fun foo(): <caret>@Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -7,4 +7,5 @@ annotation class Foo
class Test {
@Foo
fun foo(): @Foo Int = 1
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -7,4 +7,5 @@ annotation class Foo
class Test {
@Foo
fun foo(): <caret>@Foo String = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -7,4 +7,5 @@ annotation class Foo
class Test {
@Foo
fun foo(): @Foo String = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class FieldAnn
<caret>@FieldAnn
val x get() = 42
val x get() = 42
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class FieldAnn
@FieldAnn
val x get() = 42
val x get() = 42
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -8,4 +8,5 @@ class Test
@RequiresOptIn
@Target(AnnotationTarget.FIELD)
annotation class MyExperimentalAPI
annotation class MyExperimentalAPI
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -8,4 +8,5 @@ class Test
@RequiresOptIn
@Target(AnnotationTarget.FIELD, AnnotationTarget.CLASS)
annotation class MyExperimentalAPI
annotation class MyExperimentalAPI
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class DelegateAnn
<caret>@delegate:DelegateAnn
val foo by lazy { "" }
val foo by lazy { "" }
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -4,4 +4,5 @@
annotation class DelegateAnn
@delegate:DelegateAnn
val foo by lazy { "" }
val foo by lazy { "" }
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -2,4 +2,5 @@
@Target
annotation class FieldAnn
class Field(<caret>@field:FieldAnn val foo: String)
class Field(<caret>@field:FieldAnn val foo: String)
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix
@@ -2,4 +2,5 @@
@Target(AnnotationTarget.FIELD)
annotation class FieldAnn
class Field(@field:FieldAnn val foo: String)
class Field(@field:FieldAnn val foo: String)
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationTargetFix

Some files were not shown because too many files have changed in this diff Show More