FIR: use more specific cone error for unresolved user type ref

replaces diagnostic with <No name> with specific qualifier
This commit is contained in:
Ilya Chernikov
2021-02-17 13:06:31 +01:00
parent 77539fe2db
commit ed78183dbd
10 changed files with 18 additions and 14 deletions
@@ -26,6 +26,10 @@ class ConeUnresolvedSymbolError(val classId: ClassId) : ConeDiagnostic() {
override val reason: String get() = "Symbol not found for $classId"
}
class ConeUnresolvedQualifierError(val qualifier: String) : ConeDiagnostic() {
override val reason: String get() = "Symbol not found for ${qualifier}"
}
class ConeUnresolvedNameError(val name: Name) : ConeDiagnostic() {
override val reason: String get() = "Unresolved name: $name"
}
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeUnexpectedTypeArgumentsError
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedQualifierError
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeWrongNumberOfTypeArgumentsError
import org.jetbrains.kotlin.fir.resolve.getSymbolByLookupTag
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
@@ -98,7 +99,7 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() {
areBareTypesAllowed: Boolean
): ConeKotlinType {
if (symbol == null) {
return ConeKotlinErrorType(ConeSimpleDiagnostic("Symbol not found, for `${typeRef.render()}`", DiagnosticKind.SymbolNotFound))
return ConeKotlinErrorType(ConeUnresolvedQualifierError(typeRef.render()))
}
if (symbol is FirTypeParameterSymbol) {
for (part in typeRef.qualifier) {