diff --git a/compiler/fir/analysis-tests/testData/resolve/openInInterface.kt b/compiler/fir/analysis-tests/testData/resolve/openInInterface.kt index b1fb9400c42..c827bacb73a 100644 --- a/compiler/fir/analysis-tests/testData/resolve/openInInterface.kt +++ b/compiler/fir/analysis-tests/testData/resolve/openInInterface.kt @@ -3,11 +3,11 @@ interface Some { open fun bar() {} open val x: Int - open val y = 1 + open val y = 1 open val z get() = 1 open var xx: Int - open var yy = 1 + open var yy = 1 open var zz: Int set(value) { field = value diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMemberPropertyChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMemberPropertyChecker.kt new file mode 100644 index 00000000000..d8b641a1ee0 --- /dev/null +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMemberPropertyChecker.kt @@ -0,0 +1,120 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.analysis.checkers.declaration + +import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext +import org.jetbrains.kotlin.fir.analysis.checkers.extended.report +import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors +import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor +import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol +import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef + +// See old FE's [DeclarationsChecker] +object FirMemberPropertyChecker : FirBasicDeclarationChecker() { + override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { + if (declaration !is FirRegularClass) { + return + } + for (member in declaration.declarations) { + if (member is FirProperty) { + checkProperty(declaration, member, reporter) + } + } + } + + private fun checkProperty(containingDeclaration: FirRegularClass, property: FirProperty, reporter: DiagnosticReporter) { + if (inInterface(containingDeclaration) && + property.visibility == Visibilities.Private && + !property.isAbstract && + (property.getter == null || property.getter is FirDefaultPropertyAccessor) + ) { + property.source?.let { source -> + reporter.report(source, FirErrors.PRIVATE_PROPERTY_IN_INTERFACE) + } + } + + if (property.isAbstract) { + if (!containingDeclaration.isAbstract && !containingDeclaration.isSealed && !inEnumClass(containingDeclaration)) { + property.source?.let { source -> + reporter.report(source, FirErrors.ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS) + return + } + } + + if (property.delegate != null) { + property.delegate!!.source?.let { + if (inInterface(containingDeclaration)) { + reporter.report(FirErrors.DELEGATED_PROPERTY_IN_INTERFACE.on(it, property.delegate!!)) + } else { + reporter.report(FirErrors.ABSTRACT_DELEGATED_PROPERTY.on(it, property.delegate!!)) + } + } + } + + checkAccessor(property.getter, property.delegate) { src, symbol -> + reporter.report(FirErrors.ABSTRACT_PROPERTY_WITH_GETTER.on(src, symbol)) + } + checkAccessor(property.setter, property.delegate) { src, symbol -> + if (symbol.fir.visibility == Visibilities.Private && property.visibility != Visibilities.Private) { + reporter.report(FirErrors.PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY.on(src, symbol)) + } else { + reporter.report(FirErrors.ABSTRACT_PROPERTY_WITH_SETTER.on(src, symbol)) + } + } + } + + checkPropertyInitializer(containingDeclaration, property, reporter) + + if (property.isOpen) { + checkAccessor(property.setter, property.delegate) { src, symbol -> + if (symbol.fir.visibility == Visibilities.Private && property.visibility != Visibilities.Private) { + reporter.report(FirErrors.PRIVATE_SETTER_FOR_OPEN_PROPERTY.on(src, symbol)) + } + } + } + } + + private fun checkPropertyInitializer(containingDeclaration: FirRegularClass, property: FirProperty, reporter: DiagnosticReporter) { + property.initializer?.source?.let { + if (property.isAbstract) { + reporter.report(FirErrors.ABSTRACT_PROPERTY_WITH_INITIALIZER.on(it, property.initializer!!)) + } else if (inInterface(containingDeclaration)) { + reporter.report(FirErrors.PROPERTY_INITIALIZER_IN_INTERFACE.on(it, property.initializer!!)) + } + } + if (property.isAbstract) { + if (property.initializer == null && property.delegate == null && property.returnTypeRef is FirImplicitTypeRef) { + property.source?.let { + reporter.report(FirErrors.PROPERTY_WITH_NO_TYPE_NO_INITIALIZER.on(it, property.symbol)) + } + } + } + } + + private fun checkAccessor( + accessor: FirPropertyAccessor?, + delegate: FirExpression?, + report: (FirSourceElement, FirPropertyAccessorSymbol) -> Unit, + ) { + if (accessor != null && accessor !is FirDefaultPropertyAccessor && accessor.hasBody && delegate == null) { + accessor.source?.let { + report.invoke(it, accessor.symbol) + } + } + } + + private fun inInterface(containingDeclaration: FirRegularClass): Boolean = + containingDeclaration.classKind == ClassKind.INTERFACE + + private fun inEnumClass(containingDeclaration: FirRegularClass): Boolean = + containingDeclaration.classKind == ClassKind.ENUM_CLASS +} diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 4d941074326..199aaa4bfb8 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -12,7 +12,9 @@ import org.jetbrains.kotlin.fir.FirEffectiveVisibility import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol @@ -147,6 +149,23 @@ object FirErrors { val LOCAL_OBJECT_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) val LOCAL_INTERFACE_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) + // Properties & accessors + val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error0(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val PRIVATE_PROPERTY_IN_INTERFACE by error0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + + val ABSTRACT_PROPERTY_WITH_INITIALIZER by error1() + val PROPERTY_INITIALIZER_IN_INTERFACE by error1() + val PROPERTY_WITH_NO_TYPE_NO_INITIALIZER by error1() + + val ABSTRACT_DELEGATED_PROPERTY by error1() + val DELEGATED_PROPERTY_IN_INTERFACE by error1() + // TODO: val ACCESSOR_FOR_DELEGATED_PROPERTY by error1() + + val ABSTRACT_PROPERTY_WITH_GETTER by error1() + val ABSTRACT_PROPERTY_WITH_SETTER by error1() + val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error1() + val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error1() + // Control flow diagnostics val UNINITIALIZED_VARIABLE by error1() val WRONG_INVOCATION_KIND by warning3, EventOccurrencesRange, EventOccurrencesRange>() diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt index dd5aab40c41..ccbd436b7c2 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt @@ -43,6 +43,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() { override val regularClassCheckers: Set = setOf( FirTypeMismatchOnOverrideChecker, + FirMemberPropertyChecker, ) override val constructorCheckers: Set = setOf( diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt index ae0c30205a6..abeeaddb8cd 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParameterBuilder @@ -35,15 +36,24 @@ fun FirTypeParameterBuilder.addDefaultBoundIfNecessary(isFlexible: Boolean = fal } } +inline val FirRegularClass.modality get() = status.modality +inline val FirRegularClass.isSealed get() = status.modality == Modality.SEALED +inline val FirRegularClass.isAbstract get() = status.modality == Modality.ABSTRACT + inline val FirRegularClass.isInner get() = status.isInner inline val FirRegularClass.isCompanion get() = status.isCompanion inline val FirRegularClass.isData get() = status.isData inline val FirRegularClass.isInline get() = status.isInline inline val FirRegularClass.isFun get() = status.isFun + inline val FirMemberDeclaration.modality get() = status.modality +inline val FirMemberDeclaration.isAbstract get() = status.modality == Modality.ABSTRACT +inline val FirMemberDeclaration.isOpen get() = status.modality == Modality.OPEN + inline val FirMemberDeclaration.visibility get() = status.visibility inline val FirMemberDeclaration.allowsToHaveFakeOverride: Boolean get() = !Visibilities.isPrivate(visibility) && visibility != Visibilities.InvisibleFake + inline val FirMemberDeclaration.isActual get() = status.isActual inline val FirMemberDeclaration.isExpect get() = status.isExpect inline val FirMemberDeclaration.isInner get() = status.isInner @@ -64,6 +74,7 @@ inline val FirPropertyAccessor.modality get() = status.modality inline val FirPropertyAccessor.visibility get() = status.visibility inline val FirPropertyAccessor.isInline get() = status.isInline inline val FirPropertyAccessor.isExternal get() = status.isExternal +inline val FirPropertyAccessor.hasBody get() = body != null inline val FirProperty.allowsToHaveFakeOverride: Boolean get() = !Visibilities.isPrivate(visibility) && visibility != Visibilities.InvisibleFake diff --git a/compiler/testData/diagnostics/tests/AbstractInAbstractClass.fir.kt b/compiler/testData/diagnostics/tests/AbstractInAbstractClass.fir.kt index 5fa3158c3ca..b44c165a968 100644 --- a/compiler/testData/diagnostics/tests/AbstractInAbstractClass.fir.kt +++ b/compiler/testData/diagnostics/tests/AbstractInAbstractClass.fir.kt @@ -5,22 +5,22 @@ abstract class MyAbstractClass() { val a: Int val a1: Int = 1 abstract val a2: Int - abstract val a3: Int = 1 + abstract val a3: Int = 1 var b: Int private set var b1: Int = 0; private set abstract var b2: Int private set - abstract var b3: Int = 0; private set + abstract var b3: Int = 0; private set var c: Int set(v: Int) { field = v } var c1: Int = 0; set(v: Int) { field = v } - abstract var c2: Int set(v: Int) { field = v } - abstract var c3: Int = 0; set(v: Int) { field = v } + abstract var c2: Int set(v: Int) { field = v } + abstract var c3: Int = 0; set(v: Int) { field = v } val e: Int get() = a val e1: Int = 0; get() = a - abstract val e2: Int get() = a - abstract val e3: Int = 0; get() = a + abstract val e2: Int get() = a + abstract val e3: Int = 0; get() = a //methods fun f() diff --git a/compiler/testData/diagnostics/tests/AbstractInClass.fir.kt b/compiler/testData/diagnostics/tests/AbstractInClass.fir.kt index ca2612d35bb..4bdd5e8f34f 100644 --- a/compiler/testData/diagnostics/tests/AbstractInClass.fir.kt +++ b/compiler/testData/diagnostics/tests/AbstractInClass.fir.kt @@ -4,23 +4,23 @@ class MyClass() { //properties val a: Int val a1: Int = 1 - abstract val a2: Int - abstract val a3: Int = 1 + abstract val a2: Int + abstract val a3: Int = 1 var b: Int private set var b1: Int = 0; private set - abstract var b2: Int private set - abstract var b3: Int = 0; private set + abstract var b2: Int private set + abstract var b3: Int = 0; private set var c: Int set(v: Int) { field = v } var c1: Int = 0; set(v: Int) { field = v } - abstract var c2: Int set(v: Int) { field = v } - abstract var c3: Int = 0; set(v: Int) { field = v } + abstract var c2: Int set(v: Int) { field = v } + abstract var c3: Int = 0; set(v: Int) { field = v } val e: Int get() = a val e1: Int = 0; get() = a - abstract val e2: Int get() = a - abstract val e3: Int = 0; get() = a + abstract val e2: Int get() = a + abstract val e3: Int = 0; get() = a //methods fun f() diff --git a/compiler/testData/diagnostics/tests/AbstractInTrait.fir.kt b/compiler/testData/diagnostics/tests/AbstractInTrait.fir.kt index 2560ef10b9c..04439b920e5 100644 --- a/compiler/testData/diagnostics/tests/AbstractInTrait.fir.kt +++ b/compiler/testData/diagnostics/tests/AbstractInTrait.fir.kt @@ -3,24 +3,24 @@ package abstract interface MyTrait { //properties val a: Int - val a1: Int = 1 + val a1: Int = 1 abstract val a2: Int - abstract val a3: Int = 1 + abstract val a3: Int = 1 var b: Int private set - var b1: Int = 0; private set + var b1: Int = 0; private set abstract var b2: Int private set - abstract var b3: Int = 0; private set + abstract var b3: Int = 0; private set var c: Int set(v: Int) { field = v } - var c1: Int = 0; set(v: Int) { field = v } - abstract var c2: Int set(v: Int) { field = v } - abstract var c3: Int = 0; set(v: Int) { field = v } + var c1: Int = 0; set(v: Int) { field = v } + abstract var c2: Int set(v: Int) { field = v } + abstract var c3: Int = 0; set(v: Int) { field = v } val e: Int get() = a - val e1: Int = 0; get() = a - abstract val e2: Int get() = a - abstract val e3: Int = 0; get() = a + val e1: Int = 0; get() = a + abstract val e2: Int get() = a + abstract val e3: Int = 0; get() = a //methods fun f() @@ -30,16 +30,16 @@ interface MyTrait { //property accessors var i: Int abstract get abstract set - var i1: Int = 0; abstract get abstract set + var i1: Int = 0; abstract get abstract set var j: Int get() = i; abstract set - var j1: Int = 0; get() = i; abstract set + var j1: Int = 0; get() = i; abstract set var k: Int abstract set - var k1: Int = 0; abstract set + var k1: Int = 0; abstract set var l: Int abstract get abstract set - var l1: Int = 0; abstract get abstract set + var l1: Int = 0; abstract get abstract set var n: Int abstract get abstract set(v: Int) {} } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/DeferredTypes.fir.kt b/compiler/testData/diagnostics/tests/DeferredTypes.fir.kt index e2b364f0e11..3647a682a51 100644 --- a/compiler/testData/diagnostics/tests/DeferredTypes.fir.kt +++ b/compiler/testData/diagnostics/tests/DeferredTypes.fir.kt @@ -1,5 +1,5 @@ // NI_EXPECTED_FILE interface T { - val a = Foo.bar() + val a = Foo.bar() } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/PrivateSetterForOverridden.fir.kt b/compiler/testData/diagnostics/tests/PrivateSetterForOverridden.fir.kt index 787940eac55..352d5a17af6 100644 --- a/compiler/testData/diagnostics/tests/PrivateSetterForOverridden.fir.kt +++ b/compiler/testData/diagnostics/tests/PrivateSetterForOverridden.fir.kt @@ -62,9 +62,9 @@ interface E : A { override var a: Int get() = 0 // Errors here and below - private set(arg) {} + private set(arg) {} override var b: Int get() = 0 - private set(arg) {} + private set(arg) {} } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/backingField/FieldInInterface.fir.kt b/compiler/testData/diagnostics/tests/backingField/FieldInInterface.fir.kt index 991779fad58..18688620953 100644 --- a/compiler/testData/diagnostics/tests/backingField/FieldInInterface.fir.kt +++ b/compiler/testData/diagnostics/tests/backingField/FieldInInterface.fir.kt @@ -1,4 +1,4 @@ interface My { - val x: Int = 0 + val x: Int = 0 get() = field } diff --git a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.fir.kt b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.fir.kt index 2f85101af3a..08fac11d23c 100644 --- a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.fir.kt +++ b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.fir.kt @@ -9,7 +9,7 @@ interface T { final val c : Int get() = 42 - final val d = 1 + final val d = 1 } class A { diff --git a/compiler/testData/diagnostics/tests/delegatedProperty/abstractDelegatedProperty.fir.kt b/compiler/testData/diagnostics/tests/delegatedProperty/abstractDelegatedProperty.fir.kt index 14895513007..e05364cf8e3 100644 --- a/compiler/testData/diagnostics/tests/delegatedProperty/abstractDelegatedProperty.fir.kt +++ b/compiler/testData/diagnostics/tests/delegatedProperty/abstractDelegatedProperty.fir.kt @@ -3,7 +3,7 @@ import kotlin.reflect.KProperty abstract class A { - abstract val a: Int by Delegate() + abstract val a: Int by Delegate() } class Delegate { diff --git a/compiler/testData/diagnostics/tests/enum/AbstractInEnum.fir.kt b/compiler/testData/diagnostics/tests/enum/AbstractInEnum.fir.kt index e5ba1ab9ddc..343cf6d9488 100644 --- a/compiler/testData/diagnostics/tests/enum/AbstractInEnum.fir.kt +++ b/compiler/testData/diagnostics/tests/enum/AbstractInEnum.fir.kt @@ -7,22 +7,22 @@ enum class MyEnum() { val a: Int val a1: Int = 1 abstract val a2: Int - abstract val a3: Int = 1 + abstract val a3: Int = 1 var b: Int private set var b1: Int = 0; private set abstract var b2: Int private set - abstract var b3: Int = 0; private set + abstract var b3: Int = 0; private set var c: Int set(v: Int) { field = v } var c1: Int = 0; set(v: Int) { field = v } - abstract var c2: Int set(v: Int) { field = v } - abstract var c3: Int = 0; set(v: Int) { field = v } + abstract var c2: Int set(v: Int) { field = v } + abstract var c3: Int = 0; set(v: Int) { field = v } val e: Int get() = a val e1: Int = 0; get() = a - abstract val e2: Int get() = a - abstract val e3: Int = 0; get() = a + abstract val e2: Int get() = a + abstract val e3: Int = 0; get() = a //methods fun f() diff --git a/compiler/testData/diagnostics/tests/infos/PropertiesWithBackingFields.fir.kt b/compiler/testData/diagnostics/tests/infos/PropertiesWithBackingFields.fir.kt index 6e63b72af36..193b402b51d 100644 --- a/compiler/testData/diagnostics/tests/infos/PropertiesWithBackingFields.fir.kt +++ b/compiler/testData/diagnostics/tests/infos/PropertiesWithBackingFields.fir.kt @@ -1,7 +1,7 @@ abstract class Test() { abstract val x : Int abstract val x1 : Int get - abstract val x2 : Int get() = 1 + abstract val x2 : Int get() = 1 val a : Int val b : Int get @@ -22,9 +22,9 @@ abstract class Test() { abstract var y1 : Int get abstract var y2 : Int set abstract var y3 : Int set get - abstract var y4 : Int set get() = 1 - abstract var y5 : Int set(x) {} get() = 1 - abstract var y6 : Int set(x) {} + abstract var y4 : Int set get() = 1 + abstract var y5 : Int set(x) {} get() = 1 + abstract var y6 : Int set(x) {} var v : Int var v1 : Int get diff --git a/compiler/testData/diagnostics/tests/modifiers/const/applicability.fir.kt b/compiler/testData/diagnostics/tests/modifiers/const/applicability.fir.kt index 1d828a3b8ae..f500a17d974 100644 --- a/compiler/testData/diagnostics/tests/modifiers/const/applicability.fir.kt +++ b/compiler/testData/diagnostics/tests/modifiers/const/applicability.fir.kt @@ -17,7 +17,7 @@ class B(const val constructor: Int = 5) abstract class C { open const val x: Int = 6 - abstract const val y: Int = 7 + abstract const val y: Int = 7 companion object { const val inCompaionObject = 8 diff --git a/compiler/testData/diagnostics/tests/modifiers/privateInInterface.fir.kt b/compiler/testData/diagnostics/tests/modifiers/privateInInterface.fir.kt index 0dbf6aec924..940c479dc64 100644 --- a/compiler/testData/diagnostics/tests/modifiers/privateInInterface.fir.kt +++ b/compiler/testData/diagnostics/tests/modifiers/privateInInterface.fir.kt @@ -1,5 +1,5 @@ interface My { - private val x: Int + private val x: Int private abstract val xx: Int private val xxx: Int get() = 0 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithExplicitAbstractMember.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithExplicitAbstractMember.fir.kt index 901cb01a6d3..98add0b1735 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithExplicitAbstractMember.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithExplicitAbstractMember.fir.kt @@ -9,7 +9,7 @@ interface Foo { expect class NonAbstractClass : Foo { abstract fun bar() - abstract val baz: Int + abstract val baz: Int abstract override fun foo() } diff --git a/compiler/testData/diagnostics/tests/variance/Visibility.fir.kt b/compiler/testData/diagnostics/tests/variance/Visibility.fir.kt index 9cdd40a0c09..09204ae6c0b 100644 --- a/compiler/testData/diagnostics/tests/variance/Visibility.fir.kt +++ b/compiler/testData/diagnostics/tests/variance/Visibility.fir.kt @@ -2,7 +2,7 @@ interface Test { val internal_val: I public val public_val: I protected val protected_val: I - private val private_val: I + private val private_val: I var interlan_private_set: O private set @@ -10,7 +10,7 @@ interface Test { private set protected var protected_private_set: O private set - private var private_private_set: O + private var private_private_set: O private set fun internal_fun(i: O) : I diff --git a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-1/neg/1.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-1/neg/1.1.fir.kt index 35f4087aa11..3f6551a9ac9 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-1/neg/1.1.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-1/neg/1.1.fir.kt @@ -7,7 +7,7 @@ abstract class Base() { abstract fun foo() = {} fun boo() : Unit - abstract val a = "" + abstract val a = "" val b var d }