[FIR] Fix handling of WRONG_MODIFIER_TARGET

Implement DEPRECATED_MODIFIER, DEPRECATED_MODIFIER_FOR_TARGET, REDUNDANT_MODIFIER_FOR_TARGET
This commit is contained in:
Ivan Kochurkin
2021-08-04 20:20:38 +03:00
committed by TeamCityServer
parent e85940a1ac
commit cd6384eb20
114 changed files with 504 additions and 1033 deletions
@@ -1,3 +0,0 @@
package abstract
abstract enum class MyAbstractEnum() {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
package abstract
<!WRONG_MODIFIER_TARGET!>abstract<!> enum class MyAbstractEnum() {}
@@ -31,17 +31,17 @@ enum class MyEnum() {
<!ABSTRACT_FUNCTION_WITH_BODY!>abstract<!> fun j() {}
//property accessors
var i: Int abstract get abstract set
var i1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; abstract get abstract set
var i: Int <!WRONG_MODIFIER_TARGET!>abstract<!> get <!WRONG_MODIFIER_TARGET!>abstract<!> set
var i1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; <!WRONG_MODIFIER_TARGET!>abstract<!> get <!WRONG_MODIFIER_TARGET!>abstract<!> set
var j: Int get() = i; abstract set
var j1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = i; abstract set
var j: Int get() = i; <!WRONG_MODIFIER_TARGET!>abstract<!> set
var j1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = i; <!WRONG_MODIFIER_TARGET!>abstract<!> set
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var k: Int<!> abstract set
var k1: Int = 0; abstract set
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var k: Int<!> <!WRONG_MODIFIER_TARGET!>abstract<!> set
var k1: Int = 0; <!WRONG_MODIFIER_TARGET!>abstract<!> set
var l: Int abstract get abstract set
var l1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; abstract get abstract set
var l: Int <!WRONG_MODIFIER_TARGET!>abstract<!> get <!WRONG_MODIFIER_TARGET!>abstract<!> set
var l1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; <!WRONG_MODIFIER_TARGET!>abstract<!> get <!WRONG_MODIFIER_TARGET!>abstract<!> set
var n: Int abstract get abstract set(v: Int) {}
var n: Int <!WRONG_MODIFIER_TARGET!>abstract<!> get <!WRONG_MODIFIER_TARGET!>abstract<!> set(v: Int) {}
}
@@ -1,15 +0,0 @@
enum class B {}
class A {
enum companion object {}
}
enum object O {}
enum interface T {}
enum fun f() = 0
enum val x = 0
enum var y = 0
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
enum class B {}
class A {
@@ -1,3 +0,0 @@
annotation enum class E {
D
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
<!WRONG_MODIFIER_TARGET!>annotation<!> enum class E {
D
}
@@ -2,7 +2,7 @@
public enum MyJavaEnum {}
// FILE: test.kt
open enum class MyEnum() {
<!WRONG_MODIFIER_TARGET!>open<!> enum class MyEnum() {
A()
}
@@ -2,7 +2,7 @@
enum class E {
ABC {
enum class F {
<!WRONG_MODIFIER_TARGET!>enum<!> class F {
DEF
}
}
@@ -2,7 +2,7 @@
enum class E {
ABC {
enum class F {
<!WRONG_MODIFIER_TARGET!>enum<!> class F {
DEF
}
}
@@ -1,8 +1,8 @@
enum interface Some {
<!WRONG_MODIFIER_TARGET!>enum<!> interface Some {
// Enum part
D;
// Interface like part
fun test()
val foo: Int
}
}
+5 -5
View File
@@ -1,20 +1,20 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
fun foo() {
enum class A {
<!WRONG_MODIFIER_TARGET!>enum<!> class A {
FOO,
BAR
}
val foo = A.FOO
val b = object {
enum class B {}
<!WRONG_MODIFIER_TARGET!>enum<!> class B {}
}
class C {
enum class D {}
<!WRONG_MODIFIER_TARGET!>enum<!> class D {}
}
val f = {
enum class E {}
<!WRONG_MODIFIER_TARGET!>enum<!> class E {}
}
enum class<!SYNTAX!><!> {}
<!WRONG_MODIFIER_TARGET!>enum<!> class<!SYNTAX!><!> {}
}
@@ -1,23 +0,0 @@
enum class E {
public final SUBCLASS {
fun foo() {}
},
public PUBLIC,
protected PROTECTED,
private PRIVATE,
internal INTERNAL,
abstract ABSTRACT,
open OPEN,
override OVERRIDE,
final FINAL,
inner INNER,
annotation ANNOTATION,
enum ENUM,
out OUT,
in IN,
vararg VARARG,
reified REIFIED
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
enum class E {
<!WRONG_MODIFIER_TARGET!>public<!> <!WRONG_MODIFIER_TARGET!>final<!> SUBCLASS {
fun foo() {}