From 3edd82b602e7354dd4bc2d4a538997d8ac0f3758 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Mon, 11 Feb 2019 22:39:19 +0300 Subject: [PATCH] FIR: make JavaSymbolProvider return error-type on not found symbols --- .../src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index f0200c11412..9683282e109 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.ConeClassErrorType +import org.jetbrains.kotlin.fir.types.ConeKotlinErrorType import org.jetbrains.kotlin.fir.types.ConeKotlinTypeProjection import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl @@ -89,8 +90,9 @@ class JavaSymbolProvider( private fun JavaClassifierType.toFirResolvedTypeRef(): FirResolvedTypeRef { val coneType = when (val classifier = classifier) { is JavaClass -> { - val symbol = session.service().getClassLikeSymbolByFqName(classifier.classId!!) as ConeClassSymbol - ConeClassTypeImpl(symbol, typeArguments = typeArguments.map { it.toConeProjection() }.toTypedArray()) + val symbol = session.service().getClassLikeSymbolByFqName(classifier.classId!!) as? ConeClassSymbol + if (symbol == null) ConeKotlinErrorType("Symbol not found, for `${classifier.classId}`") + else ConeClassTypeImpl(symbol, typeArguments = typeArguments.map { it.toConeProjection() }.toTypedArray()) } is JavaTypeParameter -> { // TODO: it's unclear how to identify type parameter by the symbol