From 6a6695a173b49ef0933c11749639779fcfadfc94 Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Mon, 20 Sep 2021 16:23:57 +0300 Subject: [PATCH] Store `SimpleTypeArgumentImpl` type projection instead of type reference for better handling star projected type arguments --- .../resolve/calls/DiagnosticReporterByTrackingStrategy.kt | 2 +- .../jetbrains/kotlin/resolve/calls/tower/NewCallArguments.kt | 2 +- .../org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 62b6ff9f30f..d3c4cf45398 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt @@ -404,7 +404,7 @@ class DiagnosticReporterByTrackingStrategy( } (position as? ExplicitTypeParameterConstraintPositionImpl)?.let { - val typeArgumentReference = (it.typeArgument as SimpleTypeArgumentImpl).typeReference + val typeArgumentReference = (it.typeArgument as SimpleTypeArgumentImpl).typeProjection.typeReference ?: return@let val diagnosticFactory = if (isWarning) UPPER_BOUND_VIOLATED_WARNING else UPPER_BOUND_VIOLATED report(diagnosticFactory.on(typeArgumentReference, error.upperKotlinType, error.lowerKotlinType)) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewCallArguments.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewCallArguments.kt index 8f346a822ae..49e3256b72a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewCallArguments.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewCallArguments.kt @@ -31,7 +31,7 @@ import org.jetbrains.kotlin.types.expressions.KotlinTypeInfo import org.jetbrains.kotlin.utils.addToStdlib.safeAs class SimpleTypeArgumentImpl( - val typeReference: KtTypeReference, + val typeProjection: KtTypeProjection, override val type: UnwrappedType ) : SimpleTypeArgument diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index 616b1a7604e..27ff742e8af 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -694,7 +694,7 @@ class PSICallResolver( } ModifierCheckerCore.check(projection, context.trace, null, languageVersionSettings) - resolveType(context, projection.typeReference, typeResolver)?.let { SimpleTypeArgumentImpl(projection.typeReference!!, it) } + resolveType(context, projection.typeReference, typeResolver)?.let { SimpleTypeArgumentImpl(projection, it) } ?: TypeArgumentPlaceholder }