[FIR] Properly support smartcasts on stable when subjects in when conditions
^KT-49860 Fixed
This commit is contained in:
committed by
teamcityserver
parent
20425fb458
commit
330574cab6
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionWithSmartcastImpl
|
||||
|
||||
class FirExpressionWithSmartcastBuilder : FirWrappedExpressionWithSmartcastBuilder<FirQualifiedAccessExpression>() {
|
||||
fun build(): FirExpressionWithSmartcast {
|
||||
override fun build(): FirExpressionWithSmartcast {
|
||||
return FirExpressionWithSmartcastImpl(originalExpression, smartcastType, typesFromSmartCast, smartcastStability)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionWithSmartcastToNullImpl
|
||||
|
||||
class FirExpressionWithSmartcastToNullBuilder : FirWrappedExpressionWithSmartcastToNullBuilder<FirQualifiedAccessExpression>() {
|
||||
fun build(): FirExpressionWithSmartcastToNull {
|
||||
override fun build(): FirExpressionWithSmartcastToNull {
|
||||
return FirExpressionWithSmartcastToNullImpl(
|
||||
originalExpression,
|
||||
smartcastType,
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcas
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirWhenSubjectExpressionWithSmartcastImpl
|
||||
|
||||
class FirWhenSubjectExpressionWithSmartcastBuilder : FirWrappedExpressionWithSmartcastBuilder<FirWhenSubjectExpression>() {
|
||||
fun build(): FirWhenSubjectExpressionWithSmartcast {
|
||||
override fun build(): FirWhenSubjectExpressionWithSmartcast {
|
||||
return FirWhenSubjectExpressionWithSmartcastImpl(originalExpression, smartcastType, typesFromSmartCast, smartcastStability)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcas
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirWhenSubjectExpressionWithSmartcastToNullImpl
|
||||
|
||||
class FirWhenSubjectExpressionWithSmartcastToNullBuilder : FirWrappedExpressionWithSmartcastToNullBuilder<FirWhenSubjectExpression>() {
|
||||
fun build(): FirWhenSubjectExpressionWithSmartcastToNull {
|
||||
override fun build(): FirWhenSubjectExpressionWithSmartcastToNull {
|
||||
return FirWhenSubjectExpressionWithSmartcastToNullImpl(
|
||||
originalExpression,
|
||||
smartcastType,
|
||||
|
||||
+2
@@ -15,6 +15,8 @@ abstract class FirWrappedExpressionWithSmartcastBuilder<E : FirExpression> {
|
||||
lateinit var smartcastType: FirTypeRef
|
||||
lateinit var typesFromSmartCast: Collection<ConeKotlinType>
|
||||
lateinit var smartcastStability: SmartcastStability
|
||||
|
||||
abstract fun build(): E
|
||||
}
|
||||
|
||||
abstract class FirWrappedExpressionWithSmartcastToNullBuilder<E : FirExpression> : FirWrappedExpressionWithSmartcastBuilder<E>() {
|
||||
|
||||
+3
-2
@@ -44,7 +44,8 @@ class FirWhenSubjectExpressionWithSmartcastImpl(
|
||||
originalExpression.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
throw IllegalStateException()
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastImpl {
|
||||
originalExpression = originalExpression.transform(transformer, data)
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -45,7 +45,8 @@ class FirWhenSubjectExpressionWithSmartcastToNullImpl(
|
||||
originalExpression.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
throw IllegalStateException()
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastToNullImpl {
|
||||
originalExpression = originalExpression.transform(transformer, data)
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user