[FIR] Implement WRONG_MODIFIER_CONTAINING_DECLARATION, DEPRECATED_MODIFIER_CONTAINING_DECLARATION

This commit is contained in:
Ivan Kochurkin
2021-08-04 22:24:51 +03:00
committed by TeamCityServer
parent cd6384eb20
commit 2c1c24c042
52 changed files with 167 additions and 223 deletions
@@ -1,23 +0,0 @@
// !LANGUAGE: +NestedClassesInAnnotations
annotation class Foo {
class Nested
inner class Inner
enum class E { A, B }
object O
interface I
annotation class Anno(val e: E)
companion object {
val x = 1
const val y = ""
}
<!ANNOTATION_CLASS_MEMBER!>constructor(s: Int) {}<!>
<!ANNOTATION_CLASS_MEMBER!>init {}<!>
<!ANNOTATION_CLASS_MEMBER!>fun function() {}<!>
<!ANNOTATION_CLASS_MEMBER!>val property get() = Unit<!>
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +NestedClassesInAnnotations
annotation class Foo {
@@ -1,43 +0,0 @@
// !DIAGNOSTICS: -DUPLICATE_CLASS_NAMES
package Jet86
class A {
companion <!REDECLARATION!>object<!> {
val x = 1
}
<!MANY_COMPANION_OBJECTS!>companion<!> <!REDECLARATION!>object<!> {
val x = 1
}
}
class AA {
companion object {
val x = 1
}
<!MANY_COMPANION_OBJECTS!>companion<!> object A {
val x = 1
}
<!MANY_COMPANION_OBJECTS!>companion<!> object AA {
val x = 1
}
}
class B() {
val x = 12
}
object b {
companion object {
val x = 1
} // error
}
val a = A.x
val c = B.<!UNRESOLVED_REFERENCE!>x<!>
val d = b.<!UNRESOLVED_REFERENCE!>x<!>
val s = <!NO_COMPANION_OBJECT!>System<!> // error
fun test() {
System.out.println()
java.lang.System.out.println()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -DUPLICATE_CLASS_NAMES
package Jet86
@@ -1,9 +0,0 @@
fun test() {
class A {
companion object {}
}
object {
companion object {}
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
fun test() {
class A {
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object {}
@@ -9,9 +9,9 @@ class A {
}
object O {
companion object A
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object A
<!MANY_COMPANION_OBJECTS!>companion<!> object B
<!MANY_COMPANION_OBJECTS, WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object B
<!MANY_COMPANION_OBJECTS!>companion<!> object C
<!MANY_COMPANION_OBJECTS, WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object C
}
@@ -1,5 +0,0 @@
interface T {
final fun component1(): Int = 42
}
<!DATA_CLASS_OVERRIDE_CONFLICT!>data<!> class A(val x: Int) : T
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface T {
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> fun component1(): Int = 42
}
@@ -1 +0,0 @@
<!INCOMPATIBLE_MODIFIERS!>inner<!> <!INCOMPATIBLE_MODIFIERS!>data<!> class Outer(val x: Int)
@@ -1 +1,2 @@
// FIR_IDENTICAL
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>inner<!> <!INCOMPATIBLE_MODIFIERS!>data<!> class Outer(val x: Int)
@@ -1,17 +0,0 @@
//KT-2397 Prohibit final methods in traits with no implementation
package a
interface T {
final fun foo()
final val b : Int
final fun bar() {}
final val c : Int
get() = 42
final val d = <!PROPERTY_INITIALIZER_IN_INTERFACE!>1<!>
}
class A {
<!NON_ABSTRACT_FUNCTION_WITH_NO_BODY!>final fun foo()<!>
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
//KT-2397 Prohibit final methods in traits with no implementation
package a
@@ -1,10 +0,0 @@
package d
<!WRONG_MODIFIER_TARGET!>override<!> val f : ()-> Int = { 12 }
fun test() {
f()
}
var g: Int = 1
protected set(i: Int) {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
package d
<!WRONG_MODIFIER_TARGET!>override<!> val f : ()-> Int = { 12 }
@@ -1,11 +0,0 @@
enum class E {
FIRST,
SECOND {
companion object {
fun foo() = 42
}
};
}
fun f() = E.SECOND.<!UNRESOLVED_REFERENCE!>foo<!>()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
enum class E {
FIRST,
@@ -16,7 +16,7 @@ inline class A9(final val x: Int)
class B1 {
companion object {
inline class C1(val x: Int)
inner <!INLINE_CLASS_NOT_TOP_LEVEL!>inline<!> class C11(val x: Int)
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>inner<!> <!INLINE_CLASS_NOT_TOP_LEVEL!>inline<!> class C11(val x: Int)
}
inline class C2(val x: Int)
@@ -25,7 +25,7 @@ class B1 {
object B2 {
inline class C3(val x: Int)
inner <!INLINE_CLASS_NOT_TOP_LEVEL!>inline<!> class C31(val x: Int)
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>inner<!> <!INLINE_CLASS_NOT_TOP_LEVEL!>inline<!> class C31(val x: Int)
}
fun foo() {
@@ -4,11 +4,11 @@ class A<T> {
class B {
fun test() {
class C<W>() : P<W, <!UNRESOLVED_REFERENCE!>T<!>> {
companion object : P<W, <!UNRESOLVED_REFERENCE!>T<!>> {
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object : P<W, <!UNRESOLVED_REFERENCE!>T<!>> {
}
inner class D : P<W, <!UNRESOLVED_REFERENCE!>T<!>>
}
}
}
}
}
@@ -2,7 +2,7 @@
enum class Enum {
ENTRY_WITH_CLASS {
inner class TestInner
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>inner<!> class TestInner
<!NESTED_CLASS_NOT_ALLOWED!>class TestNested<!>
@@ -14,6 +14,6 @@ enum class Enum {
OTHER_ENTRY
}
companion object {}
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object {}
}
}
@@ -14,6 +14,6 @@ enum class Enum {
OTHER_ENTRY
}
companion object {}
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object {}
}
}
@@ -14,6 +14,6 @@ enum class Enum {
OTHER_ENTRY
}
companion object {}
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object {}
}
}
@@ -1,12 +0,0 @@
annotation class My(
public val x: Int,
protected val y: Int,
internal val z: Int,
private val w: Int
)
open class Your {
open val x: Int = 0
}
annotation class His(override val x: Int): <!SUPERTYPES_FOR_ANNOTATION_CLASS!>Your()<!>
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
annotation class My(
public val x: Int,
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val y: Int,
@@ -1,7 +0,0 @@
interface My {
internal val x: Int
internal val xxx: Int
get() = 0
internal fun foo(): Int
internal fun bar() = 42
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface My {
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>internal<!> val x: Int
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>internal<!> val xxx: Int
@@ -2,11 +2,11 @@
fun f(vararg x: Int) {}
val inVal: (vararg x: Int)->Unit = {}
val inVal: (<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> x: Int)->Unit = {}
fun inParam(fn: (vararg x: Int)->Unit) {}
fun inParam(fn: (<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> x: Int)->Unit) {}
fun inParamNested(fn1: (fn2: (vararg n: Int)->Unit)->Unit) {}
fun inParamNested(fn1: (fn2: (<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> n: Int)->Unit)->Unit) {}
fun inReturn(): (vararg x: Int)->Unit = {}
@@ -16,7 +16,7 @@ class A : (vararg Int)->Unit {
}
val prop: (vararg x: Int)->Unit
get(): (vararg x: Int)->Unit = {}
get(): (<!WRONG_MODIFIER_CONTAINING_DECLARATION, WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> x: Int)->Unit = {}
}
val allProhibited: (<!REDUNDANT_MODIFIER, WRONG_MODIFIER_TARGET!>abstract<!>
@@ -44,7 +44,7 @@ val allProhibited: (<!REDUNDANT_MODIFIER, WRONG_MODIFIER_TARGET!>abstract<!>
<!WRONG_MODIFIER_TARGET!>reified<!>
<!INCOMPATIBLE_MODIFIERS!>sealed<!>
<!WRONG_MODIFIER_TARGET!>tailrec<!>
vararg
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!>
x: Int)->Unit = {}
@@ -1,12 +0,0 @@
interface My {
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> val x: Int
<!INCOMPATIBLE_MODIFIERS!>private<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> val xx: Int
private val xxx: Int
get() = 0
final val y: Int
final val yy: Int
get() = 1
<!PRIVATE_FUNCTION_WITH_NO_BODY!>private<!> fun foo(): Int
// ok
private fun bar() = 42
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface My {
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> val x: Int
<!INCOMPATIBLE_MODIFIERS!>private<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> val xx: Int
@@ -1,21 +0,0 @@
class My(protected val x: Int) {
class Her(protected val x: Int)
inner class Its(protected val x: Int)
}
object Your {
protected fun foo() = 3
}
annotation class His(protected val x: Int)
enum class Our(protected val x: Int) {
FIRST(42) {
protected fun foo() = 13
}
}
interface Their {
protected fun foo() = 7
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
class My(protected val x: Int) {
class Her(protected val x: Int)
+3 -3
View File
@@ -6,7 +6,7 @@ open class C {
}
interface T {
protected fun foo() {}
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun foo() {}
}
class G : C(), T {
@@ -18,7 +18,7 @@ open class A {
}
interface B {
protected fun foo() {}
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun foo() {}
}
interface D {
@@ -27,4 +27,4 @@ interface D {
class E : A(), B, D {
override fun foo() {}
}
}
@@ -3,8 +3,8 @@
//FILE:a.kt
package test_visibility
protected class ProtectedClass
protected interface ProtectedTrait
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> class ProtectedClass
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> interface ProtectedTrait
<!WRONG_MODIFIER_TARGET!>protected<!> val protected_val : Int = 4
<!WRONG_MODIFIER_TARGET!>protected<!> fun protected_fun() {}
@@ -1,6 +1,6 @@
class My {
var x: String = ""
set(vararg value) {
set(<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> value) {
x = <!ASSIGNMENT_TYPE_MISMATCH!>value<!>
}
}
@@ -1,20 +0,0 @@
interface Test<in I, out O> {
val internal_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
public val public_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
protected val protected_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> val private_val: I
var interlan_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!>
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
public var public_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!>
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
protected var protected_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!>
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> var private_private_set: O
private set
fun internal_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
public fun public_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
protected fun protected_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
<!PRIVATE_FUNCTION_WITH_NO_BODY!>private<!> fun private_fun(i: O) : I
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface Test<in I, out O> {
val internal_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
public val public_val: <!TYPE_VARIANCE_CONFLICT!>I<!>