From 2598ecf23f2b1a4fc2c96520e08ceebaecb0cb73 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 5 Aug 2022 18:26:59 +0200 Subject: [PATCH] Revert "K2: fix internal visibility checks for overrides #KT-53197 Fixed" This reverts commit 166965e559d8aee35338e8f275a0929774ad2625. --- ...CompilerTestFE10TestdataTestGenerated.java | 6 --- ...irOldFrontendDiagnosticsTestGenerated.java | 6 --- ...DiagnosticsWithLightTreeTestGenerated.java | 6 --- .../generators/FakeOverrideGenerator.kt | 2 +- .../fir/resolve/scopes/JvmMappedScopes.kt | 2 +- .../kotlin/fir/FirVisibilityChecker.kt | 13 ----- .../fir/scopes/FirKotlinScopeProvider.kt | 9 ++-- .../scopes/impl/FirClassSubstitutionScope.kt | 21 +++++---- .../scopes/impl/FirStandardOverrideChecker.kt | 9 ++-- .../override/InternalPotentialOverride.kt | 22 --------- .../override/InternalPotentialOverride.txt | 39 --------------- .../abstractInvisibleMemberFromKotlin.fir.kt | 47 ------------------- .../abstractInvisibleMemberFromKotlin.kt | 1 + .../test/runners/DiagnosticTestGenerated.java | 6 --- .../abstract-classes/p-2/neg/1.7.fir.kt | 16 +++---- 15 files changed, 33 insertions(+), 172 deletions(-) delete mode 100644 compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt delete mode 100644 compiler/testData/diagnostics/tests/override/InternalPotentialOverride.txt delete mode 100644 compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.fir.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 42a9d80184f..45b2a0c396d 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -22866,12 +22866,6 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/override/Generics.kt"); } - @Test - @TestMetadata("InternalPotentialOverride.kt") - public void testInternalPotentialOverride() throws Exception { - runTest("compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt"); - } - @Test @TestMetadata("InvisiblePotentialOverride.kt") public void testInvisiblePotentialOverride() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index 3fd0fb85ace..b7f16f68cfb 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -22866,12 +22866,6 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/override/Generics.kt"); } - @Test - @TestMetadata("InternalPotentialOverride.kt") - public void testInternalPotentialOverride() throws Exception { - runTest("compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt"); - } - @Test @TestMetadata("InvisiblePotentialOverride.kt") public void testInvisiblePotentialOverride() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index 67145a53da4..6c409c6930d 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -22866,12 +22866,6 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/override/Generics.kt"); } - @Test - @TestMetadata("InternalPotentialOverride.kt") - public void testInternalPotentialOverride() throws Exception { - runTest("compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt"); - } - @Test @TestMetadata("InvisiblePotentialOverride.kt") public void testInvisiblePotentialOverride() throws Exception { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt index d6246dae2ed..f46af86ee2b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt @@ -205,7 +205,7 @@ class FakeOverrideGenerator( // But they are treated differently in IR (real declarations have already been declared before) and such methods are present among realDeclarationSymbols if (originalSymbol in realDeclarationSymbols) return - if (!originalDeclaration.isVisibleFromDerivedClass(klass.moduleData)) return + if (originalDeclaration.visibility == Visibilities.Private) return val origin = IrDeclarationOrigin.FAKE_OVERRIDE val baseSymbol = originalSymbol.unwrapSubstitutionAndIntersectionOverrides() as S diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/scopes/JvmMappedScopes.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/scopes/JvmMappedScopes.kt index 953a85b5f1d..5aacf562a4d 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/scopes/JvmMappedScopes.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/scopes/JvmMappedScopes.kt @@ -80,7 +80,7 @@ private fun wrapSubstitutionScopeIfNeed( FirClassSubstitutionScope( session, useSiteMemberScope, PLATFORM_TYPE_PARAMETERS_SUBSTITUTION_SCOPE_KEY, substitutor, dispatchReceiverTypeForSubstitutedMembers = derivedClass.defaultType(), - skipInvisibleMembers = true, + skipPrivateMembers = true, ) } } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt index 06d348aafd0..2e16716c23a 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt @@ -484,16 +484,3 @@ fun FirClassLikeSymbol<*>.getContainingClassLookupTag(): ConeClassLikeLookupTag? fun FirBasedSymbol<*>.isVariableOrNamedFunction(): Boolean { return this is FirVariableSymbol || this is FirNamedFunctionSymbol || this is FirPropertyAccessorSymbol } - - -fun FirCallableDeclaration.isVisibleFromDerivedClass(derivedClassModuleData: FirModuleData): Boolean { - return when (visibility) { - Visibilities.Private, Visibilities.PrivateToThis -> - false - Visibilities.Internal -> - derivedClassModuleData == this@isVisibleFromDerivedClass.moduleData - else -> - true - } -} - diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt index 410976606ea..9986794a469 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSessionComponent import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass +import org.jetbrains.kotlin.fir.declarations.utils.classId import org.jetbrains.kotlin.fir.declarations.utils.delegateFields import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.resolve.* @@ -111,7 +112,7 @@ fun FirClass.scopeForClass( scopeSession: ScopeSession ): FirTypeScope = scopeForClassImpl( substitutor, useSiteSession, scopeSession, - skipInvisibleMembers = false, + skipPrivateMembers = false, classFirDispatchReceiver = this, // TODO: why it's always false? isFromExpectClass = false @@ -130,7 +131,7 @@ fun ConeKotlinType.scopeForSupertype( substitutor(symbol, this, useSiteSession), useSiteSession, scopeSession, - skipInvisibleMembers = true, + skipPrivateMembers = true, classFirDispatchReceiver = subClass, isFromExpectClass = (subClass as? FirRegularClass)?.isExpect == true ) @@ -149,7 +150,7 @@ private fun FirClass.scopeForClassImpl( substitutor: ConeSubstitutor, useSiteSession: FirSession, scopeSession: ScopeSession, - skipInvisibleMembers: Boolean, + skipPrivateMembers: Boolean, classFirDispatchReceiver: FirClass, isFromExpectClass: Boolean ): FirTypeScope { @@ -165,7 +166,7 @@ private fun FirClass.scopeForClassImpl( basicScope, key, substitutor, substitutor.substituteOrSelf(classFirDispatchReceiver.defaultType()) as ConeClassLikeType, - skipInvisibleMembers, + skipPrivateMembers, makeExpect = isFromExpectClass ) } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt index 9714bf281d8..81e156a2423 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt @@ -5,10 +5,15 @@ package org.jetbrains.kotlin.fir.scopes.impl -import org.jetbrains.kotlin.fir.* +import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.FirSessionComponent import org.jetbrains.kotlin.fir.caches.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty +import org.jetbrains.kotlin.fir.declarations.utils.visibility +import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull +import org.jetbrains.kotlin.fir.originalForSubstitutionOverride import org.jetbrains.kotlin.fir.resolve.ScopeSessionKey import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.chain @@ -28,7 +33,7 @@ class FirClassSubstitutionScope( key: ScopeSessionKey<*, *>, private val substitutor: ConeSubstitutor, private val dispatchReceiverTypeForSubstitutedMembers: ConeClassLikeType, - private val skipInvisibleMembers: Boolean, + private val skipPrivateMembers: Boolean, private val makeExpect: Boolean = false ) : FirTypeScope() { companion object { @@ -119,7 +124,7 @@ class FirClassSubstitutionScope( fun createSubstitutionOverrideFunction(original: FirNamedFunctionSymbol): FirNamedFunctionSymbol { if (substitutor == ConeSubstitutor.Empty) return original val member = original.fir - if (skipInvisibleMembers && !member.isVisibleInThisScope()) return original + if (skipPrivateMembers && member.visibility == Visibilities.Private) return original val symbolForOverride = FirFakeOverrideGenerator.createSymbolForSubstitutionOverride(original, newOwnerClassId) @@ -219,7 +224,7 @@ class FirClassSubstitutionScope( fun createSubstitutionOverrideProperty(original: FirPropertySymbol): FirPropertySymbol { if (substitutor == ConeSubstitutor.Empty) return original val member = original.fir - if (skipInvisibleMembers && !member.isVisibleInThisScope()) return original + if (skipPrivateMembers && member.visibility == Visibilities.Private) return original val symbolForOverride = FirFakeOverrideGenerator.createSymbolForSubstitutionOverride(original, newOwnerClassId) @@ -305,7 +310,7 @@ class FirClassSubstitutionScope( fun createSubstitutionOverrideField(original: FirFieldSymbol): FirFieldSymbol { if (substitutor == ConeSubstitutor.Empty) return original val member = original.fir - if (skipInvisibleMembers && !member.isVisibleInThisScope()) return original + if (skipPrivateMembers && member.visibility == Visibilities.Private) return original member.symbol.ensureResolved(FirResolvePhase.STATUS) val returnType = member.returnTypeRef.coneTypeSafe() @@ -318,7 +323,7 @@ class FirClassSubstitutionScope( fun createSubstitutionOverrideSyntheticProperty(original: FirSyntheticPropertySymbol): FirSyntheticPropertySymbol { if (substitutor == ConeSubstitutor.Empty) return original val member = original.fir as FirSyntheticProperty - if (skipInvisibleMembers && !member.isVisibleInThisScope()) return original + if (skipPrivateMembers && member.visibility == Visibilities.Private) return original member.symbol.ensureResolved(FirResolvePhase.STATUS) val returnType = member.returnTypeRef.coneTypeSafe() @@ -375,10 +380,6 @@ class FirClassSubstitutionScope( override fun toString(): String { return "Substitution scope for [$useSiteMemberScope] for type $dispatchReceiverTypeForSubstitutedMembers" } - - private fun FirCallableDeclaration.isVisibleInThisScope(): Boolean { - return isVisibleFromDerivedClass(this@FirClassSubstitutionScope.session.moduleData) - } } class FirSubstitutionOverrideStorage(val session: FirSession) : FirSessionComponent { diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt index d8a43152f19..3bc67c0c950 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt @@ -5,9 +5,10 @@ package org.jetbrains.kotlin.fir.scopes.impl +import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.isVisibleFromDerivedClass +import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedTypeDeclaration import org.jetbrains.kotlin.fir.symbols.ensureResolved @@ -121,7 +122,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO } override fun isOverriddenFunction(overrideCandidate: FirSimpleFunction, baseDeclaration: FirSimpleFunction): Boolean { - if (!baseDeclaration.isVisibleFromDerivedClass(overrideCandidate.moduleData)) return false + if (Visibilities.isPrivate(baseDeclaration.visibility)) return false + if (overrideCandidate.valueParameters.size != baseDeclaration.valueParameters.size) return false val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false @@ -139,7 +141,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO overrideCandidate: FirCallableDeclaration, baseDeclaration: FirProperty ): Boolean { - if (!baseDeclaration.isVisibleFromDerivedClass(overrideCandidate.moduleData)) return false + if (Visibilities.isPrivate(baseDeclaration.visibility)) return false + if (overrideCandidate !is FirProperty) return false val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false overrideCandidate.ensureResolved(FirResolvePhase.TYPES) diff --git a/compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt b/compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt deleted file mode 100644 index 5c1d8bfc6aa..00000000000 --- a/compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt +++ /dev/null @@ -1,22 +0,0 @@ -// FIR_IDENTICAL -// MODULE: m1 -// FILE: A.kt - -open class A { - internal open fun foo() : Int = 1 -} - -open class AG { - internal open fun bar(arg: T) = arg -} - -// MODULE: m2(m1) -// FILE: B.kt - -class B : A() { - fun foo() : String = "" -} - -class BG : AG() { - fun bar(arg: Int) = arg -} diff --git a/compiler/testData/diagnostics/tests/override/InternalPotentialOverride.txt b/compiler/testData/diagnostics/tests/override/InternalPotentialOverride.txt deleted file mode 100644 index d37a914a80e..00000000000 --- a/compiler/testData/diagnostics/tests/override/InternalPotentialOverride.txt +++ /dev/null @@ -1,39 +0,0 @@ -// -- Module: -- -package - -public open class A { - public constructor A() - public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - internal open fun foo(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public open class AG { - public constructor AG() - internal open fun bar(/*0*/ arg: T): 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 - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -// -- Module: -- -package - -public final class B : A { - public constructor B() - public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public final fun foo(): kotlin.String - public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - -public final class BG : AG { - public constructor BG() - public final fun bar(/*0*/ arg: kotlin.Int): kotlin.Int - invisible_fake open override /*1*/ /*fake_override*/ fun bar(/*0*/ arg: kotlin.String): kotlin.String - public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String -} - diff --git a/compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.fir.kt b/compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.fir.kt deleted file mode 100644 index 29851cbdb6a..00000000000 --- a/compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.fir.kt +++ /dev/null @@ -1,47 +0,0 @@ -// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses -// MODULE: base -// FILE: Base.kt -package base - -abstract class Base { - fun foo(): String { - return internalFoo() - } - internal abstract fun internalFoo(): String -} - -open class BaseWithOverride : Base() { - override fun internalFoo(): String = "" -} - -// MODULE: intermediate(base) -// FILE: Intermediate.kt -package intermediate -import base.* - -abstract class Intermediate : Base() - -// MODULE: impl(base, intermediate) -// FILE: Impl.kt -package impl -import base.* -import intermediate.* - -class ImplDirectFromBase : Base() - -object ImplObjDirectFromBase : Base() - -class ImplDirectFromBaseWithOverride : BaseWithOverride() - -class ImplDirectFromBaseWithOverrid : Base() { - override fun internalFoo(): String = "" -} - -class ImplViaIntermediate : Intermediate() - -fun foo() { - ImplDirectFromBase().foo() - ImplObjDirectFromBase.foo() - ImplDirectFromBaseWithOverride().foo() - ImplViaIntermediate().foo() -} diff --git a/compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.kt b/compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.kt index d579c813987..514775ae891 100644 --- a/compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.kt +++ b/compiler/testData/diagnostics/tests/visibility/abstractInvisibleMemberFromKotlin.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses // MODULE: base // FILE: Base.kt diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 65673433cc9..079f0304e85 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -22872,12 +22872,6 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/override/Generics.kt"); } - @Test - @TestMetadata("InternalPotentialOverride.kt") - public void testInternalPotentialOverride() throws Exception { - runTest("compiler/testData/diagnostics/tests/override/InternalPotentialOverride.kt"); - } - @Test @TestMetadata("InvisiblePotentialOverride.kt") public void testInvisiblePotentialOverride() throws Exception { diff --git a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.7.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.7.fir.kt index 3cc60e82cc0..6f6c29de10c 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.7.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.7.fir.kt @@ -26,16 +26,16 @@ import base.* // TESTCASE NUMBER: 1 -class Case1 : BaseKotlin() { - override fun foo(b: Boolean?) {} +class Case1 : BaseKotlin() { + override fun foo(b: Boolean?) {} } fun case1() { val v = Case1() v.boo(true) - val o = object : BaseKotlin() { - override fun foo(b: Boolean?) {} + val o = object : BaseKotlin() { + override fun foo(b: Boolean?) {} } } @@ -44,16 +44,16 @@ fun case1() { */ abstract class AbstractClassCase2 : BaseKotlin() {} -class Case2: AbstractClassCase2() { - override fun foo(b: Boolean?) {} +class Case2: AbstractClassCase2() { + override fun foo(b: Boolean?) {} } fun case2() { val v = Case2() v.boo(true) - val o = object : AbstractClassCase2() { - override fun foo(b: Boolean?) {} + val o = object : AbstractClassCase2() { + override fun foo(b: Boolean?) {} } }