[FIR] Run FirSupertypesChecker for anonymous objects, ^KT-54300 Fixed
This commit is contained in:
committed by
Space Team
parent
69ee40325b
commit
1deb253bac
+1
-1
@@ -4,7 +4,7 @@ FILE: objectDerivedFromInnerClass.kt
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final inner class Inner : R|kotlin/Any| {
|
||||
public open inner class Inner : R|kotlin/Any| {
|
||||
public Outer.constructor(): R|Outer.Inner| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
class Outer { inner class Inner }
|
||||
class Outer { open inner class Inner }
|
||||
fun test() {
|
||||
val x = object : <!UNRESOLVED_REFERENCE!>Outer.Inner<!>() { }
|
||||
}
|
||||
|
||||
+1
-1
@@ -90,6 +90,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
|
||||
FirMemberPropertiesChecker,
|
||||
FirImplementationMismatchChecker,
|
||||
FirTypeParametersInObjectChecker,
|
||||
FirSupertypesChecker,
|
||||
)
|
||||
|
||||
override val regularClassCheckers: Set<FirRegularClassChecker>
|
||||
@@ -101,7 +102,6 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
|
||||
FirDelegationSuperCallInEnumConstructorChecker,
|
||||
FirDelegationInInterfaceSyntaxChecker,
|
||||
FirEnumClassSimpleChecker,
|
||||
FirSupertypesChecker,
|
||||
FirLocalEntityNotAllowedChecker,
|
||||
FirManyCompanionObjectsChecker,
|
||||
FirMethodOfAnyImplementedInInterfaceChecker,
|
||||
|
||||
+2
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.analysis.checkers.declaration
|
||||
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
@@ -30,6 +31,7 @@ import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
object FirSupertypesChecker : FirClassChecker() {
|
||||
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration.source?.kind is KtFakeSourceElementKind) return
|
||||
val isInterface = declaration.classKind == ClassKind.INTERFACE
|
||||
var nullableSupertypeReported = false
|
||||
var extensionFunctionSupertypeReported = false
|
||||
|
||||
@@ -5,3 +5,4 @@ interface C<T> {}
|
||||
interface D<T> {}
|
||||
|
||||
interface Test : A<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>in<!> Int>, B<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>out<!> Int>, C<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>>?<!REDUNDANT_NULLABLE!>?<!NULLABLE_SUPERTYPE!>?<!><!>, D<Int> {}
|
||||
val x = object : A<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>> {}
|
||||
|
||||
@@ -4,4 +4,5 @@ interface B<T> {}
|
||||
interface C<T> {}
|
||||
interface D<T> {}
|
||||
|
||||
interface Test : A<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>in<!> Int>, B<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>out<!> Int>, C<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>><!NULLABLE_SUPERTYPE!>?<!><!REDUNDANT_NULLABLE!>?<!><!REDUNDANT_NULLABLE!>?<!>, D<Int> {}
|
||||
interface Test : A<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>in<!> Int>, B<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>out<!> Int>, C<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>><!NULLABLE_SUPERTYPE!>?<!><!REDUNDANT_NULLABLE!>?<!><!REDUNDANT_NULLABLE!>?<!>, D<Int> {}
|
||||
val x = object : A<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>> {}
|
||||
@@ -1,5 +1,7 @@
|
||||
package
|
||||
|
||||
public val x: A<*>
|
||||
|
||||
public interface A</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
@@ -29,3 +31,4 @@ public interface Test : A<in kotlin.Int>, B<out kotlin.Int>, C<*>?, D<kotlin.Int
|
||||
public open override /*4*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*4*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ fun test() {
|
||||
val x9: (Foo<Float>) -> Int = { x: Foo<<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!>> -> 10 }
|
||||
|
||||
val x10 = object : <!UNRESOLVED_REFERENCE!>_<!> {}
|
||||
val x11 = object : Foo<<!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>_<!>> {}
|
||||
val x11 = object : <!FINAL_SUPERTYPE!>Foo<<!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>_<!>><!> {}
|
||||
|
||||
if (x11 is <!UNRESOLVED_REFERENCE!>_<!>) { }
|
||||
if (<!USELESS_IS_CHECK!>x11 is Foo<<!UNRESOLVED_REFERENCE!>_<!>><!>) { }
|
||||
|
||||
Reference in New Issue
Block a user