From c3a5a7754d22cbf70b4c37833b52a2ad97b16601 Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Fri, 18 Jun 2021 11:23:43 +0300 Subject: [PATCH] Use proper applicability for constraint warnings ^KT-47316 Fixed --- ...irOldFrontendDiagnosticsTestGenerated.java | 6 + ...DiagnosticsWithLightTreeTestGenerated.java | 6 + .../FirBlackBoxCodegenTestGenerated.java | 6 + .../DiagnosticReporterByTrackingStrategy.kt | 38 ++-- .../model/ConstraintPositionAndErrors.kt | 24 +- .../model/NewConstraintSystemImpl.kt | 2 +- .../calls/model/KotlinCallDiagnostics.kt | 4 +- .../resolve/calls/model/ResolutionAtoms.kt | 7 +- .../testData/codegen/box/inference/kt42042.kt | 2 - .../testData/codegen/box/inference/kt47316.kt | 39 ++++ .../violatingUpperBoundForSelfType.kt | 1 - .../tests/inference/kt47316.fir.fail | 205 ++++++++++++++++++ .../tests/inference/kt47316.fir.kt | 36 +++ .../diagnostics/tests/inference/kt47316.kt | 36 +++ .../diagnostics/tests/inference/kt47316.txt | 33 +++ .../violatingUpperBoundForSelfType.fir.kt | 2 +- .../tests/typeParameters/kt42042.fir.kt | 2 +- .../test/runners/DiagnosticTestGenerated.java | 6 + .../codegen/BlackBoxCodegenTestGenerated.java | 6 + .../IrBlackBoxCodegenTestGenerated.java | 6 + .../LightAnalysisModeTestGenerated.java | 5 + ...CompilerTestFE10TestdataTestGenerated.java | 6 + 22 files changed, 443 insertions(+), 35 deletions(-) create mode 100644 compiler/testData/codegen/box/inference/kt47316.kt create mode 100644 compiler/testData/diagnostics/tests/inference/kt47316.fir.fail create mode 100644 compiler/testData/diagnostics/tests/inference/kt47316.fir.kt create mode 100644 compiler/testData/diagnostics/tests/inference/kt47316.kt create mode 100644 compiler/testData/diagnostics/tests/inference/kt47316.txt 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 cbec58cd9ee..ef38b88c9b3 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 @@ -12485,6 +12485,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/inference/kt46515.kt"); } + @Test + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/kt47316.kt"); + } + @Test @TestMetadata("kt6175.kt") public void testKt6175() 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 be2c1fb1897..8ec97696058 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 @@ -12485,6 +12485,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/inference/kt46515.kt"); } + @Test + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/kt47316.kt"); + } + @Test @TestMetadata("kt6175.kt") public void testKt6175() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index 416c9513fe4..c42cca42c4e 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -17618,6 +17618,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/inference/kt42130.kt"); } + @Test + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/codegen/box/inference/kt47316.kt"); + } + @Test @TestMetadata("lambdaWithStarReturn.kt") public void testLambdaWithStarReturn() throws Exception { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt index 29c053bde4b..1f4948a86ed 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt @@ -344,17 +344,18 @@ class DiagnosticReporterByTrackingStrategy( ) } - private fun reportConstraintErrorByPosition(error: NewConstraintError, position: ConstraintPosition) { - val argument = when (position) { - is ArgumentConstraintPositionImpl -> position.argument - is ReceiverConstraintPositionImpl -> position.argument - is LHSArgumentConstraintPositionImpl -> position.argument - is LambdaArgumentConstraintPositionImpl -> position.lambda.atom - else -> null - } - val typeMismatchDiagnostic = if (error.isWarning) TYPE_MISMATCH_WARNING else TYPE_MISMATCH - val report = if (error.isWarning) trace::reportDiagnosticOnce else trace::report - + private fun reportConstraintErrorByPosition(error: NewConstraintMismatch, position: ConstraintPosition) { + val argument = + when (position) { + is ArgumentConstraintPositionImpl -> position.argument + is ReceiverConstraintPositionImpl -> position.argument + is LHSArgumentConstraintPositionImpl -> position.argument + is LambdaArgumentConstraintPositionImpl -> position.lambda.atom + else -> null + } + val isWarning = error is NewConstraintWarning + val typeMismatchDiagnostic = if (isWarning) TYPE_MISMATCH_WARNING else TYPE_MISMATCH + val report = if (isWarning) trace::reportDiagnosticOnce else trace::report argument?.let { it.safeAs()?.let lambda@{ lambda -> val parameterTypes = lambda.parametersTypes?.toList() ?: return@lambda @@ -362,7 +363,7 @@ class DiagnosticReporterByTrackingStrategy( val lambdaExpression = lambda.psiExpression as? KtLambdaExpression ?: return@lambda val parameter = lambdaExpression.valueParameters.getOrNull(index) ?: return@lambda val diagnosticFactory = - if (error.isWarning) EXPECTED_PARAMETER_TYPE_MISMATCH_WARNING else EXPECTED_PARAMETER_TYPE_MISMATCH + if (isWarning) EXPECTED_PARAMETER_TYPE_MISMATCH_WARNING else EXPECTED_PARAMETER_TYPE_MISMATCH report(diagnosticFactory.on(parameter, error.upperKotlinType)) return } @@ -406,7 +407,7 @@ class DiagnosticReporterByTrackingStrategy( (position as? ExplicitTypeParameterConstraintPositionImpl)?.let { val typeArgumentReference = (it.typeArgument as SimpleTypeArgumentImpl).typeReference - val diagnosticFactory = if (error.isWarning) UPPER_BOUND_VIOLATED_WARNING else UPPER_BOUND_VIOLATED + val diagnosticFactory = if (isWarning) UPPER_BOUND_VIOLATED_WARNING else UPPER_BOUND_VIOLATED report(diagnosticFactory.on(typeArgumentReference, error.upperKotlinType, error.lowerKotlinType)) } @@ -426,9 +427,8 @@ class DiagnosticReporterByTrackingStrategy( override fun constraintError(error: ConstraintSystemError) { when (error.javaClass) { - NewConstraintError::class.java -> { - error as NewConstraintError - reportConstraintErrorByPosition(error, error.position.from) + NewConstraintError::class.java, NewConstraintWarning::class.java -> { + reportConstraintErrorByPosition(error as NewConstraintMismatch, error.position.from) } CapturedTypeFromSubtyping::class.java -> { @@ -585,7 +585,7 @@ class DiagnosticReporterByTrackingStrategy( } } - private fun reportConstantTypeMismatch(constraintError: NewConstraintError, expression: KtExpression): Boolean { + private fun reportConstantTypeMismatch(constraintError: NewConstraintMismatch, expression: KtExpression): Boolean { if (expression is KtConstantExpression) { val module = context.scope.ownerDescriptor.module val constantValue = constantExpressionEvaluator.evaluateToConstantValue(expression, trace, context.expectedType) @@ -598,5 +598,5 @@ class DiagnosticReporterByTrackingStrategy( } -val NewConstraintError.upperKotlinType get() = upperType as KotlinType -val NewConstraintError.lowerKotlinType get() = lowerType as KotlinType +val NewConstraintMismatch.upperKotlinType get() = upperType as KotlinType +val NewConstraintMismatch.lowerKotlinType get() = lowerType as KotlinType diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt index 9b3f1f81b21..850a1990b4f 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt @@ -91,12 +91,24 @@ object SimpleConstraintSystemConstraintPosition : ConstraintPosition() sealed class ConstraintSystemError(val applicability: CandidateApplicability) +sealed interface NewConstraintMismatch { + val lowerType: KotlinTypeMarker + val upperType: KotlinTypeMarker + val position: IncorporationConstraintPosition +} + class NewConstraintError( - val lowerType: KotlinTypeMarker, - val upperType: KotlinTypeMarker, - val position: IncorporationConstraintPosition, - val isWarning: Boolean = false -) : ConstraintSystemError(if (position.from is ReceiverConstraintPosition<*>) INAPPLICABLE_WRONG_RECEIVER else INAPPLICABLE) + override val lowerType: KotlinTypeMarker, + override val upperType: KotlinTypeMarker, + override val position: IncorporationConstraintPosition, +) : ConstraintSystemError(if (position.from is ReceiverConstraintPosition<*>) INAPPLICABLE_WRONG_RECEIVER else INAPPLICABLE), + NewConstraintMismatch + +class NewConstraintWarning( + override val lowerType: KotlinTypeMarker, + override val upperType: KotlinTypeMarker, + override val position: IncorporationConstraintPosition, +) : ConstraintSystemError(RESOLVED), NewConstraintMismatch class CapturedTypeFromSubtyping( val typeVariable: TypeVariableMarker, @@ -122,4 +134,4 @@ object LowerPriorityToPreserveCompatibility : ConstraintSystemError(RESOLVED_NEE fun Constraint.isExpectedTypePosition() = position.from is ExpectedTypeConstraintPosition<*> || position.from is DelegatedPropertyConstraintPosition<*> -fun NewConstraintError.transformToWarning() = NewConstraintError(lowerType, upperType, position, isWarning = true) +fun NewConstraintError.transformToWarning() = NewConstraintWarning(lowerType, upperType, position) diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt index c6c700b502d..637b275589b 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt @@ -386,7 +386,7 @@ class NewConstraintSystemImpl( } val constraintErrors = constraintSystem.errors.filterIsInstance() // Don't report warning if an error on the same call has already been reported - if (constraintErrors.isEmpty() || constraintErrors.all { it.isWarning }) { + if (constraintErrors.isEmpty()) { errorsByMissedConstraints.forEach { constraintSystem.addError(it.transformToWarning()) } diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallDiagnostics.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallDiagnostics.kt index 44fb70366e1..7afe3603911 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallDiagnostics.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallDiagnostics.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.resolve.calls.components.CallableReferenceCandidate import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintSystemError -import org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintError +import org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintWarning import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability.* import org.jetbrains.kotlin.types.TypeConstructor @@ -282,4 +282,4 @@ fun ConstraintSystemError.asDiagnostic(): KotlinConstraintSystemDiagnostic = Kot fun Collection.asDiagnostics(): List = map(ConstraintSystemError::asDiagnostic) fun List.filterErrorDiagnostics() = - filter { it !is KotlinConstraintSystemDiagnostic || (it.error as? NewConstraintError)?.isWarning != true } \ No newline at end of file + filter { it !is KotlinConstraintSystemDiagnostic || it.error !is NewConstraintWarning } diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt index 7654fa45526..71479bdc080 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/ResolutionAtoms.kt @@ -248,10 +248,13 @@ sealed class CallResolutionResult( fun completedDiagnostic(substitutor: NewTypeSubstitutor): List { return diagnostics.map { val error = it.constraintSystemError ?: return@map it - if (error !is NewConstraintError) return@map it + if (error !is NewConstraintMismatch) return@map it val lowerType = error.lowerType.safeAs()?.unwrap() ?: return@map it val newLowerType = substitutor.safeSubstitute(lowerType.unCapture()) - NewConstraintError(newLowerType, error.upperType, error.position, error.isWarning).asDiagnostic() + when (error) { + is NewConstraintError -> NewConstraintError(newLowerType, error.upperType, error.position).asDiagnostic() + is NewConstraintWarning -> NewConstraintWarning(newLowerType, error.upperType, error.position).asDiagnostic() + } } } diff --git a/compiler/testData/codegen/box/inference/kt42042.kt b/compiler/testData/codegen/box/inference/kt42042.kt index e36882a8a11..9d612f9f325 100644 --- a/compiler/testData/codegen/box/inference/kt42042.kt +++ b/compiler/testData/codegen/box/inference/kt42042.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR - sealed class Subtype { abstract fun cast(value: A1): B1 class Trivial : Subtype() { diff --git a/compiler/testData/codegen/box/inference/kt47316.kt b/compiler/testData/codegen/box/inference/kt47316.kt new file mode 100644 index 00000000000..72514086857 --- /dev/null +++ b/compiler/testData/codegen/box/inference/kt47316.kt @@ -0,0 +1,39 @@ +// TARGET_BACKEND: JVM +// IGNORE_BACKEND_FIR: JVM_IR + +// FILE: GoBuildingRunningState.java +public abstract class GoBuildingRunningState>> implements RunProfileState { + public String getBuildingWorkingDirectory() { + return ""; + } +} + +// FILE: GoBuildingRunConfiguration.java +public abstract class GoBuildingRunConfiguration>> { } + +// FILE: RunProfileState.java +public interface RunProfileState { +} + +// FILE: Test.java +import org.jetbrains.annotations.Nullable; + +public class Test { + @Nullable + public RunProfileState getState() { + return null; + } +} + +// FILE: main.kt +fun String.asFsdAddress(): String { + return "" +} + +fun box(): String { + val state = Test().state + if (state is GoBuildingRunningState<*>) { + state.buildingWorkingDirectory.asFsdAddress() + } + return "OK" +} diff --git a/compiler/testData/codegen/box/inference/violatingUpperBoundForSelfType.kt b/compiler/testData/codegen/box/inference/violatingUpperBoundForSelfType.kt index 7de24b7d656..1dda58502db 100644 --- a/compiler/testData/codegen/box/inference/violatingUpperBoundForSelfType.kt +++ b/compiler/testData/codegen/box/inference/violatingUpperBoundForSelfType.kt @@ -1,7 +1,6 @@ // TARGET_BACKEND: JVM // WITH_RUNTIME // !DIAGNOSTICS: -UNUSED_PARAMETER -CAST_NEVER_SUCCEEDS -// IGNORE_BACKEND_FIR: JVM_IR fun > createMap(enumClass: Class) {} diff --git a/compiler/testData/diagnostics/tests/inference/kt47316.fir.fail b/compiler/testData/diagnostics/tests/inference/kt47316.fir.fail new file mode 100644 index 00000000000..1761a44792b --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/kt47316.fir.fail @@ -0,0 +1,205 @@ +Fir is not initialized for FirRegularClassSymbol GoBuildingRunConfiguration +java.lang.IllegalStateException: Fir is not initialized for FirRegularClassSymbol GoBuildingRunConfiguration + at org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol.getFir(AbstractFirBasedSymbol.kt:16) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeForFlexibleBound(JavaUtils.kt:408) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeForFlexibleBound$default(JavaUtils.kt:363) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement(JavaUtils.kt:243) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement$default(JavaUtils.kt:235) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement(JavaUtils.kt:146) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement$default(JavaUtils.kt:137) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeProjectionWithoutEnhancement(JavaUtils.kt:613) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeForFlexibleBound(JavaUtils.kt:413) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeForFlexibleBound$default(JavaUtils.kt:363) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement(JavaUtils.kt:243) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement$default(JavaUtils.kt:235) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toFirResolvedTypeRef(JavaUtils.kt:129) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.addBounds(JavaSymbolProvider.kt:121) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.toFirTypeParameter(JavaSymbolProvider.kt:112) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.convertTypeParameters(JavaSymbolProvider.kt:136) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.createFirJavaClass(JavaSymbolProvider.kt:253) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.convertJavaClassToFir(JavaSymbolProvider.kt:202) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.access$convertJavaClassToFir(JavaSymbolProvider.kt:46) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider$classCache$2.invoke(JavaSymbolProvider.kt:61) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider$classCache$2.invoke(JavaSymbolProvider.kt:59) + at org.jetbrains.kotlin.fir.caches.FirThreadUnsafeCacheWithPostCompute.getValue(FirThreadUnsafeCachesFactory.kt:47) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getFirJavaClass(JavaSymbolProvider.kt:150) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getFirJavaClass$default(JavaSymbolProvider.kt:148) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getClassLikeSymbolByFqName(JavaSymbolProvider.kt:142) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getClassLikeSymbolByFqName(JavaSymbolProvider.kt:46) + at org.jetbrains.kotlin.fir.resolve.providers.impl.FirCompositeSymbolProvider.getClassLikeSymbolByFqName(FirCompositeSymbolProvider.kt:51) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeForFlexibleBound(JavaUtils.kt:393) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeForFlexibleBound$default(JavaUtils.kt:363) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement(JavaUtils.kt:243) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toConeKotlinTypeWithoutEnhancement$default(JavaUtils.kt:235) + at org.jetbrains.kotlin.fir.java.JavaUtilsKt.toFirResolvedTypeRef(JavaUtils.kt:129) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.addBounds(JavaSymbolProvider.kt:121) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.toFirTypeParameter(JavaSymbolProvider.kt:112) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.convertTypeParameters(JavaSymbolProvider.kt:136) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.createFirJavaClass(JavaSymbolProvider.kt:253) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.convertJavaClassToFir(JavaSymbolProvider.kt:202) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.access$convertJavaClassToFir(JavaSymbolProvider.kt:46) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider$classCache$2.invoke(JavaSymbolProvider.kt:61) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider$classCache$2.invoke(JavaSymbolProvider.kt:59) + at org.jetbrains.kotlin.fir.caches.FirThreadUnsafeCacheWithPostCompute.getValue(FirThreadUnsafeCachesFactory.kt:47) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getFirJavaClass(JavaSymbolProvider.kt:150) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getFirJavaClass$default(JavaSymbolProvider.kt:148) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getClassLikeSymbolByFqName(JavaSymbolProvider.kt:142) + at org.jetbrains.kotlin.fir.java.JavaSymbolProvider.getClassLikeSymbolByFqName(JavaSymbolProvider.kt:46) + at org.jetbrains.kotlin.fir.resolve.providers.impl.FirCompositeSymbolProvider.getClassLikeSymbolByFqName(FirCompositeSymbolProvider.kt:51) + at org.jetbrains.kotlin.fir.scopes.impl.FirPackageMemberScope.processClassifiersByNameWithSubstitution(FirPackageMemberScope.kt:36) + at org.jetbrains.kotlin.fir.scopes.FirCompositeScope.processClassifiersByNameWithSubstitution(FirCompositeScope.kt:21) + at org.jetbrains.kotlin.fir.resolve.providers.impl.FirTypeResolverImpl.resolveToSymbol(FirTypeResolverImpl.kt:63) + at org.jetbrains.kotlin.fir.resolve.providers.impl.FirTypeResolverImpl.resolveType(FirTypeResolverImpl.kt:180) + at org.jetbrains.kotlin.fir.resolve.transformers.FirSpecificTypeResolverTransformer.transformTypeRef(FirSpecificTypeResolverTransformer.kt:59) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformTypeRef(FirBodyResolveTransformer.kt:68) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformTypeRef(FirBodyResolveTransformer.kt:27) + at org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer.transformTypeRefWithNullability(FirDefaultTransformer.kt:28) + at org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer.transformUserTypeRef(FirDefaultTransformer.kt:40) + at org.jetbrains.kotlin.fir.types.FirUserTypeRef.transform(FirUserTypeRef.kt:29) + at org.jetbrains.kotlin.fir.expressions.impl.FirTypeOperatorCallImpl.transformConversionTypeRef(FirTypeOperatorCallImpl.kt:50) + at org.jetbrains.kotlin.fir.expressions.impl.FirTypeOperatorCallImpl.transformConversionTypeRef(FirTypeOperatorCallImpl.kt:22) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformTypeOperatorCall(FirExpressionsResolveTransformer.kt:578) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformTypeOperatorCall(FirBodyResolveTransformer.kt:143) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformTypeOperatorCall(FirBodyResolveTransformer.kt:27) + at org.jetbrains.kotlin.fir.expressions.FirTypeOperatorCall.transform(FirTypeOperatorCall.kt:30) + at org.jetbrains.kotlin.fir.expressions.impl.FirWhenBranchImpl.transformCondition(FirWhenBranchImpl.kt:37) + at org.jetbrains.kotlin.fir.expressions.impl.FirWhenBranchImpl.transformCondition(FirWhenBranchImpl.kt:19) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirControlFlowStatementsResolveTransformer.transformWhenBranch(FirControlFlowStatementsResolveTransformer.kt:113) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformWhenBranch(FirBodyResolveTransformer.kt:332) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformWhenBranch(FirBodyResolveTransformer.kt:27) + at org.jetbrains.kotlin.fir.expressions.FirWhenBranch.transform(FirWhenBranch.kt:27) + at org.jetbrains.kotlin.fir.visitors.FirTransformerUtilKt.transformInplace(FirTransformerUtil.kt:19) + at org.jetbrains.kotlin.fir.expressions.impl.FirWhenExpressionImpl.transformBranches(FirWhenExpressionImpl.kt:77) + at org.jetbrains.kotlin.fir.expressions.impl.FirWhenExpressionImpl.transformBranches(FirWhenExpressionImpl.kt:24) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirControlFlowStatementsResolveTransformer$transformWhenExpression$2.invoke(FirControlFlowStatementsResolveTransformer.kt:70) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirControlFlowStatementsResolveTransformer$transformWhenExpression$2.invoke(FirControlFlowStatementsResolveTransformer.kt:63) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext.withWhenExpression(BodyResolveContext.kt:714) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirControlFlowStatementsResolveTransformer.transformWhenExpression(FirControlFlowStatementsResolveTransformer.kt:63) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformWhenExpression(FirBodyResolveTransformer.kt:328) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformWhenExpression(FirBodyResolveTransformer.kt:27) + at org.jetbrains.kotlin.fir.expressions.FirWhenExpression.transform(FirWhenExpression.kt:35) + at org.jetbrains.kotlin.fir.expressions.FirExpressionUtilKt.transformStatementsIndexed(FirExpressionUtil.kt:140) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformBlockInCurrentScope$resolve(FirExpressionsResolveTransformer.kt:323) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformBlock(FirExpressionsResolveTransformer.kt:314) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformBlock(FirBodyResolveTransformer.kt:122) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformBlock(FirBodyResolveTransformer.kt:27) + at org.jetbrains.kotlin.fir.expressions.FirBlock.transform(FirBlock.kt:28) + at org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl.transformBody(FirSimpleFunctionImpl.kt:99) + at org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl.transformChildren(FirSimpleFunctionImpl.kt:75) + at org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl.transformChildren(FirSimpleFunctionImpl.kt:33) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformElement(FirBodyResolveTransformer.kt:60) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformDeclarationContent(FirBodyResolveTransformer.kt:244) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformDeclarationContent(FirDeclarationsResolveTransformer.kt:69) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformFunction(FirDeclarationsResolveTransformer.kt:527) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformFunctionWithGivenSignature(FirDeclarationsResolveTransformer.kt:490) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.access$transformFunctionWithGivenSignature(FirDeclarationsResolveTransformer.kt:41) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer$transformSimpleFunction$1$1.invoke(FirDeclarationsResolveTransformer.kt:479) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer$transformSimpleFunction$1$1.invoke(FirDeclarationsResolveTransformer.kt:477) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext.forFunctionBody(BodyResolveContext.kt:896) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformSimpleFunction(FirDeclarationsResolveTransformer.kt:477) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformSimpleFunction(FirBodyResolveTransformer.kt:281) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformSimpleFunction(FirBodyResolveTransformer.kt:27) + at org.jetbrains.kotlin.fir.declarations.FirSimpleFunction.transform(FirSimpleFunction.kt:52) + at org.jetbrains.kotlin.fir.visitors.FirTransformerUtilKt.transformInplace(FirTransformerUtil.kt:19) + at org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl.transformDeclarations(FirFileImpl.kt:61) + at org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl.transformChildren(FirFileImpl.kt:46) + at org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl.transformChildren(FirFileImpl.kt:25) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformElement(FirBodyResolveTransformer.kt:60) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformDeclarationContent(FirBodyResolveTransformer.kt:244) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformFile(FirBodyResolveTransformer.kt:54) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer.transformFile(FirBodyResolveTransformer.kt:27) + at org.jetbrains.kotlin.fir.declarations.FirFile.transform(FirFile.kt:37) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformerAdapter.transformFile(FirBodyResolveTransformerAdapters.kt:37) + at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformerAdapter.transformFile(FirBodyResolveTransformerAdapters.kt:23) + at org.jetbrains.kotlin.fir.declarations.FirFile.transform(FirFile.kt:37) + at org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor.processFile(FirResolveProcessor.kt:29) + at org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor.process(FirTotalResolveProcessor.kt:23) + at org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade.runResolution(FirAnalyzerFacade.kt:69) + at org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade.analyze(FirFrontendFacade.kt:75) + at org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade.analyze(FirFrontendFacade.kt:26) + at org.jetbrains.kotlin.test.model.FrontendFacade.transform(Facades.kt:36) + at org.jetbrains.kotlin.test.model.FrontendFacade.transform(Facades.kt:25) + at org.jetbrains.kotlin.test.TestRunner.processModule(TestRunner.kt:125) + at org.jetbrains.kotlin.test.TestRunner.runTestImpl(TestRunner.kt:66) + at org.jetbrains.kotlin.test.TestRunner.runTest(TestRunner.kt:20) + at org.jetbrains.kotlin.test.TestRunner.runTest$default(TestRunner.kt:18) + at org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest.runTest(AbstractKotlinCompilerTest.kt:80) + at org.jetbrains.kotlin.test.runners.FirOldFrontendDiagnosticsTestGenerated$Tests$Inference.testKt47316(FirOldFrontendDiagnosticsTestGenerated.java:12407) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) + at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) + at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) + at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:185) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:129) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:185) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:129) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:185) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:129) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:185) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:129) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) + at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:185) + at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189) + at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) + at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) + at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) + at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) + diff --git a/compiler/testData/diagnostics/tests/inference/kt47316.fir.kt b/compiler/testData/diagnostics/tests/inference/kt47316.fir.kt new file mode 100644 index 00000000000..c7ac7b3e863 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/kt47316.fir.kt @@ -0,0 +1,36 @@ +// FILE: GoBuildingRunningState.java +public abstract class GoBuildingRunningState>> implements RunProfileState { + public String getBuildingWorkingDirectory() { + return ""; + } +} + +// FILE: GoBuildingRunConfiguration.java +public abstract class GoBuildingRunConfiguration>> { } + +// FILE: RunProfileState.java +public interface RunProfileState { +} + +// FILE: Test.java +import org.jetbrains.annotations.Nullable; + +public class Test { + @Nullable + public RunProfileState getState() { + return null; + } +} + +// FILE: main.kt +fun String.asFsdAddress(): String { + return "" +} + +fun box(): String { + val state = Test().state + if (state is GoBuildingRunningState<*>) { + state.buildingWorkingDirectory.asFsdAddress() + } + return "OK" +} diff --git a/compiler/testData/diagnostics/tests/inference/kt47316.kt b/compiler/testData/diagnostics/tests/inference/kt47316.kt new file mode 100644 index 00000000000..72c88dd57ab --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/kt47316.kt @@ -0,0 +1,36 @@ +// FILE: GoBuildingRunningState.java +public abstract class GoBuildingRunningState>> implements RunProfileState { + public String getBuildingWorkingDirectory() { + return ""; + } +} + +// FILE: GoBuildingRunConfiguration.java +public abstract class GoBuildingRunConfiguration>> { } + +// FILE: RunProfileState.java +public interface RunProfileState { +} + +// FILE: Test.java +import org.jetbrains.annotations.Nullable; + +public class Test { + @Nullable + public RunProfileState getState() { + return null; + } +} + +// FILE: main.kt +fun String.asFsdAddress(): String { + return "" +} + +fun box(): String { + val state = Test().state + if (state is GoBuildingRunningState<*>) { + state.buildingWorkingDirectory.asFsdAddress() + } + return "OK" +} diff --git a/compiler/testData/diagnostics/tests/inference/kt47316.txt b/compiler/testData/diagnostics/tests/inference/kt47316.txt new file mode 100644 index 00000000000..b6391773e8c --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/kt47316.txt @@ -0,0 +1,33 @@ +package + +public fun box(): kotlin.String +public fun kotlin.String.asFsdAddress(): kotlin.String + +public abstract class GoBuildingRunConfiguration!>!> { + public constructor GoBuildingRunConfiguration!>!>() + 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 +} + +public abstract class GoBuildingRunningState!>!> : RunProfileState { + public constructor GoBuildingRunningState!>!>() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open fun getBuildingWorkingDirectory(): kotlin.String! + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public interface RunProfileState { + 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 +} + +public open class Test { + public constructor Test() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + @org.jetbrains.annotations.Nullable public open fun getState(): RunProfileState? + 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/inference/violatingUpperBoundForSelfType.fir.kt b/compiler/testData/diagnostics/tests/inference/violatingUpperBoundForSelfType.fir.kt index a4276b44e44..6ecf86523cf 100644 --- a/compiler/testData/diagnostics/tests/inference/violatingUpperBoundForSelfType.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/violatingUpperBoundForSelfType.fir.kt @@ -6,5 +6,5 @@ fun > createMap(enumClass: Class) {} fun reproduce() { val enumClass: Class> = "any" as Class> - createMap(enumClass) + createMap(enumClass) } diff --git a/compiler/testData/diagnostics/tests/typeParameters/kt42042.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/kt42042.fir.kt index 2bb834844d9..cc6fee6ab05 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/kt42042.fir.kt +++ b/compiler/testData/diagnostics/tests/typeParameters/kt42042.fir.kt @@ -6,6 +6,6 @@ sealed class Subtype { } fun unsafeCast(value: A): B { - val proof: Subtype = Subtype.Trivial() + val proof: Subtype = Subtype.Trivial() return proof.cast(value) } 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 29ce586434b..2d25d7ef6fd 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 @@ -12491,6 +12491,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inference/kt46515.kt"); } + @Test + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/kt47316.kt"); + } + @Test @TestMetadata("kt6175.kt") public void testKt6175() throws Exception { 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 14d80bcc966..5a3c1c81c00 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 @@ -17588,6 +17588,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inference/kt42130.kt"); } + @Test + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/codegen/box/inference/kt47316.kt"); + } + @Test @TestMetadata("lambdaWithStarReturn.kt") public void testLambdaWithStarReturn() 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 40834e14d43..6db0240ee3d 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 @@ -17618,6 +17618,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inference/kt42130.kt"); } + @Test + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/codegen/box/inference/kt47316.kt"); + } + @Test @TestMetadata("lambdaWithStarReturn.kt") public void testLambdaWithStarReturn() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 1da8800af87..3bd66dbc8d3 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -14557,6 +14557,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inference/kt42130.kt"); } + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/codegen/box/inference/kt47316.kt"); + } + @TestMetadata("lambdaWithStarReturn.kt") public void testLambdaWithStarReturn() throws Exception { runTest("compiler/testData/codegen/box/inference/lambdaWithStarReturn.kt"); diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 6db985c6183..df991b4936f 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -12485,6 +12485,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/inference/kt46515.kt"); } + @Test + @TestMetadata("kt47316.kt") + public void testKt47316() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/kt47316.kt"); + } + @Test @TestMetadata("kt6175.kt") public void testKt6175() throws Exception {