[FIR] Fix handling of WRONG_MODIFIER_TARGET
Implement DEPRECATED_MODIFIER, DEPRECATED_MODIFIER_FOR_TARGET, REDUNDANT_MODIFIER_FOR_TARGET
This commit is contained in:
committed by
TeamCityServer
parent
e85940a1ac
commit
cd6384eb20
@@ -8,17 +8,17 @@ abstract class A() {
|
||||
|
||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var r: String<!>
|
||||
get
|
||||
abstract protected set
|
||||
<!WRONG_MODIFIER_TARGET!>abstract<!> protected set
|
||||
}
|
||||
|
||||
final interface T {}
|
||||
<!WRONG_MODIFIER_TARGET!>final<!> interface T {}
|
||||
|
||||
class FinalClass() {
|
||||
<!NON_FINAL_MEMBER_IN_FINAL_CLASS!>open<!> fun foo() {}
|
||||
val i: Int = 1
|
||||
open get(): Int = field
|
||||
<!WRONG_MODIFIER_TARGET!>open<!> get(): Int = field
|
||||
var j: Int = 1
|
||||
open set(v: Int) {}
|
||||
<!WRONG_MODIFIER_TARGET!>open<!> set(v: Int) {}
|
||||
}
|
||||
|
||||
<!INCOMPATIBLE_MODIFIERS!>private<!> <!INCOMPATIBLE_MODIFIERS!>public<!> class C
|
||||
@@ -32,107 +32,107 @@ class LegalModifier(val a: Int, @annotated private var b: String, @annotated var
|
||||
|
||||
//Check illegal modifier in constructor parameters
|
||||
class IllegalModifiers1(
|
||||
<!INCOMPATIBLE_MODIFIERS!>in<!>
|
||||
<!WRONG_MODIFIER_TARGET!>in<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>out<!>
|
||||
reified
|
||||
enum
|
||||
private
|
||||
const
|
||||
<!WRONG_MODIFIER_TARGET!>reified<!>
|
||||
<!WRONG_MODIFIER_TARGET!>enum<!>
|
||||
<!WRONG_MODIFIER_TARGET!>private<!>
|
||||
<!WRONG_MODIFIER_TARGET!>const<!>
|
||||
a: Int)
|
||||
|
||||
//Check multiple illegal modifiers in constructor
|
||||
class IllegalModifiers2(<!INCOMPATIBLE_MODIFIERS!>private<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> a: Int)
|
||||
class IllegalModifiers2(<!WRONG_MODIFIER_TARGET!>private<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> a: Int)
|
||||
|
||||
|
||||
//Check annotations with illegal modifiers in constructor
|
||||
class IllegalModifiers3(@annotated public abstract b: String)
|
||||
class IllegalModifiers3(@annotated <!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> b: String)
|
||||
|
||||
//Check annotations and vararg with illegal modifiers in constructor
|
||||
class IllegalModifiers4(val a: Int, @annotated("a text") protected vararg v: Int)
|
||||
class IllegalModifiers4(val a: Int, @annotated("a text") <!WRONG_MODIFIER_TARGET!>protected<!> vararg v: Int)
|
||||
|
||||
//Check illegal modifiers for functions and catch block
|
||||
abstract class IllegalModifiers5() {
|
||||
|
||||
//Check illegal modifier in function parameter
|
||||
abstract fun foo(public a: Int, vararg v: String)
|
||||
abstract fun foo(<!WRONG_MODIFIER_TARGET!>public<!> a: Int, vararg v: String)
|
||||
|
||||
//Check multiple illegal modifiers in function parameter
|
||||
abstract fun bar(public abstract a: Int, vararg v: String)
|
||||
abstract fun bar(<!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> a: Int, vararg v: String)
|
||||
|
||||
//Check annotations with illegal modifiers
|
||||
abstract fun baz(@annotated("a text") public abstract a: Int)
|
||||
abstract fun baz(@annotated("a text") <!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>abstract<!> a: Int)
|
||||
|
||||
private fun qux() {
|
||||
|
||||
//Check illegal modifier in catch block
|
||||
try {} catch (<!INCOMPATIBLE_MODIFIERS!>in<!> <!INCOMPATIBLE_MODIFIERS!>out<!> reified enum public e: Exception) {}
|
||||
try {} catch (<!WRONG_MODIFIER_TARGET!>in<!> <!INCOMPATIBLE_MODIFIERS!>out<!> <!WRONG_MODIFIER_TARGET!>reified<!> <!WRONG_MODIFIER_TARGET!>enum<!> <!WRONG_MODIFIER_TARGET!>public<!> e: Exception) {}
|
||||
|
||||
//Check multiple illegal modifiers in catch block
|
||||
try {} catch (<!INCOMPATIBLE_MODIFIERS!>in<!> <!INCOMPATIBLE_MODIFIERS!>out<!> reified enum abstract public e: Exception) {}
|
||||
try {} catch (<!WRONG_MODIFIER_TARGET!>in<!> <!INCOMPATIBLE_MODIFIERS!>out<!> <!WRONG_MODIFIER_TARGET!>reified<!> <!WRONG_MODIFIER_TARGET!>enum<!> <!WRONG_MODIFIER_TARGET!>abstract<!> <!WRONG_MODIFIER_TARGET!>public<!> e: Exception) {}
|
||||
|
||||
//Check annotations with illegal modifiers
|
||||
try {} catch (@annotated("a text") abstract public e: Exception) {}
|
||||
try {} catch (@annotated("a text") <!WRONG_MODIFIER_TARGET!>abstract<!> <!WRONG_MODIFIER_TARGET!>public<!> e: Exception) {}
|
||||
}
|
||||
}
|
||||
|
||||
//Check illegal modifiers on anonymous initializers
|
||||
abstract class IllegalModifiers6() {
|
||||
public init {}
|
||||
private init {}
|
||||
protected init {}
|
||||
vararg init {}
|
||||
abstract init {}
|
||||
open init {}
|
||||
final init {}
|
||||
<!WRONG_MODIFIER_TARGET!>public<!> init {}
|
||||
<!WRONG_MODIFIER_TARGET!>private<!> init {}
|
||||
<!WRONG_MODIFIER_TARGET!>protected<!> init {}
|
||||
<!WRONG_MODIFIER_TARGET!>vararg<!> init {}
|
||||
<!WRONG_MODIFIER_TARGET!>abstract<!> init {}
|
||||
<!WRONG_MODIFIER_TARGET!>open<!> init {}
|
||||
<!WRONG_MODIFIER_TARGET!>final<!> init {}
|
||||
|
||||
public @annotated init {}
|
||||
<!WRONG_MODIFIER_TARGET!>public<!> @annotated init {}
|
||||
|
||||
private @IllegalModifiers6() init {}
|
||||
<!WRONG_MODIFIER_TARGET!>private<!> @IllegalModifiers6() init {}
|
||||
}
|
||||
|
||||
// strange inappropriate modifiers usages
|
||||
override
|
||||
<!INCOMPATIBLE_MODIFIERS!>out<!>
|
||||
<!WRONG_MODIFIER_TARGET!>override<!>
|
||||
<!WRONG_MODIFIER_TARGET!>out<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>in<!>
|
||||
vararg
|
||||
reified
|
||||
<!WRONG_MODIFIER_TARGET!>vararg<!>
|
||||
<!WRONG_MODIFIER_TARGET!>reified<!>
|
||||
class IllegalModifiers7() {
|
||||
enum
|
||||
inner
|
||||
annotation
|
||||
<!INCOMPATIBLE_MODIFIERS!>out<!>
|
||||
<!WRONG_MODIFIER_TARGET!>enum<!>
|
||||
<!WRONG_MODIFIER_TARGET!>inner<!>
|
||||
<!WRONG_MODIFIER_TARGET!>annotation<!>
|
||||
<!WRONG_MODIFIER_TARGET!>out<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>in<!>
|
||||
vararg
|
||||
reified
|
||||
<!WRONG_MODIFIER_TARGET!>vararg<!>
|
||||
<!WRONG_MODIFIER_TARGET!>reified<!>
|
||||
val x = 1
|
||||
enum
|
||||
inner
|
||||
annotation
|
||||
<!INCOMPATIBLE_MODIFIERS!>out<!>
|
||||
<!WRONG_MODIFIER_TARGET!>enum<!>
|
||||
<!WRONG_MODIFIER_TARGET!>inner<!>
|
||||
<!WRONG_MODIFIER_TARGET!>annotation<!>
|
||||
<!WRONG_MODIFIER_TARGET!>out<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>in<!>
|
||||
vararg
|
||||
reified
|
||||
const
|
||||
<!WRONG_MODIFIER_TARGET!>vararg<!>
|
||||
<!WRONG_MODIFIER_TARGET!>reified<!>
|
||||
<!WRONG_MODIFIER_TARGET!>const<!>
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
// Secondary constructors
|
||||
class IllegalModifiers8 {
|
||||
<!INCOMPATIBLE_MODIFIERS!>abstract<!>
|
||||
<!WRONG_MODIFIER_TARGET!>abstract<!>
|
||||
enum
|
||||
<!INCOMPATIBLE_MODIFIERS, REDUNDANT_MODIFIER!>open<!>
|
||||
inner
|
||||
annotation
|
||||
<!INCOMPATIBLE_MODIFIERS!>override<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>out<!>
|
||||
<!REDUNDANT_MODIFIER, WRONG_MODIFIER_TARGET!>open<!>
|
||||
<!WRONG_MODIFIER_TARGET!>inner<!>
|
||||
<!WRONG_MODIFIER_TARGET!>annotation<!>
|
||||
<!WRONG_MODIFIER_TARGET!>override<!>
|
||||
<!WRONG_MODIFIER_TARGET!>out<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>in<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>final<!>
|
||||
vararg
|
||||
reified
|
||||
<!WRONG_MODIFIER_TARGET!>vararg<!>
|
||||
<!WRONG_MODIFIER_TARGET!>reified<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>const<!><!SYNTAX!><!>
|
||||
constructor() {}
|
||||
|
||||
constructor(<!INCOMPATIBLE_MODIFIERS!>private<!> enum <!INCOMPATIBLE_MODIFIERS!>abstract<!> x: Int) {}
|
||||
constructor(<!WRONG_MODIFIER_TARGET!>private<!> <!WRONG_MODIFIER_TARGET!>enum<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> x: Int) {}
|
||||
}
|
||||
|
||||
class IllegalModifiers9 {
|
||||
@@ -143,17 +143,17 @@ class IllegalModifiers9 {
|
||||
// Illegal modifiers on primary constructor
|
||||
|
||||
class IllegalModifiers10
|
||||
<!INCOMPATIBLE_MODIFIERS!>abstract<!>
|
||||
enum
|
||||
<!INCOMPATIBLE_MODIFIERS, REDUNDANT_MODIFIER!>open<!>
|
||||
inner
|
||||
annotation
|
||||
<!INCOMPATIBLE_MODIFIERS!>override<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>out<!>
|
||||
<!WRONG_MODIFIER_TARGET!>abstract<!>
|
||||
<!WRONG_MODIFIER_TARGET!>enum<!>
|
||||
<!REDUNDANT_MODIFIER, WRONG_MODIFIER_TARGET!>open<!>
|
||||
<!WRONG_MODIFIER_TARGET!>inner<!>
|
||||
<!WRONG_MODIFIER_TARGET!>annotation<!>
|
||||
<!WRONG_MODIFIER_TARGET!>override<!>
|
||||
<!WRONG_MODIFIER_TARGET!>out<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>in<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>final<!>
|
||||
vararg
|
||||
reified
|
||||
<!WRONG_MODIFIER_TARGET!>vararg<!>
|
||||
<!WRONG_MODIFIER_TARGET!>reified<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>const<!> constructor()
|
||||
|
||||
class IllegalModifiers11 <!INCOMPATIBLE_MODIFIERS!>private<!> <!INCOMPATIBLE_MODIFIERS!>protected<!> constructor()
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
fun foo() {
|
||||
public class A
|
||||
private class B
|
||||
protected class C
|
||||
internal class D
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
fun foo() {
|
||||
<!WRONG_MODIFIER_TARGET!>public<!> class A
|
||||
<!WRONG_MODIFIER_TARGET!>private<!> class B
|
||||
|
||||
@@ -48,7 +48,7 @@ const val withExplicitDefaultGetter: Int = 1
|
||||
<!CONST_VAL_WITH_GETTER!>get<!>
|
||||
|
||||
fun foo(): Int {
|
||||
const val local: Int = 14
|
||||
<!WRONG_MODIFIER_TARGET!>const<!> val local: Int = 14
|
||||
return 15
|
||||
}
|
||||
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
companion class A {
|
||||
companion object {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class B {
|
||||
companion object
|
||||
|
||||
val c: Int = 1
|
||||
}
|
||||
|
||||
class C {
|
||||
companion object A {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class D {
|
||||
companion object A {
|
||||
companion object {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object G {
|
||||
companion object
|
||||
}
|
||||
|
||||
companion interface H {
|
||||
companion object
|
||||
}
|
||||
|
||||
class J {
|
||||
companion object C {
|
||||
companion object
|
||||
}
|
||||
}
|
||||
|
||||
companion enum class Enum {
|
||||
E1,
|
||||
E2;
|
||||
|
||||
companion object
|
||||
}
|
||||
|
||||
companion fun main() {
|
||||
|
||||
}
|
||||
|
||||
companion var prop: Int = 1
|
||||
companion get
|
||||
companion set
|
||||
|
||||
class Z(companion val c: Int)
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
<!WRONG_MODIFIER_TARGET!>companion<!> class A {
|
||||
companion object {
|
||||
|
||||
|
||||
+12
-12
@@ -19,34 +19,34 @@ class A : (vararg Int)->Unit {
|
||||
get(): (vararg x: Int)->Unit = {}
|
||||
}
|
||||
|
||||
val allProhibited: (<!INCOMPATIBLE_MODIFIERS, REDUNDANT_MODIFIER!>abstract<!>
|
||||
annotation
|
||||
companion
|
||||
val allProhibited: (<!REDUNDANT_MODIFIER, WRONG_MODIFIER_TARGET!>abstract<!>
|
||||
<!WRONG_MODIFIER_TARGET!>annotation<!>
|
||||
<!WRONG_MODIFIER_TARGET!>companion<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>const<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>crossinline<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>data<!>
|
||||
enum
|
||||
external
|
||||
<!WRONG_MODIFIER_TARGET!>enum<!>
|
||||
<!WRONG_MODIFIER_TARGET!>external<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>final<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>in<!>
|
||||
<!WRONG_MODIFIER_TARGET!>in<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>inline<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>inner<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>internal<!>
|
||||
lateinit
|
||||
<!WRONG_MODIFIER_TARGET!>internal<!>
|
||||
<!WRONG_MODIFIER_TARGET!>lateinit<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>noinline<!>
|
||||
<!INCOMPATIBLE_MODIFIERS, REDUNDANT_MODIFIER!>open<!>
|
||||
operator
|
||||
<!WRONG_MODIFIER_TARGET!>operator<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>out<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>override<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>private<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>protected<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>public<!>
|
||||
reified
|
||||
<!WRONG_MODIFIER_TARGET!>reified<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>sealed<!>
|
||||
tailrec
|
||||
<!WRONG_MODIFIER_TARGET!>tailrec<!>
|
||||
vararg
|
||||
|
||||
x: Int)->Unit = {}
|
||||
|
||||
val valProhibited: (val x: Int)->Unit = {}
|
||||
val varProhibited: (var x: Int)->Unit = {}
|
||||
val varProhibited: (var x: Int)->Unit = {}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
open interface First
|
||||
// Now inspection
|
||||
abstract interface Second
|
||||
// Now inspection
|
||||
final enum class Third {
|
||||
FOURTH,
|
||||
FIFTH
|
||||
}
|
||||
// Now inspection
|
||||
final object Sixth
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
<!REDUNDANT_MODIFIER_FOR_TARGET!>open<!> interface First
|
||||
// Now inspection
|
||||
abstract interface Second
|
||||
|
||||
@@ -11,7 +11,7 @@ class Bzz(public <!REPEATED_MODIFIER!>public<!> val q: Int = 1) {
|
||||
public <!REPEATED_MODIFIER!>public<!> get() = 3
|
||||
|
||||
val z: Int
|
||||
<!INCOMPATIBLE_MODIFIERS!>open<!> <!INCOMPATIBLE_MODIFIERS!>final<!> get() = 4
|
||||
<!WRONG_MODIFIER_TARGET!>open<!> <!INCOMPATIBLE_MODIFIERS!>final<!> get() = 4
|
||||
|
||||
public <!REPEATED_MODIFIER!>public<!> class B(public <!REPEATED_MODIFIER!>public<!> val z: Int = 1) {
|
||||
public <!REPEATED_MODIFIER!>public<!> val y: Int = 2
|
||||
@@ -31,7 +31,7 @@ public <!REPEATED_MODIFIER!>public<!> val bar: Int = 1
|
||||
public <!REPEATED_MODIFIER!>public<!> fun foo(): Int = 1
|
||||
|
||||
fun test() {
|
||||
public <!REPEATED_MODIFIER!>public<!> class B(public <!REPEATED_MODIFIER!>public<!> val z: Int = 1) {
|
||||
<!WRONG_MODIFIER_TARGET!>public<!> <!REPEATED_MODIFIER!>public<!> class B(public <!REPEATED_MODIFIER!>public<!> val z: Int = 1) {
|
||||
public <!REPEATED_MODIFIER!>public<!> val y: Int = 2
|
||||
|
||||
public val x: Int
|
||||
|
||||
Reference in New Issue
Block a user