From 32e941cb5370f2d8da5e1ac94880d9a434de471a Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Fri, 12 Apr 2019 21:32:36 +0300 Subject: [PATCH] FIR: keep names for error references --- .../fir/resolve/transformers/FirBodyResolveTransformer.kt | 6 ++++-- .../fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt | 7 ++++++- .../kotlin/fir/references/FirErrorNamedReference.kt | 5 ++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index 84e8c21942b..6d27085c496 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -377,7 +377,8 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn FirErrorNamedReference( namedReference.session, namedReference.psi, - "Inapplicable($applicability): ${candidates.map { describeSymbol(it.symbol) }}" + "Inapplicable($applicability): ${candidates.map { describeSymbol(it.symbol) }}", + namedReference.name ) } candidates.size == 1 -> FirNamedReferenceWithCandidate( @@ -385,7 +386,8 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn name, candidates.single() ) else -> FirErrorNamedReference( - namedReference.session, namedReference.psi, "Ambiguity: $name, ${candidates.map { describeSymbol(it.symbol) }}" + namedReference.session, namedReference.psi, "Ambiguity: $name, ${candidates.map { describeSymbol(it.symbol) }}", + namedReference.name ) } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index 1eef6487654..0469d8fb01c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression +import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol @@ -761,7 +762,11 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { } override fun visitNamedReference(namedReference: FirNamedReference) { - print("${namedReference.name}#") + if (namedReference is FirErrorNamedReference) { + print("<${namedReference.errorReason}>#") + } else { + print("${namedReference.name}#") + } } override fun visitResolvedCallableReference(resolvedCallableReference: FirResolvedCallableReference) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt index a4328b415d9..43561e9fe73 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/references/FirErrorNamedReference.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.name.Name class FirErrorNamedReference( session: FirSession, psi: PsiElement?, - val errorReason: String -) : FirAbstractElement(session, psi), FirNamedReference { + val errorReason: String, override val name: Name = Name.special("<$errorReason>") -} \ No newline at end of file +) : FirAbstractElement(session, psi), FirNamedReference \ No newline at end of file