[FIR] Add RedundantModalityModifierChecker

This commit is contained in:
vladislavf7@gmail.com
2020-07-14 16:07:51 +03:00
committed by Mikhail Glukhikh
parent e7c88a4349
commit fb5fb44993
7 changed files with 250 additions and 1 deletions
@@ -0,0 +1,60 @@
// Abstract
abstract class Base {
// Redundant final
<!REDUNDANT_MODALITY_MODIFIER!>final<!> fun foo() {}
// Abstract
abstract fun bar()
// Open
open val gav = 42
}
class FinalDerived : Base() {
// Redundant final
override <!REDUNDANT_MODALITY_MODIFIER!>final<!> fun bar() {}
// Non-final member in final class
override open val gav = 13
}
// Open
open class OpenDerived : Base() {
// Final
override final fun bar() {}
// Redundant open
override <!REDUNDANT_MODALITY_MODIFIER!>open<!> val gav = 13
}
// Redundant final
<!REDUNDANT_MODALITY_MODIFIER!>final<!> class Final
// Interface
interface Interface {
// Redundant
<!REDUNDANT_MODALITY_MODIFIER!>abstract<!> fun foo()
// Redundant
private <!REDUNDANT_MODALITY_MODIFIER!>final<!> fun bar() {}
// Redundant
<!REDUNDANT_MODALITY_MODIFIER!>open<!> val gav: Int
get() = 42
}
// Derived interface
interface Derived : Interface {
// Redundant
override <!REDUNDANT_MODALITY_MODIFIER!>open<!> fun foo() {}
// Redundant
<!REDUNDANT_MODALITY_MODIFIER!>final<!> class Nested
}
// Derived abstract class
abstract class AbstractDerived1(override final val gav: Int) : Interface {
// Redundant
override <!REDUNDANT_MODALITY_MODIFIER!>open<!> fun foo() {}
}
// Derived abstract class
abstract class AbstractDerived2 : Interface {
// Final
override final fun foo() {}
// Redundant
override <!REDUNDANT_MODALITY_MODIFIER!>open<!> val gav = 13
}
// Redundant abstract interface
abstract interface AbstractInterface
// Redundant final object
<!REDUNDANT_MODALITY_MODIFIER!>final<!> object FinalObject
// Open interface
open interface OpenInterface
@@ -0,0 +1,103 @@
FILE: RedundantModalityModifierChecker.kt
public abstract class Base : R|kotlin/Any| {
public constructor(): R|Base| {
super<R|kotlin/Any|>()
}
public final fun foo(): R|kotlin/Unit| {
}
public abstract fun bar(): R|kotlin/Unit|
public open val gav: R|kotlin/Int| = Int(42)
public get(): R|kotlin/Int|
}
public final class FinalDerived : R|Base| {
public constructor(): R|FinalDerived| {
super<R|Base|>()
}
public final override fun bar(): R|kotlin/Unit| {
}
public open override val gav: R|kotlin/Int| = Int(13)
public get(): R|kotlin/Int|
}
public open class OpenDerived : R|Base| {
public constructor(): R|OpenDerived| {
super<R|Base|>()
}
public final override fun bar(): R|kotlin/Unit| {
}
public open override val gav: R|kotlin/Int| = Int(13)
public get(): R|kotlin/Int|
}
public final class Final : R|kotlin/Any| {
public constructor(): R|Final| {
super<R|kotlin/Any|>()
}
}
public abstract interface Interface : R|kotlin/Any| {
public abstract fun foo(): R|kotlin/Unit|
private final fun bar(): R|kotlin/Unit| {
}
public open val gav: R|kotlin/Int|
public get(): R|kotlin/Int| {
^ Int(42)
}
}
public abstract interface Derived : R|Interface| {
public open override fun foo(): R|kotlin/Unit| {
}
public final class Nested : R|kotlin/Any| {
public constructor(): R|Derived.Nested| {
super<R|kotlin/Any|>()
}
}
}
public abstract class AbstractDerived1 : R|Interface| {
public constructor(gav: R|kotlin/Int|): R|AbstractDerived1| {
super<R|kotlin/Any|>()
}
public final override val gav: R|kotlin/Int| = R|<local>/gav|
public get(): R|kotlin/Int|
public open override fun foo(): R|kotlin/Unit| {
}
}
public abstract class AbstractDerived2 : R|Interface| {
public constructor(): R|AbstractDerived2| {
super<R|kotlin/Any|>()
}
public final override fun foo(): R|kotlin/Unit| {
}
public open override val gav: R|kotlin/Int| = Int(13)
public get(): R|kotlin/Int|
}
public abstract interface AbstractInterface : R|kotlin/Any| {
}
public final object FinalObject : R|kotlin/Any| {
private constructor(): R|FinalObject| {
super<R|kotlin/Any|>()
}
}
public open interface OpenInterface : R|kotlin/Any| {
}