FIR IDE: quickfix to add override keyword

Also enables more tests that covers previous quickfixes
This commit is contained in:
Tianyu Geng
2021-05-25 10:45:24 -07:00
committed by Ilya Kirillov
parent 1658f4433d
commit 90a0c9bb25
14 changed files with 28 additions and 4 deletions
@@ -0,0 +1,9 @@
package foo.bar
fun test() {
class A {
inner class B
}
fun <!UNRESOLVED_REFERENCE!>A.B<!>.foo() {}
}
@@ -1172,6 +1172,7 @@ fun main(args: Array<String>) {
model("quickfix/lateinit", pattern = pattern, filenameStartsLowerCase = true)
model("quickfix/modifiers", pattern = pattern, filenameStartsLowerCase = true, recursive = false)
model("quickfix/nullables/unsafeInfixCall", pattern = pattern, filenameStartsLowerCase = true)
model("quickfix/override", pattern = pattern, filenameStartsLowerCase = true, recursive = false)
model("quickfix/override/typeMismatchOnOverride", pattern = pattern, filenameStartsLowerCase = true, recursive = false)
model("quickfix/replaceInfixOrOperatorCall", pattern = pattern, filenameStartsLowerCase = true)
model("quickfix/replaceWithDotCall", pattern = pattern, filenameStartsLowerCase = true)
@@ -62,6 +62,10 @@ class MainKtQuickFixRegistrar : KtQuickFixRegistrar() {
KtFirDiagnostic.AbstractClassMemberNotImplemented::class,
AddModifierFix.addAbstractModifier
)
registerPsiQuickFixes(
KtFirDiagnostic.VirtualMemberHidden::class,
AddModifierFix.addOverrideModifier
)
registerPsiQuickFixes(KtFirDiagnostic.ValOrVarOnLoopParameter::class, RemoveValVarFromParameterFix)
registerPsiQuickFixes(KtFirDiagnostic.ValOrVarOnFunParameter::class, RemoveValVarFromParameterFix)
registerPsiQuickFixes(KtFirDiagnostic.ValOrVarOnCatchParameter::class, RemoveValVarFromParameterFix)
@@ -111,6 +111,7 @@ open class AddModifierFix(
val addOpenToContainingClass = AddModifierFix.createFactory(KtTokens.OPEN_KEYWORD, KtClassOrObject::class.java)
val addFinalToProperty = AddModifierFix.createFactory(KtTokens.FINAL_KEYWORD, KtProperty::class.java)
val addInnerModifier = createFactory(KtTokens.INNER_KEYWORD)
val addOverrideModifier = createFactory(KtTokens.OVERRIDE_KEYWORD)
private val modalityModifiers: Set<KtModifierKeywordToken> =
setOf(KtTokens.ABSTRACT_KEYWORD, KtTokens.OPEN_KEYWORD, KtTokens.FINAL_KEYWORD)
+1 -1
View File
@@ -26,7 +26,7 @@ package override
}
<error descr="[ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED] Class MyIllegalClass4 is not abstract and does not implement abstract base class member bar">class MyIllegalClass4</error> : MyTrait, MyAbstractClass() {
fun foo() {}
fun <error descr="[VIRTUAL_MEMBER_HIDDEN] 'foo' hides member of supertype 'MyTrait' and needs 'override' modifier">foo</error>() {}
override fun other() {}
}
+1
View File
@@ -5,3 +5,4 @@ open class A {
}
class B : A<caret> {}
/* IGNORE_FIR */
@@ -18,3 +18,4 @@ interface Z {
class B : A(), X, Y, Z {
override<caret> fun foo() {}
}
/* IGNORE_FIR */
@@ -16,3 +16,4 @@ class B(y: XX) : A(y) {
override<caret> fun foo() {
}
}
/* IGNORE_FIR */
@@ -16,3 +16,4 @@ class B() : Y {
override<caret> fun foo() {
}
}
/* IGNORE_FIR */
+2 -1
View File
@@ -5,4 +5,5 @@ open class A {
class B : A() {
override<caret> fun foo() {}
}
}
/* IGNORE_FIR */
@@ -7,4 +7,5 @@ fun test() {
val some = object : A() {
<caret>override fun foo() {}
}
}
}
/* IGNORE_FIR */
+2 -1
View File
@@ -5,4 +5,5 @@ open class A {
class B : A() {
override<caret> var x = 24;
}
}
/* IGNORE_FIR */
@@ -13,3 +13,4 @@ class B : A(), X {
return agr
}
}
/* IGNORE_FIR */
@@ -9,3 +9,4 @@ class B : A() {
return agr
}
}
/* IGNORE_FIR */