FIR IDE: Enable add initializer quickfix for MUST_BE_INITIALIZED.
This commit is contained in:
committed by
teamcityserver
parent
bb2246ebaf
commit
befa8aaac7
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.idea.fir.api.fixes.KtQuickFixesList
|
||||
import org.jetbrains.kotlin.idea.fir.api.fixes.KtQuickFixesListBuilder
|
||||
import org.jetbrains.kotlin.idea.frontend.api.fir.diagnostics.KtFirDiagnostic
|
||||
import org.jetbrains.kotlin.idea.quickfix.fixes.*
|
||||
import org.jetbrains.kotlin.idea.quickfix.fixes.InitializePropertyQuickFixFactory
|
||||
|
||||
class MainKtQuickFixRegistrar : KtQuickFixRegistrar() {
|
||||
private val keywords = KtQuickFixesListBuilder.registerPsiQuickFix {
|
||||
@@ -74,7 +73,7 @@ class MainKtQuickFixRegistrar : KtQuickFixRegistrar() {
|
||||
KtFirDiagnostic.MustBeInitializedOrBeAbstract::class,
|
||||
AddModifierFix.addAbstractModifier,
|
||||
)
|
||||
registerApplicator(InitializePropertyQuickFixFactory.initializePropertyFactory)
|
||||
registerApplicators(InitializePropertyQuickFixFactories.initializePropertyFactory)
|
||||
registerApplicator(AddLateInitFactory.addLateInitFactory)
|
||||
registerApplicator(AddAccessorsFactories.addAccessorsToUninitializedProperty)
|
||||
}
|
||||
|
||||
+10
-3
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.idea.api.applicator.HLApplicator
|
||||
import org.jetbrains.kotlin.idea.api.applicator.HLApplicatorInput
|
||||
import org.jetbrains.kotlin.idea.api.applicator.applicator
|
||||
import org.jetbrains.kotlin.idea.fir.api.fixes.HLQuickFix
|
||||
import org.jetbrains.kotlin.idea.fir.api.fixes.diagnosticFixFactory
|
||||
import org.jetbrains.kotlin.idea.fir.api.fixes.diagnosticFixFactories
|
||||
import org.jetbrains.kotlin.idea.frontend.api.fir.diagnostics.KtFirDiagnostic
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
object InitializePropertyQuickFixFactory {
|
||||
object InitializePropertyQuickFixFactories {
|
||||
|
||||
data class AddInitializerInput(val initializerText: String?) : HLApplicatorInput
|
||||
|
||||
@@ -38,8 +38,15 @@ object InitializePropertyQuickFixFactory {
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
val initializePropertyFactory =
|
||||
diagnosticFixFactory(KtFirDiagnostic.MustBeInitializedOrBeAbstract::class) { diagnostic ->
|
||||
diagnosticFixFactories(
|
||||
KtFirDiagnostic.MustBeInitialized::class,
|
||||
KtFirDiagnostic.MustBeInitializedOrBeAbstract::class
|
||||
) { diagnostic ->
|
||||
val property: KtProperty = diagnostic.psi
|
||||
|
||||
// An extension property cannot be initialized because it has no backing field
|
||||
if (property.receiverTypeReference != null) return@diagnosticFixFactories emptyList()
|
||||
|
||||
buildList {
|
||||
add(
|
||||
HLQuickFix(
|
||||
@@ -2,5 +2,4 @@
|
||||
class A {
|
||||
<caret>var n: Int
|
||||
get() = 1
|
||||
}
|
||||
/* IGNORE_FIR */
|
||||
}
|
||||
@@ -2,5 +2,4 @@
|
||||
class A {
|
||||
var n: Int = <selection>0</selection><caret>
|
||||
get() = 1
|
||||
}
|
||||
/* IGNORE_FIR */
|
||||
}
|
||||
@@ -2,5 +2,4 @@
|
||||
class A {
|
||||
<caret>var n: Int
|
||||
set(value: Int) {}
|
||||
}
|
||||
/* IGNORE_FIR */
|
||||
}
|
||||
@@ -2,5 +2,4 @@
|
||||
class A {
|
||||
var n: Int = <selection>0</selection><caret>
|
||||
set(value: Int) {}
|
||||
}
|
||||
/* IGNORE_FIR */
|
||||
}
|
||||
@@ -1,3 +1,2 @@
|
||||
// "Add initializer" "true"
|
||||
<caret>val n: Int
|
||||
/* IGNORE_FIR */
|
||||
<caret>val n: Int
|
||||
@@ -1,3 +1,2 @@
|
||||
// "Add initializer" "true"
|
||||
val n: Int = <selection>0</selection><caret>
|
||||
/* IGNORE_FIR */
|
||||
val n: Int = <selection>0</selection><caret>
|
||||
@@ -1,5 +1,4 @@
|
||||
// "Add initializer" "true"
|
||||
// WITH_RUNTIME
|
||||
class A
|
||||
<caret>var label: A
|
||||
/* IGNORE_FIR */
|
||||
<caret>var label: A
|
||||
@@ -1,5 +1,4 @@
|
||||
// "Add initializer" "true"
|
||||
// WITH_RUNTIME
|
||||
class A
|
||||
var label: A = TODO()
|
||||
/* IGNORE_FIR */
|
||||
var label: A = TODO()
|
||||
@@ -1,4 +1,3 @@
|
||||
// "Add initializer" "true"
|
||||
<caret>var n: Int
|
||||
get() = 1
|
||||
/* IGNORE_FIR */
|
||||
get() = 1
|
||||
+1
-2
@@ -1,4 +1,3 @@
|
||||
// "Add initializer" "true"
|
||||
var n: Int = <selection>0</selection><caret>
|
||||
get() = 1
|
||||
/* IGNORE_FIR */
|
||||
get() = 1
|
||||
@@ -1,4 +1,3 @@
|
||||
// "Add initializer" "true"
|
||||
<caret>var n: Int
|
||||
set(value: Int) {}
|
||||
/* IGNORE_FIR */
|
||||
set(value: Int) {}
|
||||
+1
-2
@@ -1,4 +1,3 @@
|
||||
// "Add initializer" "true"
|
||||
var n: Int = <selection>0</selection><caret>
|
||||
set(value: Int) {}
|
||||
/* IGNORE_FIR */
|
||||
set(value: Int) {}
|
||||
Reference in New Issue
Block a user