From ad4d1a5ba85764b35dca4d5313e252129c8d6d46 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Wed, 13 Sep 2023 17:36:06 +0200 Subject: [PATCH] [IR] Support ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE in K2 It's implemented as IR checker because in K2 constant expressions are evaluated on backend. FIR diagnostic removed because isn't needed. "annotationViaActualTypeAlias" test has no `// FIR_IDENTICAL` because diagnostic reported on entire typealias declaration instead of its name. This is because in IR+LightTree we have only offsets, so can't navigate to typealias name element. ^KT-59940 Fixed --- .../diagnostics/KtFirDataClassConverters.kt | 7 --- .../api/fir/diagnostics/KtFirDiagnostics.kt | 5 -- .../fir/diagnostics/KtFirDiagnosticsImpl.kt | 6 -- .../diagnostics/FirDiagnosticsList.kt | 4 -- .../fir/analysis/diagnostics/FirErrors.kt | 1 - .../FirNonSuppressibleErrorNames.kt | 1 - .../diagnostics/FirErrorsDefaultMessages.kt | 6 -- .../backend/common/CommonBackendErrors.kt | 9 +++ .../common/actualizer/IrActualizerUtils.kt | 11 ++++ ...nConflictingDefaultArgumentValueChecker.kt | 63 +++++++++++++++++++ .../checker/IrExpectActualCheckers.kt | 3 +- ...tionArgumentsCompatibilityCheckStrategy.kt | 2 +- .../defaultArguments/annotations.fir.kt | 32 ---------- .../defaultArguments/annotations.kt | 1 + .../annotationsViaActualTypeAlias.fir.kt | 2 +- 15 files changed, 88 insertions(+), 65 deletions(-) create mode 100644 compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualAnnotationConflictingDefaultArgumentValueChecker.kt delete mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.fir.kt diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt index 4bdf28d2c2d..2ea0258fce2 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -3604,13 +3604,6 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } - add(FirErrors.ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE) { firDiagnostic -> - ActualAnnotationConflictingDefaultArgumentValueImpl( - firSymbolBuilder.variableLikeBuilder.buildVariableLikeSymbol(firDiagnostic.a), - firDiagnostic as KtPsiDiagnostic, - token, - ) - } add(FirErrors.EXPECTED_FUNCTION_SOURCE_WITH_DEFAULT_ARGUMENTS_NOT_FOUND) { firDiagnostic -> ExpectedFunctionSourceWithDefaultArgumentsNotFoundImpl( firDiagnostic as KtPsiDiagnostic, diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt index b3b318c3be3..8aaf497a932 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt @@ -2536,11 +2536,6 @@ sealed interface KtFirDiagnostic : KtDiagnosticWithPsi { val members: List } - interface ActualAnnotationConflictingDefaultArgumentValue : KtFirDiagnostic { - override val diagnosticClass get() = ActualAnnotationConflictingDefaultArgumentValue::class - val parameter: KtVariableLikeSymbol - } - interface ExpectedFunctionSourceWithDefaultArgumentsNotFound : KtFirDiagnostic { override val diagnosticClass get() = ExpectedFunctionSourceWithDefaultArgumentsNotFound::class } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 49300357df5..8e5dc644a0a 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -3057,12 +3057,6 @@ internal class DefaultArgumentsInExpectWithActualTypealiasImpl( token: KtLifetimeToken, ) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.DefaultArgumentsInExpectWithActualTypealias -internal class ActualAnnotationConflictingDefaultArgumentValueImpl( - override val parameter: KtVariableLikeSymbol, - firDiagnostic: KtPsiDiagnostic, - token: KtLifetimeToken, -) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.ActualAnnotationConflictingDefaultArgumentValue - internal class ExpectedFunctionSourceWithDefaultArgumentsNotFoundImpl( firDiagnostic: KtPsiDiagnostic, token: KtLifetimeToken, diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 5c9cfb8a0e6..39a99738273 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -1223,10 +1223,6 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { parameter>("expectClassSymbol") parameter>>("members") } - val ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE by error { - parameter>("parameter") - } - val EXPECTED_FUNCTION_SOURCE_WITH_DEFAULT_ARGUMENTS_NOT_FOUND by error() val NO_ACTUAL_FOR_EXPECT by error(PositioningStrategy.INCOMPATIBLE_DECLARATION) { diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 92b98a788ce..4584dab4ac7 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -650,7 +650,6 @@ object FirErrors { val ACTUAL_TYPE_ALIAS_TO_NOTHING by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) val ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS by error0(SourceElementPositioningStrategies.PARAMETERS_WITH_DEFAULT_VALUE) val DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS by error2, Collection>>() - val ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE by error1>() val EXPECTED_FUNCTION_SOURCE_WITH_DEFAULT_ARGUMENTS_NOT_FOUND by error0() val NO_ACTUAL_FOR_EXPECT by error3, FirModuleData, Map>, Collection>>>(SourceElementPositioningStrategies.INCOMPATIBLE_DECLARATION) val ACTUAL_WITHOUT_EXPECT by error2, Map>, Collection>>>(SourceElementPositioningStrategies.DECLARATION_NAME_ONLY) diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt index 3829e5cd635..961e9628748 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt @@ -450,7 +450,6 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set = setOf( "ACTUAL_TYPE_ALIAS_TO_NOTHING", "ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS", "DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS", - "ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE", "EXPECTED_FUNCTION_SOURCE_WITH_DEFAULT_ARGUMENTS_NOT_FOUND", "NO_ACTUAL_FOR_EXPECT", "ACTUAL_WITHOUT_EXPECT", diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt index f8b2d59b886..af12b08c74d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt @@ -57,7 +57,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ABSTRACT_SUPER_CA import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ABSTRACT_SUPER_CALL_WARNING import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ACCESSOR_FOR_DELEGATED_PROPERTY import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT -import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ACTUAL_MISSING import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ACTUAL_TYPEALIAS_TO_SPECIAL_ANNOTATION @@ -1959,11 +1958,6 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() { DECLARATION_NAME, SYMBOLS_ON_NEWLINE_WITH_INDENT, ) - map.put( - ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE, - "Parameter ''{0}'' has conflicting values in expected and actual annotations.", - SYMBOL - ) map.put( EXPECTED_FUNCTION_SOURCE_WITH_DEFAULT_ARGUMENTS_NOT_FOUND, "Expected function source is not found, so generating default argument values declared there is impossible. Please add the corresponding file to compilation sources." diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CommonBackendErrors.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CommonBackendErrors.kt index f3c1bb3c8c5..3559f69c6d8 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CommonBackendErrors.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CommonBackendErrors.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.common import com.intellij.psi.PsiElement import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.EXPECT_ACTUAL_ANNOTATION_INCOMPATIBILITY import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.INCOMPATIBILITY +import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.DECLARATION_NAME import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.SYMBOL_OWNER_DECLARATION_FQ_NAME import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.diagnostics.* @@ -17,6 +18,7 @@ import org.jetbrains.kotlin.diagnostics.rendering.Renderer import org.jetbrains.kotlin.diagnostics.rendering.Renderers.MODULE_WITH_PLATFORM import org.jetbrains.kotlin.diagnostics.rendering.RootDiagnosticRendererFactory import org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName +import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.classFqName @@ -31,6 +33,7 @@ object CommonBackendErrors { val INCOMPATIBLE_MATCHING by error3>() val ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT by warning3>() val EVALUATION_ERROR by error1() + val ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE by error1() init { RootDiagnosticRendererFactory.registerFactory(KtDefaultCommonBackendErrorMessages) @@ -77,6 +80,11 @@ object KtDefaultCommonBackendErrorMessages : BaseDiagnosticRendererFactory() { "Cannot evaluate constant expression: {0}", STRING, ) + map.put( + CommonBackendErrors.ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE, + "Parameter ''{0}'' has conflicting values in expected and actual annotations.", + DECLARATION_NAME, + ) } } @@ -96,4 +104,5 @@ object BackendDiagnosticRenderers { } "Annotation `$expectAnnotationFqName` $reason" } + val DECLARATION_NAME = Renderer { it.name.asString() } } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt index 103428d0537..918f18e9978 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt @@ -138,6 +138,17 @@ internal fun KtDiagnosticReporterWithImplicitIrBasedContext.reportActualAnnotati ) } +internal fun KtDiagnosticReporterWithImplicitIrBasedContext.reportActualAnnotationConflictingDefaultArgumentValue( + reportOn: IrElement, + file: IrFile, + actualParam: IrValueParameter, +) { + at(reportOn, file).report( + CommonBackendErrors.ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE, + actualParam, + ) +} + internal fun IrElement.containsOptionalExpectation(): Boolean { return this is IrClass && this.kind == ClassKind.ANNOTATION_CLASS && diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualAnnotationConflictingDefaultArgumentValueChecker.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualAnnotationConflictingDefaultArgumentValueChecker.kt new file mode 100644 index 00000000000..a37a267b59c --- /dev/null +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualAnnotationConflictingDefaultArgumentValueChecker.kt @@ -0,0 +1,63 @@ +/* + * Copyright 2010-2023 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.backend.common.actualizer.checker + +import org.jetbrains.kotlin.backend.common.actualizer.reportActualAnnotationConflictingDefaultArgumentValue +import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.ir.expressions.IrExpression +import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol +import org.jetbrains.kotlin.ir.util.file +import org.jetbrains.kotlin.ir.util.parentAsClass +import org.jetbrains.kotlin.resolve.calls.mpp.ExpectActualCollectionArgumentsCompatibilityCheckStrategy + +internal object IrExpectActualAnnotationConflictingDefaultArgumentValueChecker : IrExpectActualChecker { + override fun check(context: IrExpectActualChecker.Context) = with(context) { + for ((expectSymbol, actualSymbol) in matchedExpectToActual) { + if (expectSymbol !is IrConstructorSymbol || actualSymbol !is IrConstructorSymbol) continue + + val expectClass = expectSymbol.owner.parentAsClass + if (expectClass.kind != ClassKind.ANNOTATION_CLASS) continue + + val expectValueParams = expectSymbol.owner.valueParameters + val actualValueParams = actualSymbol.owner.valueParameters + if (expectValueParams.size != actualValueParams.size) continue + + for ((expectParam, actualParam) in expectValueParams.zip(actualValueParams)) { + val expectDefaultValue = expectParam.defaultValue?.expression ?: continue + val actualDefaultValue = actualParam.defaultValue?.expression ?: continue + with(matchingContext) { + if (!areIrExpressionConstValuesEqual( + expectDefaultValue, actualDefaultValue, + ExpectActualCollectionArgumentsCompatibilityCheckStrategy.Default + ) + ) { + reportError(expectClass, actualDefaultValue, actualParam) + } + } + } + } + } + + private fun IrExpectActualChecker.Context.reportError( + expectAnnotationClass: IrClass, + actualDefaultValue: IrExpression, + actualParam: IrValueParameter, + ) { + val actualTypealias = getTypealiasSymbolIfActualizedViaTypealias(expectAnnotationClass, classActualizationInfo)?.owner + if (actualTypealias != null) { + diagnosticsReporter.reportActualAnnotationConflictingDefaultArgumentValue( + actualTypealias, actualTypealias.file, actualParam + ) + return + } + + diagnosticsReporter.reportActualAnnotationConflictingDefaultArgumentValue( + actualDefaultValue, actualParam.file, actualParam + ) + } +} \ No newline at end of file diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualCheckers.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualCheckers.kt index 7631b3743e2..0f6fd06ab24 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualCheckers.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/checker/IrExpectActualCheckers.kt @@ -20,7 +20,8 @@ internal class IrExpectActualCheckers( ) : IrExpectActualChecker.Context { private val checkers: Set = setOf( - IrExpectActualAnnotationMatchingChecker + IrExpectActualAnnotationMatchingChecker, + IrExpectActualAnnotationConflictingDefaultArgumentValueChecker, ) override val matchingContext = object : IrExpectActualMatchingContext(typeSystemContext, classActualizationInfo.actualClasses) { diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualCollectionArgumentsCompatibilityCheckStrategy.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualCollectionArgumentsCompatibilityCheckStrategy.kt index c813a200a83..17228274e34 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualCollectionArgumentsCompatibilityCheckStrategy.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualCollectionArgumentsCompatibilityCheckStrategy.kt @@ -13,7 +13,7 @@ sealed class ExpectActualCollectionArgumentsCompatibilityCheckStrategy { elementsEqual: (T, T) -> Boolean, ): Boolean - internal data object Default : ExpectActualCollectionArgumentsCompatibilityCheckStrategy() { + data object Default : ExpectActualCollectionArgumentsCompatibilityCheckStrategy() { override fun areCompatible( expectArg: Collection, actualArg: Collection, diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.fir.kt deleted file mode 100644 index d91f570f99e..00000000000 --- a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.fir.kt +++ /dev/null @@ -1,32 +0,0 @@ -// MODULE: m1-common -// FILE: common.kt - -expect annotation class A1(val x: Int, val y: String = "OK") - -expect annotation class A2(val x: Int = 42, val y: String = "OK") - -expect annotation class A3(val x: Int, val y: String) - -expect annotation class A4(val x: Int = 42, val y: String) - -expect annotation class A5(val x: Int = 42, val y: String) - -@A1(0) -@A2 -@A3(0, "") -@A4(0, "") -@A5(0, "") -fun test() {} - -// MODULE: m2-jvm()()(m1-common) -// FILE: jvm.kt - -actual annotation class A1(actual val x: Int, actual val y: String) - -actual annotation class A2(actual val x: Int, actual val y: String = "OK") - -actual annotation class A3(actual val x: Int = 42, actual val y: String = "OK") - -actual annotation class A4(actual val x: Int, actual val y: String = "OK") - -actual annotation class A5(actual val x: Int = 239, actual val y: String = "OK") diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.kt index 948d3374e8f..e06dfd57f0e 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotations.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // MODULE: m1-common // FILE: common.kt diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotationsViaActualTypeAlias.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotationsViaActualTypeAlias.fir.kt index 4aadc9bd854..564fefc15a3 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotationsViaActualTypeAlias.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/annotationsViaActualTypeAlias.fir.kt @@ -25,7 +25,7 @@ actual typealias A1 = J1 actual typealias A2 = J2 actual typealias A3 = J3 actual typealias A4 = J4 -actual typealias A5 = J5 +actual typealias A5 = J5 // FILE: J1.java