[FIR] Replace FirExpression.typeRef.coneType (and variants) with FirExpression.coneType
#KT-59855
This commit is contained in:
committed by
Space Team
parent
1472b21993
commit
9ec814b7ad
+7
-5
@@ -7,16 +7,18 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirGetClassCallChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.native.FirNativeErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.native.checkers.forwardDeclarationKindOrNull
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||
import org.jetbrains.kotlin.fir.expressions.arguments
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
|
||||
|
||||
|
||||
object FirNativeForwardDeclarationGetClassCallChecker : FirGetClassCallChecker() {
|
||||
override fun check(expression: FirGetClassCall, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
val declarationToCheck = expression.argument.typeRef.toRegularClassSymbol(context.session) ?: return
|
||||
val declarationToCheck = expression.argument.coneType.toRegularClassSymbol(context.session) ?: return
|
||||
|
||||
if (expression.arguments.firstOrNull() !is FirResolvedQualifier) {
|
||||
return
|
||||
@@ -26,9 +28,9 @@ object FirNativeForwardDeclarationGetClassCallChecker : FirGetClassCallChecker()
|
||||
reporter.reportOn(
|
||||
expression.source,
|
||||
FirNativeErrors.FORWARD_DECLARATION_AS_CLASS_LITERAL,
|
||||
expression.argument.typeRef.coneType,
|
||||
expression.argument.coneType,
|
||||
context,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-7
@@ -7,14 +7,17 @@ package org.jetbrains.kotlin.fir.analysis.native.checkers
|
||||
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.*
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirTypeOperatorCallChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.native.FirNativeErrors
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirTypeOperatorCall
|
||||
import org.jetbrains.kotlin.fir.expressions.argument
|
||||
import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes
|
||||
import org.jetbrains.kotlin.fir.types.classId
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
|
||||
|
||||
object FirNativeForwardDeclarationTypeOperatorChecker : FirTypeOperatorCallChecker() {
|
||||
override fun check(expression: FirTypeOperatorCall, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
@@ -24,8 +27,7 @@ object FirNativeForwardDeclarationTypeOperatorChecker : FirTypeOperatorCallCheck
|
||||
|
||||
when (expression.operation) {
|
||||
FirOperation.AS, FirOperation.SAFE_AS -> {
|
||||
val sourceTypeRef = expression.argument.typeRef
|
||||
val sourceClass = sourceTypeRef.toRegularClassSymbol(context.session)
|
||||
val sourceClass = expression.argument.coneType.toRegularClassSymbol(context.session)
|
||||
// It can make sense to avoid warning if sourceClass is subclass of class with such property,
|
||||
// but for the sake of simplicity, we don't do it now.
|
||||
if (sourceClass != null && sourceClass.classKind == fwdKind.classKind && sourceClass.name == declarationToCheck.name) {
|
||||
@@ -42,8 +44,8 @@ object FirNativeForwardDeclarationTypeOperatorChecker : FirTypeOperatorCallCheck
|
||||
reporter.reportOn(
|
||||
expression.source,
|
||||
FirNativeErrors.UNCHECKED_CAST_TO_FORWARD_DECLARATION,
|
||||
expression.argument.typeRef.coneType,
|
||||
sourceTypeRef.coneType,
|
||||
expression.argument.coneType,
|
||||
expression.argument.coneType,
|
||||
context,
|
||||
)
|
||||
}
|
||||
@@ -56,4 +58,4 @@ object FirNativeForwardDeclarationTypeOperatorChecker : FirTypeOperatorCallCheck
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.classId
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeOrNull
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -174,9 +175,7 @@ object FirNativeThrowsChecker : FirBasicDeclarationChecker() {
|
||||
val arguments = argumentList.arguments
|
||||
return (arguments.firstOrNull() as? FirVarargArgumentsExpression)?.arguments
|
||||
?.filterIsInstance<FirGetClassCall>()
|
||||
?.map { it.arguments.first().typeRef }
|
||||
?.filterIsInstance<FirResolvedTypeRef>()
|
||||
?.map { it.type.fullyExpandedType(session) }
|
||||
?.mapNotNull { it.arguments.first().coneTypeOrNull?.fullyExpandedType(session) }
|
||||
?: emptyList()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user