diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/FirReferenceResolveTestGenerated.java b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/FirReferenceResolveTestGenerated.java index 41ae5fa3fbd..7cfd514a251 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/FirReferenceResolveTestGenerated.java +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/FirReferenceResolveTestGenerated.java @@ -429,6 +429,11 @@ public class FirReferenceResolveTestGenerated extends AbstractFirReferenceResolv runTest("idea/testData/resolve/references/WrongNumberOfTypeArguments2.kt"); } + @TestMetadata("WrongNumberOfTypeArguments3.kt") + public void testWrongNumberOfTypeArguments3() throws Exception { + runTest("idea/testData/resolve/references/WrongNumberOfTypeArguments3.kt"); + } + @TestMetadata("WrongNumberOfTypeArgumentsInSupertype.kt") public void testWrongNumberOfTypeArgumentsInSupertype() throws Exception { runTest("idea/testData/resolve/references/WrongNumberOfTypeArgumentsInSupertype.kt"); diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt index 85621f74508..9c207087f4f 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt @@ -16,14 +16,17 @@ import org.jetbrains.kotlin.fir.resolve.calls.SyntheticPropertySymbol import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeOperatorAmbiguityError +import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeWrongNumberOfTypeArgumentsError import org.jetbrains.kotlin.fir.resolve.firSymbolProvider import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType +import org.jetbrains.kotlin.fir.types.FirErrorTypeRef import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.classId -import org.jetbrains.kotlin.idea.fir.* +import org.jetbrains.kotlin.idea.fir.getCandidateSymbols +import org.jetbrains.kotlin.idea.fir.isImplicitFunctionCall import org.jetbrains.kotlin.idea.fir.low.level.api.api.getOrBuildFir import org.jetbrains.kotlin.idea.fir.low.level.api.api.getOrBuildFirSafe import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession @@ -42,8 +45,15 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal object FirReferenceResolveHelper { fun FirResolvedTypeRef.toTargetSymbol(session: FirSession, symbolBuilder: KtSymbolByFirBuilder): KtSymbol? { - val type = type as? ConeLookupTagBasedType ?: return null - val symbol = type.lookupTag.toSymbol(session) as? AbstractFirBasedSymbol<*> + + val type = type as? ConeLookupTagBasedType + val resolvedSymbol = type?.lookupTag?.toSymbol(session) as? AbstractFirBasedSymbol<*> + + val symbol = resolvedSymbol ?: run { + val diagnostic = (this as? FirErrorTypeRef)?.diagnostic + (diagnostic as? ConeWrongNumberOfTypeArgumentsError)?.type + } + return symbol?.fir?.buildSymbol(symbolBuilder) } diff --git a/idea/testData/resolve/references/WrongNumberOfTypeArguments3.kt b/idea/testData/resolve/references/WrongNumberOfTypeArguments3.kt new file mode 100644 index 00000000000..040d61195d8 --- /dev/null +++ b/idea/testData/resolve/references/WrongNumberOfTypeArguments3.kt @@ -0,0 +1,9 @@ +package foo + +class CC +class DD + +val v1 = DDC> + +// REF1: (foo).DD +// REF2: (foo).CC diff --git a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java index 0ad7563c22b..b5fcd41ad55 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java @@ -429,6 +429,11 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest runTest("idea/testData/resolve/references/WrongNumberOfTypeArguments2.kt"); } + @TestMetadata("WrongNumberOfTypeArguments3.kt") + public void testWrongNumberOfTypeArguments3() throws Exception { + runTest("idea/testData/resolve/references/WrongNumberOfTypeArguments3.kt"); + } + @TestMetadata("WrongNumberOfTypeArgumentsInSupertype.kt") public void testWrongNumberOfTypeArgumentsInSupertype() throws Exception { runTest("idea/testData/resolve/references/WrongNumberOfTypeArgumentsInSupertype.kt");