diff --git a/compiler/fir/analysis-tests/testData/resolve/inference/intersectionTypesInConstraints.kt b/compiler/fir/analysis-tests/testData/resolve/inference/intersectionTypesInConstraints.kt index d7c4257373e..20872455b15 100644 --- a/compiler/fir/analysis-tests/testData/resolve/inference/intersectionTypesInConstraints.kt +++ b/compiler/fir/analysis-tests/testData/resolve/inference/intersectionTypesInConstraints.kt @@ -6,8 +6,8 @@ public interface MyList extends java.util.List, I {} fun elemAndList(r: R, t: MutableList): R = TODO() interface I -class A : Comparable, I -class B : Comparable, I +class A : Comparable, I +class B : Comparable, I fun test() { elemAndList(A(), list(B())) diff --git a/compiler/fir/analysis-tests/testData/resolve/overrides/protobufExt.kt b/compiler/fir/analysis-tests/testData/resolve/overrides/protobufExt.kt index 7571147ad3c..90dc518d16e 100644 --- a/compiler/fir/analysis-tests/testData/resolve/overrides/protobufExt.kt +++ b/compiler/fir/analysis-tests/testData/resolve/overrides/protobufExt.kt @@ -3,7 +3,7 @@ interface Message> { fun ext(e: Ext): T } -class MyMessage : Message +class MyMessage : Message class MyExt : Ext fun , T> Message.extF(e: Ext): T = ext(e) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirNotImplementedOverrideChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirNotImplementedOverrideChecker.kt index 37cd01e4084..36338c17910 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirNotImplementedOverrideChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirNotImplementedOverrideChecker.kt @@ -9,8 +9,7 @@ import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities -import org.jetbrains.kotlin.fir.FirFakeSourceElementKind -import org.jetbrains.kotlin.fir.HASHCODE_NAME +import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClass import org.jetbrains.kotlin.fir.analysis.checkers.modality @@ -25,9 +24,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_IMPL_MEMBER_ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.OVERRIDING_FINAL_MEMBER_BY_DELEGATION import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn -import org.jetbrains.kotlin.fir.containingClass import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionCallableSymbol @@ -69,7 +66,7 @@ object FirNotImplementedOverrideChecker : FirClassChecker() { fun FirCallableMemberDeclaration<*>.shouldBeImplemented(): Boolean { if (!isAbstract) return false val containingClass = getContainingClass(context) - if (containingClass === declaration) return false + if (containingClass === declaration && origin == FirDeclarationOrigin.Source) return false if (containingClass is FirRegularClass && containingClass.isExpect) return false return true } @@ -121,7 +118,7 @@ object FirNotImplementedOverrideChecker : FirClassChecker() { } if (notImplementedSymbols.isNotEmpty()) { - val notImplemented = notImplementedSymbols.first().fir + val notImplemented = notImplementedSymbols.first().unwrapFakeOverrides().fir if (notImplemented.isFromInterfaceOrEnum(context)) { reporter.reportOn(source, ABSTRACT_MEMBER_NOT_IMPLEMENTED, declaration, notImplemented, context) } else { diff --git a/compiler/testData/diagnostics/tests/delegation/DelegationAndOverriding.fir.kt b/compiler/testData/diagnostics/tests/delegation/DelegationAndOverriding.fir.kt index 9ef3a0cfb89..93c0aecf733 100644 --- a/compiler/testData/diagnostics/tests/delegation/DelegationAndOverriding.fir.kt +++ b/compiler/testData/diagnostics/tests/delegation/DelegationAndOverriding.fir.kt @@ -25,7 +25,7 @@ interface G { fun foo(t : T) : T } -class GC() : G { +class GC() : G { } diff --git a/compiler/testData/diagnostics/tests/generics/kt5508.fir.kt b/compiler/testData/diagnostics/tests/generics/kt5508.fir.kt index c9daf5ae02c..932b33aea69 100644 --- a/compiler/testData/diagnostics/tests/generics/kt5508.fir.kt +++ b/compiler/testData/diagnostics/tests/generics/kt5508.fir.kt @@ -5,7 +5,7 @@ abstract class A { public abstract fun bar(x: T) public inner abstract class B : A>() { - public inner class C : B>() + public inner class C : B>() { // Here B> means A.B>.B.B.C>>.B.B>.B.B.C>.C> // while for being a correct override it should be A.B>.B.B.C> diff --git a/compiler/testData/diagnostics/tests/incompleteCode/diagnosticWithSyntaxError/typeReferenceError.fir.kt b/compiler/testData/diagnostics/tests/incompleteCode/diagnosticWithSyntaxError/typeReferenceError.fir.kt index 6f2e9d1e71a..aa5f5d1c772 100644 --- a/compiler/testData/diagnostics/tests/incompleteCode/diagnosticWithSyntaxError/typeReferenceError.fir.kt +++ b/compiler/testData/diagnostics/tests/incompleteCode/diagnosticWithSyntaxError/typeReferenceError.fir.kt @@ -1,3 +1,3 @@ package typeReferenceError -class Pair<:(val c: fun main() +class Pair<:(val c: fun main() diff --git a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableList.fir.kt b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableList.fir.kt index a05a08eca6a..014849f0c5d 100644 --- a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableList.fir.kt +++ b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableList.fir.kt @@ -108,7 +108,7 @@ public class A extends AImpl implements List { } // FILE: X.kt -class X : A() +class X : A() fun main() { val x = X() diff --git a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableListKotlin.fir.kt b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableListKotlin.fir.kt index 98e9889af42..502a18f78b9 100644 --- a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableListKotlin.fir.kt +++ b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantImplMutableListKotlin.fir.kt @@ -95,7 +95,7 @@ public class A extends AImpl implements List { } // FILE: X.kt -class X : A() +class X : A() fun main() { val x = X() diff --git a/compiler/testData/diagnostics/tests/java8Overrides/abstractVsAbstract.fir.kt b/compiler/testData/diagnostics/tests/java8Overrides/abstractVsAbstract.fir.kt deleted file mode 100644 index e13adb74cea..00000000000 --- a/compiler/testData/diagnostics/tests/java8Overrides/abstractVsAbstract.fir.kt +++ /dev/null @@ -1,13 +0,0 @@ -interface ILeft { - fun foo() -} - -interface IRight { - fun foo() -} - -interface IDerived : ILeft, IRight - -class CDerived : ILeft, IRight - -abstract class ADerived : ILeft, IRight \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/java8Overrides/abstractVsAbstract.kt b/compiler/testData/diagnostics/tests/java8Overrides/abstractVsAbstract.kt index 3e26c7b7b96..8af8a90df91 100644 --- a/compiler/testData/diagnostics/tests/java8Overrides/abstractVsAbstract.kt +++ b/compiler/testData/diagnostics/tests/java8Overrides/abstractVsAbstract.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL interface ILeft { fun foo() } diff --git a/compiler/testData/diagnostics/tests/override/ExtendFunctionClass.fir.kt b/compiler/testData/diagnostics/tests/override/ExtendFunctionClass.fir.kt deleted file mode 100644 index 9a56a456d57..00000000000 --- a/compiler/testData/diagnostics/tests/override/ExtendFunctionClass.fir.kt +++ /dev/null @@ -1,9 +0,0 @@ -package extendFunctionClass - -class A : Function1 { - -} - -class B : Function1 { - override fun invoke(p1 : Int) = p1 -} diff --git a/compiler/testData/diagnostics/tests/override/ExtendFunctionClass.kt b/compiler/testData/diagnostics/tests/override/ExtendFunctionClass.kt index 85ec731a05b..3a48475ed9d 100644 --- a/compiler/testData/diagnostics/tests/override/ExtendFunctionClass.kt +++ b/compiler/testData/diagnostics/tests/override/ExtendFunctionClass.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL package extendFunctionClass class A : Function1 { diff --git a/compiler/testData/diagnostics/tests/override/FakeOverrideModality1.fir.kt b/compiler/testData/diagnostics/tests/override/FakeOverrideModality1.fir.kt deleted file mode 100644 index 370dee14575..00000000000 --- a/compiler/testData/diagnostics/tests/override/FakeOverrideModality1.fir.kt +++ /dev/null @@ -1,14 +0,0 @@ -interface A { - fun foo() {} -} - -interface B : A { - abstract override fun foo() -} - -interface C { - abstract fun foo() -} - -// Fake override Z#foo should be abstract -class Z : B, C diff --git a/compiler/testData/diagnostics/tests/override/FakeOverrideModality1.kt b/compiler/testData/diagnostics/tests/override/FakeOverrideModality1.kt index 294e0f4971e..deb1266ce9b 100644 --- a/compiler/testData/diagnostics/tests/override/FakeOverrideModality1.kt +++ b/compiler/testData/diagnostics/tests/override/FakeOverrideModality1.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL interface A { fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/override/FakeOverrideModality3.fir.kt b/compiler/testData/diagnostics/tests/override/FakeOverrideModality3.fir.kt deleted file mode 100644 index 022cd3bd460..00000000000 --- a/compiler/testData/diagnostics/tests/override/FakeOverrideModality3.fir.kt +++ /dev/null @@ -1,16 +0,0 @@ -interface A { - fun foo() {} -} - -interface B : A { - abstract override fun foo() -} - -interface C : A { - abstract override fun foo() -} - -interface D : A - -// Fake override Z#foo should be abstract -class Z : B, C, D diff --git a/compiler/testData/diagnostics/tests/override/FakeOverrideModality3.kt b/compiler/testData/diagnostics/tests/override/FakeOverrideModality3.kt index 485981df58d..e199f95f23d 100644 --- a/compiler/testData/diagnostics/tests/override/FakeOverrideModality3.kt +++ b/compiler/testData/diagnostics/tests/override/FakeOverrideModality3.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL interface A { fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/override/Generics.fir.kt b/compiler/testData/diagnostics/tests/override/Generics.fir.kt index 3f0d4bc44e4..54f1c4b3d24 100644 --- a/compiler/testData/diagnostics/tests/override/Generics.fir.kt +++ b/compiler/testData/diagnostics/tests/override/Generics.fir.kt @@ -40,15 +40,15 @@ abstract class MyAbstractClass1 : MyTrait, MyAbstractClass() { override fun bar(t: String) = t } -class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} -class MyIllegalGenericClass2(r : R) : MyTrait, MyAbstractClass() { +class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} +class MyIllegalGenericClass2(r : R) : MyTrait, MyAbstractClass() { override fun foo(r: R) = r override val pr : R = r } -class MyIllegalClass1 : MyTrait, MyAbstractClass() {} +class MyIllegalClass1 : MyTrait, MyAbstractClass() {} abstract class MyLegalAbstractClass1 : MyTrait, MyAbstractClass() {} -class MyIllegalClass2(t : T) : MyTrait, MyAbstractClass() { +class MyIllegalClass2(t : T) : MyTrait, MyAbstractClass() { fun foo(t: T) = t fun bar(t: T) = t val pr : T = t diff --git a/compiler/testData/diagnostics/tests/override/MultipleDefaultsInSupertypesNoExplicitOverride.fir.kt b/compiler/testData/diagnostics/tests/override/MultipleDefaultsInSupertypesNoExplicitOverride.fir.kt index bb84bf8ce14..fb7b2d1e764 100644 --- a/compiler/testData/diagnostics/tests/override/MultipleDefaultsInSupertypesNoExplicitOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/override/MultipleDefaultsInSupertypesNoExplicitOverride.fir.kt @@ -6,5 +6,5 @@ interface Y { fun foo(a : Int = 1) } -class Z1 : X, Y {} // BUG -object Z1O : X, Y {} // BUG \ No newline at end of file +class Z1 : X, Y {} // BUG +object Z1O : X, Y {} // BUG diff --git a/compiler/testData/diagnostics/tests/override/ProtectedAndPrivateFromSupertypes.fir.kt b/compiler/testData/diagnostics/tests/override/ProtectedAndPrivateFromSupertypes.fir.kt deleted file mode 100644 index 13616922adb..00000000000 --- a/compiler/testData/diagnostics/tests/override/ProtectedAndPrivateFromSupertypes.fir.kt +++ /dev/null @@ -1,17 +0,0 @@ -package test - -interface A { - val a: String -} - -interface B { - val a: String -} - -open class C { - private val a: String = "" -} - -class Subject : C(), A, B { - val c = a -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/override/ProtectedAndPrivateFromSupertypes.kt b/compiler/testData/diagnostics/tests/override/ProtectedAndPrivateFromSupertypes.kt index e4bb3f41098..81066629f63 100644 --- a/compiler/testData/diagnostics/tests/override/ProtectedAndPrivateFromSupertypes.kt +++ b/compiler/testData/diagnostics/tests/override/ProtectedAndPrivateFromSupertypes.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL package test interface A { diff --git a/compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.fir.kt b/compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.fir.kt deleted file mode 100644 index fcdda569a7f..00000000000 --- a/compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.fir.kt +++ /dev/null @@ -1,11 +0,0 @@ -// http://youtrack.jetbrains.com/issue/KT-1996 - -interface Foo { - fun foo(): Unit -} - -interface Bar { - fun foo(): Unit -} - -class Baz : Foo, Bar \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.kt b/compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.kt index 2c1da2c5766..64f8f9f7f29 100644 --- a/compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.kt +++ b/compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // http://youtrack.jetbrains.com/issue/KT-1996 interface Foo { diff --git a/compiler/testData/diagnostics/tests/override/clashesOnInheritance/covariantOverrides.fir.kt b/compiler/testData/diagnostics/tests/override/clashesOnInheritance/covariantOverrides.fir.kt index c0ac2b03bc0..3ad448ae157 100644 --- a/compiler/testData/diagnostics/tests/override/clashesOnInheritance/covariantOverrides.fir.kt +++ b/compiler/testData/diagnostics/tests/override/clashesOnInheritance/covariantOverrides.fir.kt @@ -19,7 +19,7 @@ interface IDerived : ILeft, IRight { } // Error: ILeft::copy and IRight::copy have unrelated return types -class CDerivedInvalid1 : ILeft, IRight +class CDerivedInvalid1 : ILeft, IRight // Error: CLeft::copy and IRight::copy have unrelated return types class CDerivedInvalid2 : CLeft(), IRight diff --git a/compiler/testData/diagnostics/testsWithStdLib/regression/ea70485_functionTypeInheritor.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/regression/ea70485_functionTypeInheritor.fir.kt index b94f4ee0b6a..29af733c4e9 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/regression/ea70485_functionTypeInheritor.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/regression/ea70485_functionTypeInheritor.fir.kt @@ -9,7 +9,7 @@ fun test() { a {} } -class Ext : String.() -> Unit { +class Ext : String.() -> Unit { } fun test2() { diff --git a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.4.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.4.fir.kt index 9059098dd66..1a0e11e0205 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.4.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.4.fir.kt @@ -97,7 +97,7 @@ abstract class BaseCase4(val a: String) : InterfaceCase4 {} * NOTE: abstract class implements java interface */ -class Case5(a: String) : BaseCase5(a) {} +class Case5(a: String) : BaseCase5(a) {} abstract class BaseCase5(val a: String) : java.util.Deque {} diff --git a/idea/testData/checker/OverridesAndGenerics.fir.kt b/idea/testData/checker/OverridesAndGenerics.fir.kt index e47bfa1d1a4..4180c4bcb7d 100644 --- a/idea/testData/checker/OverridesAndGenerics.fir.kt +++ b/idea/testData/checker/OverridesAndGenerics.fir.kt @@ -23,13 +23,13 @@ override fun bar(t: String) = t } - class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} - class MyIllegalGenericClass2 : MyTrait, MyAbstractClass() { + class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} + class MyIllegalGenericClass2 : MyTrait, MyAbstractClass() { override fun foo(r: R) = r } - class MyIllegalClass1 : MyTrait, MyAbstractClass() {} + class MyIllegalClass1 : MyTrait, MyAbstractClass() {} - class MyIllegalClass2 : MyTrait, MyAbstractClass() { + class MyIllegalClass2 : MyTrait, MyAbstractClass() { fun foo(t: T) = t fun bar(t: T) = t }