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 8a7a5816d2d..ecd7a80b0f3 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 @@ -3310,6 +3310,16 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } + add(FirErrors.DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS) { firDiagnostic -> + DefaultArgumentsInExpectWithActualTypealiasImpl( + firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a), + firDiagnostic.b.map { firCallableSymbol -> + firSymbolBuilder.callableBuilder.buildCallableSymbol(firCallableSymbol) + }, + firDiagnostic as KtPsiDiagnostic, + token, + ) + } add(FirErrors.ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE) { firDiagnostic -> ActualAnnotationConflictingDefaultArgumentValueImpl( firSymbolBuilder.variableLikeBuilder.buildVariableLikeSymbol(firDiagnostic.a), 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 057526ccc62..5a7908083e0 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 @@ -2328,6 +2328,12 @@ sealed interface KtFirDiagnostic : KtDiagnosticWithPsi { override val diagnosticClass get() = ActualFunctionWithDefaultArguments::class } + interface DefaultArgumentsInExpectWithActualTypealias : KtFirDiagnostic { + override val diagnosticClass get() = DefaultArgumentsInExpectWithActualTypealias::class + val expectClassSymbol: KtClassLikeSymbol + val members: List + } + interface ActualAnnotationConflictingDefaultArgumentValue : KtFirDiagnostic { override val diagnosticClass get() = ActualAnnotationConflictingDefaultArgumentValue::class val parameter: KtVariableLikeSymbol 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 fc9a4a69e38..d9c2250abf1 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 @@ -2808,6 +2808,13 @@ internal class ActualFunctionWithDefaultArgumentsImpl( token: KtLifetimeToken, ) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.ActualFunctionWithDefaultArguments +internal class DefaultArgumentsInExpectWithActualTypealiasImpl( + override val expectClassSymbol: KtClassLikeSymbol, + override val members: List, + firDiagnostic: KtPsiDiagnostic, + token: KtLifetimeToken, +) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.DefaultArgumentsInExpectWithActualTypealias + internal class ActualAnnotationConflictingDefaultArgumentValueImpl( override val parameter: KtVariableLikeSymbol, firDiagnostic: KtPsiDiagnostic, diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java index b552716ed40..ec17563f25e 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java @@ -208,6 +208,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructor.kt"); } + @Test + @TestMetadata("constructorDefaultArgsViaActualTypealias.kt") + public void testConstructorDefaultArgsViaActualTypealias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructorDefaultArgsViaActualTypealias.kt"); + } + @Test @TestMetadata("expectedDeclaresDefaultArguments.kt") public void testExpectedDeclaresDefaultArguments() throws Exception { @@ -225,6 +231,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst public void testExpectedVsNonExpectedWithDefaults() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/expectedVsNonExpectedWithDefaults.kt"); } + + @Test + @TestMetadata("methodDefaultArgsViaActualTypealias.kt") + public void testMethodDefaultArgsViaActualTypealias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualTypealias.kt"); + } } @Nested diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java index cccf1cbaed5..0f8df4e1d1c 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java @@ -208,6 +208,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructor.kt"); } + @Test + @TestMetadata("constructorDefaultArgsViaActualTypealias.kt") + public void testConstructorDefaultArgsViaActualTypealias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructorDefaultArgsViaActualTypealias.kt"); + } + @Test @TestMetadata("expectedDeclaresDefaultArguments.kt") public void testExpectedDeclaresDefaultArguments() throws Exception { @@ -225,6 +231,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi public void testExpectedVsNonExpectedWithDefaults() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/expectedVsNonExpectedWithDefaults.kt"); } + + @Test + @TestMetadata("methodDefaultArgsViaActualTypealias.kt") + public void testMethodDefaultArgsViaActualTypealias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualTypealias.kt"); + } } @Nested 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 ef094fd83fc..520bc4f1b72 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 @@ -1117,6 +1117,10 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE by error(PositioningStrategy.DECLARATION_SIGNATURE) val ACTUAL_TYPE_ALIAS_WITH_COMPLEX_SUBSTITUTION by error(PositioningStrategy.DECLARATION_SIGNATURE) val ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS by error() + val DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS by error { + parameter>("expectClassSymbol") + parameter>>("members") + } val ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE by error { parameter>("parameter") } 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 fa0aca7e5df..7bcf1bee429 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 @@ -608,6 +608,7 @@ object FirErrors { val ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) val ACTUAL_TYPE_ALIAS_WITH_COMPLEX_SUBSTITUTION by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) val ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS by error0() + 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) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt index ceb919d2d3f..00eb6033abe 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt @@ -22,11 +22,12 @@ import org.jetbrains.kotlin.fir.declarations.utils.isExternal import org.jetbrains.kotlin.fir.declarations.utils.isTailRec import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.resolve.fullyExpandedType +import org.jetbrains.kotlin.fir.scopes.collectAllFunctions +import org.jetbrains.kotlin.fir.scopes.getDeclaredConstructors +import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.SymbolInternals -import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol +import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.types.toSymbol import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility @@ -179,6 +180,15 @@ object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker() { } } } + val expectedSingleCandidate = compatibilityToMembersMap.values.singleOrNull()?.firstOrNull() + if (expectedSingleCandidate != null) { + checkIfExpectHasDefaultArgumentsAndActualizedWithTypealias( + expectedSingleCandidate, + symbol, + context, + reporter, + ) + } } @Suppress("UNUSED_PARAMETER") @@ -241,6 +251,33 @@ object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker() { } } + private fun checkIfExpectHasDefaultArgumentsAndActualizedWithTypealias( + expectSymbol: FirBasedSymbol<*>, + actualSymbol: FirBasedSymbol<*>, + context: CheckerContext, + reporter: DiagnosticReporter, + ) { + if (expectSymbol !is FirClassSymbol || + actualSymbol !is FirTypeAliasSymbol || + expectSymbol.classKind == ClassKind.ANNOTATION_CLASS + ) return + + val membersWithDefaultValueParameters = + expectSymbol.declaredMemberScope(expectSymbol.moduleData.session, memberRequiredPhase = null) + .run { collectAllFunctions() + getDeclaredConstructors() } + .filter { it.valueParameterSymbols.any(FirValueParameterSymbol::hasDefaultValue) } + + if (membersWithDefaultValueParameters.isEmpty()) return + + reporter.reportOn( + actualSymbol.source, + FirErrors.DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS, + expectSymbol, + membersWithDefaultValueParameters, + context + ) + } + fun Map, *>.allStrongIncompatibilities(): Boolean { return keys.all { it is Incompatible && it.kind == IncompatibilityKind.STRONG } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt index 65ec5a7e842..0c4984052fb 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderers.kt @@ -45,6 +45,19 @@ object FirDiagnosticRenderers { val SYMBOLS = KtDiagnosticRenderers.COLLECTION(SYMBOL) + val SYMBOLS_ON_NEWLINE_WITH_INDENT = object : ContextIndependentParameterRenderer>> { + private val mode = MultiplatformDiagnosticRenderingMode() + + override fun render(obj: Collection>): String { + return buildString { + for (symbol in obj) { + mode.newLine(this) + mode.renderSymbol(this, symbol, "") + } + } + } + } + val RENDER_COLLECTION_OF_TYPES = Renderer { types: Collection -> types.joinToString(separator = ", ") { type -> RENDER_TYPE.render(type) 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 61cae6c7bde..37304367fe1 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 @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.DECL import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.FIR import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.FQ_NAMES_IN_TYPES import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.FUNCTIONAL_TYPE_KINDS +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.SYMBOLS_ON_NEWLINE_WITH_INDENT import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.MODULE_DATA import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.NAME_OF_CONTAINING_DECLARATION_OR_FILE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_CLASS_OR_OBJECT @@ -148,6 +149,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_CLASS_VARARG import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_CLASS_WITHOUT_PARAMETERS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DATA_OBJECT_CUSTOM_EQUALS_OR_HASH_CODE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DECLARATION_CANT_BE_INLINED +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEFINITELY_NON_NULLABLE_AS_REIFIED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DELEGATED_PROPERTY_INSIDE_VALUE_CLASS @@ -1792,6 +1794,13 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() { ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS, "Actual function cannot have default argument values, they should be declared in the expected function" ) + map.put( + DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS, + "Default argument values inside expect declaration ''{0}'' are not allowed if it is actualized via typealias. " + + "Possible fix is to remove default argument values in members:{1}", + DECLARATION_NAME, + SYMBOLS_ON_NEWLINE_WITH_INDENT, + ) map.put( ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE, "Parameter ''{0}'' has conflicting values in the expected and actual annotation", diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 961ecf5a67e..b5f81f4983a 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -7457,18 +7457,6 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("fakeOverridesForIntersectionTypes.kt") public void testFakeOverridesForIntersectionTypes() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index 432cb54ae38..bf51d32d7d2 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -7457,18 +7457,6 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("fakeOverridesForIntersectionTypes.kt") public void testFakeOverridesForIntersectionTypes() throws Exception { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 614f4e75883..512855afaf4 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -800,6 +800,7 @@ public interface Errors { DiagnosticFactory0 ACTUAL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); DiagnosticFactory0 ACTUAL_TYPE_ALIAS_WITH_COMPLEX_SUBSTITUTION = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); DiagnosticFactory0 ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS = DiagnosticFactory0.create(ERROR); + DiagnosticFactory2> DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS = DiagnosticFactory2.create(ERROR); DiagnosticFactory1 ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE = DiagnosticFactory1.create(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index e2664cfa15a..00453f7d6bf 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -363,6 +363,10 @@ public class DefaultErrorMessages { MAP.put(ACTUAL_TYPE_ALIAS_WITH_COMPLEX_SUBSTITUTION, "Type arguments in the right-hand side of actual type alias should be its type parameters in the same order, e.g. 'actual typealias Foo = Bar'"); MAP.put(ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS, "Actual function cannot have default argument values, they should be declared in the expected function"); MAP.put(ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE, "Parameter ''{0}'' has conflicting values in the expected and actual annotation", NAME); + MAP.put(DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS, + "Default argument values inside expect declaration ''{0}'' are not allowed if it is actualized via typealias. " + + "Possible fix is to remove default argument values in members:{1}", + NAME, DESCRIPTORS_ON_NEWLINE_WITH_INDENT); MAP.put(EXPECTED_FUNCTION_SOURCE_WITH_DEFAULT_ARGUMENTS_NOT_FOUND, "Expected function source is not found, therefore it's impossible to generate default argument values declared there. " + diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt index 2c406ca553c..dfd885dca97 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt @@ -50,8 +50,6 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeChecker import org.jetbrains.kotlin.utils.IDEAPlatforms import org.jetbrains.kotlin.utils.IDEAPluginsCompatibilityAPI import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull -import java.io.PrintWriter -import java.io.StringWriter object Renderers { @@ -717,6 +715,20 @@ object Renderers { propertyAccessorRenderingPolicy = PropertyAccessorRenderingPolicy.PRETTY }.asRenderer() + @JvmField + val DESCRIPTORS_ON_NEWLINE_WITH_INDENT = object : DiagnosticParameterRenderer> { + private val mode = MultiplatformDiagnosticRenderingMode() + + override fun render(obj: Collection, renderingContext: RenderingContext): String { + return buildString { + for (descriptor in obj) { + mode.newLine(this) + mode.renderDescriptor(this, descriptor, renderingContext, "") + } + } + } + } + fun renderExpressionType(type: KotlinType?, dataFlowTypes: Set?): String { if (type == null) return "Type is unknown" diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt index 49150e08c7d..8e9a767c7e0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.isPrimaryConstructorOfInlineC import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.multiplatform.* import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility.* +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.source.KotlinSourceElement import org.jetbrains.kotlin.resolve.source.PsiSourceFile import org.jetbrains.kotlin.types.KotlinType @@ -203,6 +204,34 @@ class ExpectedActualDeclarationChecker( } } + private fun checkIfExpectHasDefaultArgumentsAndActualizedWithTypealias( + expectDescriptor: MemberDescriptor, + actualDeclaration: KtNamedDeclaration, + trace: BindingTrace, + ) { + if (expectDescriptor !is ClassDescriptor || + actualDeclaration !is KtTypeAlias || + expectDescriptor.kind == ClassKind.ANNOTATION_CLASS + ) return + + val members = expectDescriptor.constructors + expectDescriptor.unsubstitutedMemberScope + .getContributedDescriptors(DescriptorKindFilter.FUNCTIONS) + .filterIsInstance() + + val membersWithDefaultValueParameters = members + .filter { it.valueParameters.any { p -> p.declaresDefaultValue() }} + + if (membersWithDefaultValueParameters.isEmpty()) return + + trace.report( + Errors.DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS.on( + actualDeclaration, + expectDescriptor, + membersWithDefaultValueParameters + ) + ) + } + private fun MemberDescriptor.hasNoActualWithDiagnostic( compatibility: Map, List> ): Boolean { @@ -307,6 +336,10 @@ class ExpectedActualDeclarationChecker( } } } + val expectSingleCandidate = compatibility.values.singleOrNull()?.firstOrNull() + if (expectSingleCandidate != null) { + checkIfExpectHasDefaultArgumentsAndActualizedWithTypealias(expectSingleCandidate, reportOn, trace) + } } private fun checkAmbiguousExpects( diff --git a/compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt b/compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt deleted file mode 100644 index 5adc3015895..00000000000 --- a/compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt +++ /dev/null @@ -1,18 +0,0 @@ -// IGNORE_BACKEND: NATIVE -// !LANGUAGE: +MultiPlatformProjects -// IGNORE_BACKEND_K2: JVM_IR, JS_IR, NATIVE -// FIR status: In FIR, declaring the same `expect` and `actual` classes in one compiler module is not possible (see KT-55177). - -// MODULE: lib -// FILE: impl.kt -class A(val result: String = "OK") - -// MODULE: main(lib) -// FILE: multiplatform.kt -expect class B(result: String = "FAIL") - -actual typealias B = A - -fun box(): String { - return B().result -} diff --git a/compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt b/compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt deleted file mode 100644 index ba3414b4412..00000000000 --- a/compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt +++ /dev/null @@ -1,19 +0,0 @@ -// !LANGUAGE: +MultiPlatformProjects -// IGNORE_BACKEND_K1: ANY -// IGNORE_BACKEND_MULTI_MODULE: ANY - -// MODULE: lib1 -// FILE: impl.kt -class A(val result: String = "OK") - -// MODULE: lib2 -// FILE: B.kt -expect class B(result: String = "FAIL") - -// MODULE: main(lib1)()(lib2) -// FILE: multiplatform.kt -actual typealias B = A - -fun box(): String { - return B().result -} diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructorDefaultArgsViaActualTypealias.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructorDefaultArgsViaActualTypealias.kt new file mode 100644 index 00000000000..aa1578c468b --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructorDefaultArgsViaActualTypealias.kt @@ -0,0 +1,10 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt +expect class DefaultArgsInConstructor(p1: String = "common", p2: String = "common", p3: String) + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +class DefaultArgsInConstructorImpl(p1: String = "common", p2: String = "common", p3: String) + +actual typealias DefaultArgsInConstructor = DefaultArgsInConstructorImpl diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualTypealias.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualTypealias.kt new file mode 100644 index 00000000000..03418a5a091 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualTypealias.kt @@ -0,0 +1,50 @@ +// FIR_IDENTICAL +// !DIAGNOSTICS: -ACTUAL_WITHOUT_EXPECT +// MODULE: m1-common +// FILE: common.kt +expect class A { + fun foo(p1: String = "common", p2: String = "common", p3: String) +} + +expect class B { + fun foo(s: String) +} + +interface I { + fun methodWithDefaultArg(s: String = "common") +} + +expect class WithDefaultArgFromSuper : I { + override fun methodWithDefaultArg(s: String) +} + +expect open class WithIncompatibility { + fun foo(p: String = "common") +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +class AImpl { + fun foo(p1: String = "impl", p2: String = "impl", p3: String) {} +} + +actual typealias A = AImpl + +class BImpl { + fun foo(s: String = "impl") {} +} + +actual typealias B = BImpl + +class WithDefaultArgFromSuperImpl : I { + override fun methodWithDefaultArg(s: String) {} +} + +actual typealias WithDefaultArgFromSuper = WithDefaultArgFromSuperImpl + +class WithIncompatibilityImpl { + fun foo(p: String) {} +} + +actual typealias WithIncompatibility = WithIncompatibilityImpl diff --git a/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/common.kt b/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/common.kt new file mode 100644 index 00000000000..844e161faf2 --- /dev/null +++ b/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/common.kt @@ -0,0 +1,6 @@ +package test + +expect class A(p: String = "constructor") { + fun foo(p: String = "common") + fun bar(p: String) +} diff --git a/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/jvm.kt b/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/jvm.kt new file mode 100644 index 00000000000..e5cfbd72925 --- /dev/null +++ b/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/jvm.kt @@ -0,0 +1,8 @@ +package test + +class AImpl(p: String) { + fun foo(p: String) {} + fun bar(p: String) {} +} + +actual typealias A = AImpl diff --git a/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/output.txt b/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/output.txt new file mode 100644 index 00000000000..558a97a6950 --- /dev/null +++ b/compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/output.txt @@ -0,0 +1,14 @@ +-- Common -- +Exit code: OK +Output: + +-- JVM -- +Exit code: COMPILATION_ERROR +Output: +compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/jvm.kt:8:1: error: default argument values inside expect declaration 'A' are not allowed if it is actualized via typealias. Possible fix is to remove default argument values in members: + public constructor A(p: String = ...) + + public final expect fun foo(p: String = ...): Unit + +actual typealias A = AImpl +^ \ No newline at end of file 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 12c93e8576b..3c0eb5f4d5a 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 @@ -22459,6 +22459,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructor.kt"); } + @Test + @TestMetadata("constructorDefaultArgsViaActualTypealias.kt") + public void testConstructorDefaultArgsViaActualTypealias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/constructorDefaultArgsViaActualTypealias.kt"); + } + @Test @TestMetadata("expectedDeclaresDefaultArguments.kt") public void testExpectedDeclaresDefaultArguments() throws Exception { @@ -22476,6 +22482,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { public void testExpectedVsNonExpectedWithDefaults() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/expectedVsNonExpectedWithDefaults.kt"); } + + @Test + @TestMetadata("methodDefaultArgsViaActualTypealias.kt") + public void testMethodDefaultArgsViaActualTypealias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualTypealias.kt"); + } } @Nested diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 3493ade85f7..48d41d9249e 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -7241,18 +7241,6 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("fakeOverridesForIntersectionTypes.kt") public void testFakeOverridesForIntersectionTypes() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 56450f9f8a6..08db33e491f 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -7457,18 +7457,6 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("fakeOverridesForIntersectionTypes.kt") public void testFakeOverridesForIntersectionTypes() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index 1bc0d5a3102..0ed885d9773 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -7457,18 +7457,6 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("fakeOverridesForIntersectionTypes.kt") public void testFakeOverridesForIntersectionTypes() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxTestGenerated.java index 6b5b595c408..99ca693903b 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxTestGenerated.java @@ -151,18 +151,6 @@ public class JvmIrAgainstOldBoxTestGenerated extends AbstractJvmIrAgainstOldBoxT runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("fakeOverridesForIntersectionTypes.kt") public void testFakeOverridesForIntersectionTypes() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxTestGenerated.java index d8abb5b912c..51c26eada6f 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxTestGenerated.java @@ -151,18 +151,6 @@ public class JvmOldAgainstIrBoxTestGenerated extends AbstractJvmOldAgainstIrBoxT runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("fakeOverridesForIntersectionTypes.kt") public void testFakeOverridesForIntersectionTypes() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java index 32c7dd47eb7..3629717ec93 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java @@ -365,11 +365,29 @@ public class MultiPlatformIntegrationTestGenerated extends AbstractMultiPlatform KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/multiplatform/defaultArguments"), Pattern.compile("^([^\\.]+)$"), null, true); } + @TestMetadata("methodDefaultArgsViaTypealias") + public void testMethodDefaultArgsViaTypealias() throws Exception { + runTest("compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias/"); + } + @TestMetadata("useDefaultArgumentsInDependency") public void testUseDefaultArgumentsInDependency() throws Exception { runTest("compiler/testData/multiplatform/defaultArguments/useDefaultArgumentsInDependency/"); } + @TestMetadata("compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class MethodDefaultArgsViaTypealias extends AbstractMultiPlatformIntegrationTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + public void testAllFilesPresentInMethodDefaultArgsViaTypealias() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/multiplatform/defaultArguments/methodDefaultArgsViaTypealias"), Pattern.compile("^([^\\.]+)$"), null, true); + } + } + @TestMetadata("compiler/testData/multiplatform/defaultArguments/useDefaultArgumentsInDependency") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java index e44605f2f25..094d40f8f13 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java @@ -5689,18 +5689,6 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("genericSetter.kt") public void testGenericSetter() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java index 952b7b5a441..2d1e6cdba67 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java @@ -5809,18 +5809,6 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("genericSetter.kt") public void testGenericSetter() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 7799b64cad4..f7f19c440bb 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -5630,18 +5630,6 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("genericSetter.kt") public void testGenericSetter() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java index a21421388eb..3c636b674c0 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java @@ -5690,18 +5690,6 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/enum.kt"); } - @Test - @TestMetadata("expectClassActualTypeAlias.kt") - public void testExpectClassActualTypeAlias() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias.kt"); - } - - @Test - @TestMetadata("expectClassActualTypeAlias2.kt") - public void testExpectClassActualTypeAlias2() throws Exception { - runTest("compiler/testData/codegen/box/compileKotlinAgainstKotlin/expectClassActualTypeAlias2.kt"); - } - @Test @TestMetadata("genericSetter.kt") public void testGenericSetter() throws Exception {