[FIR] buildErrorExpression for labels with underscored name

Add ConeDiagnosticWithSource, ConeUnderscoreIsReserved, ConeUnderscoreUsageWithoutBackticks diagnostics
This commit is contained in:
Ivan Kochurkin
2021-07-21 20:01:31 +03:00
committed by Space
parent f5d8535dc5
commit b307358f69
9 changed files with 106 additions and 29 deletions
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnosticWithSource
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.calls.Candidate
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
@@ -112,8 +113,8 @@ abstract class ConeUnmatchedTypeArgumentsError(val desiredCount: Int, val type:
class ConeWrongNumberOfTypeArgumentsError(
val desiredCount: Int,
val symbol: FirRegularClassSymbol,
val source: FirSourceElement?
) : ConeDiagnostic() {
source: FirSourceElement
) : ConeDiagnosticWithSource(source) {
override val reason: String get() = "Wrong number of type arguments"
}
@@ -301,13 +301,16 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() {
(parameterClass != null && parameterClass.classId.relativeClassName.parent().isRoot)
|| outerClass != null
) {
return ConeClassErrorType(
ConeWrongNumberOfTypeArgumentsError(
actualTypeParametersCount,
parameterClass?.symbol ?: symbol,
getTypeArgumentsOrNameSource(userTypeRef, qualifierPartIndex)
val source = getTypeArgumentsOrNameSource(userTypeRef, qualifierPartIndex)
if (source != null) {
return ConeClassErrorType(
ConeWrongNumberOfTypeArgumentsError(
actualTypeParametersCount,
parameterClass?.symbol ?: symbol,
source
)
)
)
}
}
}