[FIR] Fix Disappeared NULLABLE_TYPE_IN_CLASS_LITERAL_LHS
^KT-59970 Fixed
This commit is contained in:
committed by
Space Team
parent
1c395ef0df
commit
69d2b94a68
+4
-4
@@ -50,10 +50,11 @@ object FirClassLiteralChecker : FirGetClassCallChecker() {
|
||||
//
|
||||
// Only the 2nd example is valid, and we want to check if token type QUEST doesn't exist at the same level as COLONCOLON.
|
||||
val markedNullable = source.getChild(QUEST, depth = 1) != null
|
||||
val resolvedFullyExpandedType = argument.resolvedType.fullyExpandedType(context.session)
|
||||
val isNullable = markedNullable ||
|
||||
(argument as? FirResolvedQualifier)?.isNullableLHSForCallableReference == true ||
|
||||
argument.resolvedType.isMarkedNullable ||
|
||||
argument.resolvedType.isNullableTypeParameter(context.session.typeContext)
|
||||
resolvedFullyExpandedType.isMarkedNullable ||
|
||||
resolvedFullyExpandedType.isNullableTypeParameter(context.session.typeContext)
|
||||
if (isNullable) {
|
||||
if (argument.canBeDoubleColonLHSAsType) {
|
||||
reporter.reportOn(source, FirErrors.NULLABLE_TYPE_IN_CLASS_LITERAL_LHS, context)
|
||||
@@ -77,8 +78,7 @@ object FirClassLiteralChecker : FirGetClassCallChecker() {
|
||||
|
||||
if (argument !is FirResolvedQualifier) return
|
||||
// TODO, KT-59835: differentiate RESERVED_SYNTAX_IN_CALLABLE_REFERENCE_LHS
|
||||
if (argument.typeArguments.isNotEmpty() && !argument.resolvedType.fullyExpandedType(context.session)
|
||||
.isAllowedInClassLiteral(context)) {
|
||||
if (argument.typeArguments.isNotEmpty() && !resolvedFullyExpandedType.isAllowedInClassLiteral(context)) {
|
||||
val symbol = argument.symbol
|
||||
symbol?.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
@OptIn(SymbolInternals::class)
|
||||
|
||||
@@ -2,11 +2,11 @@ typealias TString = String
|
||||
fun f1() = TString::class
|
||||
|
||||
typealias TNullableString = String?
|
||||
fun f2() = TNullableString::class
|
||||
fun f2() = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>TNullableString::class<!>
|
||||
|
||||
typealias TNullableTString = TString?
|
||||
typealias TTNullableTString = TNullableTString
|
||||
fun f3() = TTNullableTString::class
|
||||
fun f3() = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>TTNullableTString::class<!>
|
||||
|
||||
inline fun <reified T> f4(b: Boolean): Any {
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias X = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>T<!><!>
|
||||
|
||||
Reference in New Issue
Block a user