From 8d27af5b0d252ef5b2e02c8030204761aad3280d Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Thu, 21 Sep 2023 12:07:29 +0200 Subject: [PATCH] [FIR] Fix reporting of TYPE_ARGUMENTS_NOT_ALLOWED instead of WRONG_NUMBER_OF_TYPE_ARGUMENTS --- .../fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt | 2 ++ .../kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt | 3 +-- .../kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt | 4 ++++ .../generics/innerClasses/qualifiedTypesResolution.fir.kt | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt index 0ae30bc0395..1c06855a874 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt @@ -123,6 +123,8 @@ private fun ConeDiagnostic.toKtDiagnostic( is ConeIllegalAnnotationError -> FirErrors.NOT_AN_ANNOTATION_CLASS.createOn(source, this.name.asString()) is ConeWrongNumberOfTypeArgumentsError -> FirErrors.WRONG_NUMBER_OF_TYPE_ARGUMENTS.createOn(this.source, this.desiredCount, this.symbol) + is ConeTypeArgumentsNotAllowedError -> + FirErrors.TYPE_ARGUMENTS_NOT_ALLOWED.createOn(this.source) is ConeOuterClassArgumentsRequired -> FirErrors.OUTER_CLASS_ARGUMENTS_REQUIRED.createOn(callOrAssignmentSource ?: source, this.symbol) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt index 8da90c1e025..e9ac0acedcf 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt @@ -286,9 +286,8 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() { if (currentDeclaration == null) { // It's a package name - // TODO: report TYPE_ARGUMENTS_NOT_ALLOWED instead of WRONG_NUMBER_OF_TYPE_ARGUMENTS if (qualifierPartArgsCount > 0) { - return createWrongNumberOfTypeArgumentsError(0, qualifierPartIndex, symbol, typeRef) + return ConeErrorType(ConeTypeArgumentsNotAllowedError(qualifierPart.typeArgumentList.source!!)) } break } diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt index 139db9f9489..938bcd79659 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt @@ -264,6 +264,10 @@ class ConeWrongNumberOfTypeArgumentsError( override val reason: String get() = "Wrong number of type arguments" } +class ConeTypeArgumentsNotAllowedError(source: KtSourceElement) : ConeDiagnosticWithSource(source) { + override val reason: String get() = "Type parameters cannot be parameterized with type arguments" +} + class ConeNoTypeArgumentsOnRhsError( override val desiredCount: Int, override val symbol: FirClassLikeSymbol<*> diff --git a/compiler/testData/diagnostics/tests/generics/innerClasses/qualifiedTypesResolution.fir.kt b/compiler/testData/diagnostics/tests/generics/innerClasses/qualifiedTypesResolution.fir.kt index 7ffa632526e..7b076ffbec5 100644 --- a/compiler/testData/diagnostics/tests/generics/innerClasses/qualifiedTypesResolution.fir.kt +++ b/compiler/testData/diagnostics/tests/generics/innerClasses/qualifiedTypesResolution.fir.kt @@ -48,4 +48,4 @@ fun error4(): Outer.Nested.Inner4 fun error5(): Outer.Obj.Nested2.Inner5 = null!! fun error6(): Outer.Obj.Nested2.Inner5 = null!! -fun error7(): test.Outer.Obj.Nested2.Inner5 = null!! +fun error7(): test.Outer.Obj.Nested2.Inner5 = null!!