[FIR JS] Support smart casts for dynamic
This commit is contained in:
+1
-1
@@ -230,7 +230,7 @@ internal class KtFirExpressionTypeProvider(
|
||||
}
|
||||
|
||||
when (val fir = expression.getOrBuildFir(analysisSession.firResolveSession)) {
|
||||
is FirExpressionWithSmartcastToNull -> if (fir.isStable) {
|
||||
is FirExpressionWithSmartcastToNothing -> if (fir.isStable) {
|
||||
return DefiniteNullability.DEFINITELY_NULL
|
||||
}
|
||||
is FirExpressionWithSmartcast -> if (fir.isStable && fir.isNotNullable()) {
|
||||
|
||||
@@ -212,8 +212,12 @@ private fun FirCallableSymbol<*>.toSymbolForCall(
|
||||
explicitReceiver: FirExpression? = null,
|
||||
isDelegate: Boolean = false
|
||||
): IrSymbol? {
|
||||
val dispatchReceiverLookupTag = when (dispatchReceiver) {
|
||||
is FirNoReceiverExpression -> {
|
||||
val dispatchReceiverLookupTag = when {
|
||||
dispatchReceiver is FirExpressionWithSmartcastToNothing && dispatchReceiver.smartcastType.coneType is ConeDynamicType -> {
|
||||
val coneType = dispatchReceiver.smartcastTypeWithoutNullableNothing.coneType
|
||||
coneType.findClassRepresentation(coneType, declarationStorage.session)
|
||||
}
|
||||
dispatchReceiver is FirNoReceiverExpression -> {
|
||||
val containingClass = containingClass()
|
||||
if (containingClass != null && containingClass.classId != StandardClassIds.Any) {
|
||||
// Make sure that symbol is not extension and is not from inline class
|
||||
|
||||
+4
-4
@@ -260,8 +260,8 @@ class Fir2IrImplicitCastInserter(
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitExpressionWithSmartcastToNull(
|
||||
expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull,
|
||||
override fun visitExpressionWithSmartcastToNothing(
|
||||
expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing,
|
||||
data: IrElement
|
||||
): IrElement {
|
||||
// We don't want an implicit cast to Nothing?. This expression just encompasses nullability after null check.
|
||||
@@ -279,8 +279,8 @@ class Fir2IrImplicitCastInserter(
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitWhenSubjectExpressionWithSmartcastToNull(
|
||||
whenSubjectExpressionWithSmartcastToNull: FirWhenSubjectExpressionWithSmartcastToNull,
|
||||
override fun visitWhenSubjectExpressionWithSmartcastToNothing(
|
||||
whenSubjectExpressionWithSmartcastToNothing: FirWhenSubjectExpressionWithSmartcastToNothing,
|
||||
data: IrElement
|
||||
): IrElement {
|
||||
// We don't want an implicit cast to Nothing?. This expression just encompasses nullability after null check.
|
||||
|
||||
@@ -511,12 +511,12 @@ class Fir2IrVisitor(
|
||||
return implicitCastInserter.visitExpressionWithSmartcast(expressionWithSmartcast, value)
|
||||
}
|
||||
|
||||
override fun visitExpressionWithSmartcastToNull(
|
||||
expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull,
|
||||
override fun visitExpressionWithSmartcastToNothing(
|
||||
expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing,
|
||||
data: Any?
|
||||
): IrElement {
|
||||
// This should not be materialized. Generate the expression with the original expression.
|
||||
return convertToIrExpression(expressionWithSmartcastToNull.originalExpression)
|
||||
return convertToIrExpression(expressionWithSmartcastToNothing.originalExpression)
|
||||
}
|
||||
|
||||
override fun visitWhenSubjectExpressionWithSmartcast(
|
||||
@@ -527,12 +527,12 @@ class Fir2IrVisitor(
|
||||
return implicitCastInserter.visitWhenSubjectExpressionWithSmartcast(whenSubjectExpressionWithSmartcast, value)
|
||||
}
|
||||
|
||||
override fun visitWhenSubjectExpressionWithSmartcastToNull(
|
||||
whenSubjectExpressionWithSmartcastToNull: FirWhenSubjectExpressionWithSmartcastToNull,
|
||||
override fun visitWhenSubjectExpressionWithSmartcastToNothing(
|
||||
whenSubjectExpressionWithSmartcastToNothing: FirWhenSubjectExpressionWithSmartcastToNothing,
|
||||
data: Any?
|
||||
): IrElement {
|
||||
// This should not be materialized. Generate the expression with the original expression.
|
||||
return visitWhenSubjectExpression(whenSubjectExpressionWithSmartcastToNull.originalExpression, data)
|
||||
return visitWhenSubjectExpression(whenSubjectExpressionWithSmartcastToNothing.originalExpression, data)
|
||||
}
|
||||
|
||||
override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: Any?): IrElement {
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||
@@ -33,7 +33,7 @@ fun FirExpressionWithSmartcast.smartcastScope(
|
||||
scopeSession: ScopeSession
|
||||
): FirTypeScope? {
|
||||
val smartcastType =
|
||||
if (this is FirExpressionWithSmartcastToNull) smartcastTypeWithoutNullableNothing.coneType else smartcastType.coneType
|
||||
if (this is FirExpressionWithSmartcastToNothing) smartcastTypeWithoutNullableNothing.coneType else smartcastType.coneType
|
||||
val smartcastScope = smartcastType.scope(useSiteSession, scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
||||
if (isStable) {
|
||||
return smartcastScope
|
||||
|
||||
+6
-5
@@ -44,15 +44,16 @@ internal fun FirOverrideChecker.similarFunctionsOrBothProperties(
|
||||
overrideCandidate: FirCallableDeclaration,
|
||||
baseDeclaration: FirCallableDeclaration
|
||||
): Boolean {
|
||||
return when (overrideCandidate) {
|
||||
is FirSimpleFunction -> when (baseDeclaration) {
|
||||
return when {
|
||||
overrideCandidate.origin == FirDeclarationOrigin.DynamicScope -> false
|
||||
overrideCandidate is FirSimpleFunction -> when (baseDeclaration) {
|
||||
is FirSimpleFunction -> isOverriddenFunction(overrideCandidate, baseDeclaration)
|
||||
is FirProperty -> isOverriddenProperty(overrideCandidate, baseDeclaration)
|
||||
else -> false
|
||||
}
|
||||
is FirConstructor -> false
|
||||
is FirProperty -> baseDeclaration is FirProperty && isOverriddenProperty(overrideCandidate, baseDeclaration)
|
||||
is FirField -> baseDeclaration is FirField
|
||||
overrideCandidate is FirConstructor -> false
|
||||
overrideCandidate is FirProperty -> baseDeclaration is FirProperty && isOverriddenProperty(overrideCandidate, baseDeclaration)
|
||||
overrideCandidate is FirField -> baseDeclaration is FirField
|
||||
else -> error("Unknown fir callable type: $overrideCandidate, $baseDeclaration")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@ fun BodyResolveComponents.transformQualifiedAccessUsingSmartcastInfo(
|
||||
qualifiedAccessExpression,
|
||||
dataFlowAnalyzer::getTypeUsingSmartcastInfo,
|
||||
::FirExpressionWithSmartcastBuilder,
|
||||
::FirExpressionWithSmartcastToNullBuilder
|
||||
::FirExpressionWithSmartcastToNothingBuilder
|
||||
) ?: return qualifiedAccessExpression
|
||||
return builder.build()
|
||||
}
|
||||
@@ -333,16 +333,19 @@ fun BodyResolveComponents.transformWhenSubjectExpressionUsingSmartcastInfo(
|
||||
whenSubjectExpression,
|
||||
dataFlowAnalyzer::getTypeUsingSmartcastInfo,
|
||||
::FirWhenSubjectExpressionWithSmartcastBuilder,
|
||||
::FirWhenSubjectExpressionWithSmartcastToNullBuilder
|
||||
::FirWhenSubjectExpressionWithSmartcastToNothingBuilder
|
||||
) ?: return whenSubjectExpression
|
||||
return builder.build()
|
||||
}
|
||||
|
||||
private val ConeKotlinType.isKindOfNothing
|
||||
get() = lowerBoundIfFlexible().let { it.isNothing || it.isNullableNothing }
|
||||
|
||||
private inline fun <T : FirExpression> BodyResolveComponents.transformExpressionUsingSmartcastInfo(
|
||||
expression: T,
|
||||
smartcastExtractor: (T) -> Pair<PropertyStability, MutableList<ConeKotlinType>>?,
|
||||
smartcastBuilder: () -> FirWrappedExpressionWithSmartcastBuilder<T>,
|
||||
smartcastToNullBuilder: () -> FirWrappedExpressionWithSmartcastToNullBuilder<T>
|
||||
smartcastToNothingBuilder: () -> FirWrappedExpressionWithSmartcastToNothingBuilder<T>
|
||||
): FirWrappedExpressionWithSmartcastBuilder<T>? {
|
||||
val (stability, typesFromSmartCast) = smartcastExtractor(expression) ?: return null
|
||||
val smartcastStability = stability.impliedSmartcastStability
|
||||
@@ -358,33 +361,38 @@ private inline fun <T : FirExpression> BodyResolveComponents.transformExpression
|
||||
it += originalType
|
||||
}
|
||||
}
|
||||
if (allTypes.all { it is ConeDynamicType }) return null
|
||||
val intersectedType = ConeTypeIntersector.intersectTypes(session.typeContext, allTypes)
|
||||
if (intersectedType == originalType) return null
|
||||
if (intersectedType == originalType && intersectedType !is ConeDynamicType) return null
|
||||
val intersectedTypeRef = buildResolvedTypeRef {
|
||||
source = expression.resultType.source?.fakeElement(KtFakeSourceElementKind.SmartCastedTypeRef)
|
||||
type = intersectedType
|
||||
annotations += expression.resultType.annotations
|
||||
delegatedTypeRef = expression.resultType
|
||||
}
|
||||
// For example, if (x == null) { ... },
|
||||
|
||||
// Example (1): if (x is String) { ... }, where x: dynamic
|
||||
// the dynamic type will "consume" all other, erasing information.
|
||||
// Example (2): if (x == null) { ... },
|
||||
// we need to track the type without `Nothing?` so that resolution with this as receiver can go through properly.
|
||||
if (typesFromSmartCast.any { it.isNullableNothing }) {
|
||||
val typesFromSmartcastWithoutNullableNothing =
|
||||
typesFromSmartCast.filterTo(mutableListOf()) { !it.isNullableNothing }.also {
|
||||
it += originalType
|
||||
}
|
||||
val intersectedTypeWithoutNullableNothing =
|
||||
ConeTypeIntersector.intersectTypes(session.typeContext, typesFromSmartcastWithoutNullableNothing)
|
||||
val intersectedTypeRefWithoutNullableNothing = buildResolvedTypeRef {
|
||||
if (
|
||||
intersectedType.isKindOfNothing &&
|
||||
!originalType.isNullableNothing &&
|
||||
!originalType.isNothing &&
|
||||
originalType !is ConeStubType
|
||||
) {
|
||||
val reducedTypes = typesFromSmartCast.filterTo(mutableListOf()) { !it.isKindOfNothing }
|
||||
val reducedIntersectedType = ConeTypeIntersector.intersectTypes(session.typeContext, reducedTypes)
|
||||
val reducedIntersectedTypeRef = buildResolvedTypeRef {
|
||||
source = expression.resultType.source?.fakeElement(KtFakeSourceElementKind.SmartCastedTypeRef)
|
||||
type = intersectedTypeWithoutNullableNothing
|
||||
type = reducedIntersectedType
|
||||
annotations += expression.resultType.annotations
|
||||
delegatedTypeRef = expression.resultType
|
||||
}
|
||||
return smartcastToNullBuilder().apply {
|
||||
return smartcastToNothingBuilder().apply {
|
||||
originalExpression = expression
|
||||
smartcastType = intersectedTypeRef
|
||||
smartcastTypeWithoutNullableNothing = intersectedTypeRefWithoutNullableNothing
|
||||
smartcastTypeWithoutNullableNothing = reducedIntersectedTypeRef
|
||||
this.typesFromSmartCast = typesFromSmartCast
|
||||
this.smartcastStability = smartcastStability
|
||||
}
|
||||
@@ -405,7 +413,7 @@ fun FirCheckedSafeCallSubject.propagateTypeFromOriginalReceiver(
|
||||
) {
|
||||
// If the receiver expression is smartcast to `null`, it would have `Nothing?` as its type, which may not have members called by user
|
||||
// code. Hence, we fallback to the type before intersecting with `Nothing?`.
|
||||
val receiverType = ((nullableReceiverExpression as? FirExpressionWithSmartcastToNull)
|
||||
val receiverType = ((nullableReceiverExpression as? FirExpressionWithSmartcastToNothing)
|
||||
?.takeIf { it.isStable }
|
||||
?.smartcastTypeWithoutNullableNothing
|
||||
?: nullableReceiverExpression.typeRef)
|
||||
|
||||
+3
-3
@@ -118,11 +118,11 @@ class ConeEffectExtractor(
|
||||
return expressionWithSmartcast.originalExpression.accept(this, data)
|
||||
}
|
||||
|
||||
override fun visitExpressionWithSmartcastToNull(
|
||||
expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull,
|
||||
override fun visitExpressionWithSmartcastToNothing(
|
||||
expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing,
|
||||
data: Nothing?
|
||||
): ConeContractDescriptionElement? {
|
||||
return expressionWithSmartcastToNull.originalExpression.accept(this, data)
|
||||
return expressionWithSmartcastToNothing.originalExpression.accept(this, data)
|
||||
}
|
||||
|
||||
override fun visitQualifiedAccessExpression(
|
||||
|
||||
+9
-9
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirExpressionWithSmartcastToNull : FirExpressionWithSmartcast(), FirWrappedExpressionWithSmartcastToNull<FirQualifiedAccessExpression> {
|
||||
abstract class FirExpressionWithSmartcastToNothing : FirExpressionWithSmartcast(), FirWrappedExpressionWithSmartcastToNothing<FirQualifiedAccessExpression> {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
@@ -38,11 +38,11 @@ abstract class FirExpressionWithSmartcastToNull : FirExpressionWithSmartcast(),
|
||||
abstract override val smartcastStability: SmartcastStability
|
||||
abstract override val smartcastTypeWithoutNullableNothing: FirTypeRef
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitExpressionWithSmartcastToNull(this, data)
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitExpressionWithSmartcastToNothing(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
||||
transformer.transformExpressionWithSmartcastToNull(this, data) as E
|
||||
transformer.transformExpressionWithSmartcastToNothing(this, data) as E
|
||||
|
||||
@FirImplementationDetail
|
||||
abstract override fun replaceSource(newSource: KtSourceElement?)
|
||||
@@ -57,15 +57,15 @@ abstract class FirExpressionWithSmartcastToNull : FirExpressionWithSmartcast(),
|
||||
|
||||
abstract override fun replaceExplicitReceiver(newExplicitReceiver: FirExpression?)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing
|
||||
|
||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull
|
||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing
|
||||
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull
|
||||
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing
|
||||
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull
|
||||
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing
|
||||
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull
|
||||
abstract override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing
|
||||
|
||||
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull
|
||||
abstract override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing
|
||||
}
|
||||
+4
-4
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirWhenSubjectExpressionWithSmartcastToNull : FirWhenSubjectExpression(), FirWrappedExpressionWithSmartcastToNull<FirWhenSubjectExpression> {
|
||||
abstract class FirWhenSubjectExpressionWithSmartcastToNothing : FirWhenSubjectExpression(), FirWrappedExpressionWithSmartcastToNothing<FirWhenSubjectExpression> {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
@@ -31,13 +31,13 @@ abstract class FirWhenSubjectExpressionWithSmartcastToNull : FirWhenSubjectExpre
|
||||
abstract override val smartcastStability: SmartcastStability
|
||||
abstract override val smartcastTypeWithoutNullableNothing: FirTypeRef
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitWhenSubjectExpressionWithSmartcastToNull(this, data)
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitWhenSubjectExpressionWithSmartcastToNothing(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
||||
transformer.transformWhenSubjectExpressionWithSmartcastToNull(this, data) as E
|
||||
transformer.transformWhenSubjectExpressionWithSmartcastToNothing(this, data) as E
|
||||
|
||||
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastToNull
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastToNothing
|
||||
}
|
||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirWrappedExpressionWithSmartcastToNull<E : FirExpression> : FirWrappedExpressionWithSmartcast<E> {
|
||||
interface FirWrappedExpressionWithSmartcastToNothing<E : FirExpression> : FirWrappedExpressionWithSmartcast<E> {
|
||||
override val source: KtSourceElement?
|
||||
override val typeRef: FirTypeRef
|
||||
override val originalExpression: E
|
||||
@@ -28,11 +28,11 @@ interface FirWrappedExpressionWithSmartcastToNull<E : FirExpression> : FirWrappe
|
||||
override val smartcastStability: SmartcastStability
|
||||
val smartcastTypeWithoutNullableNothing: FirTypeRef
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitWrappedExpressionWithSmartcastToNull(this, data)
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitWrappedExpressionWithSmartcastToNothing(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
||||
transformer.transformWrappedExpressionWithSmartcastToNull(this, data) as E
|
||||
transformer.transformWrappedExpressionWithSmartcastToNothing(this, data) as E
|
||||
|
||||
override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||
}
|
||||
@@ -99,9 +99,9 @@ import org.jetbrains.kotlin.fir.expressions.FirComponentCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCheckedSafeCallSubject
|
||||
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
||||
@@ -120,7 +120,7 @@ import org.jetbrains.kotlin.fir.expressions.FirThrowExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
@@ -223,7 +223,7 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
|
||||
|
||||
override fun visitThisReceiverExpression(thisReceiverExpression: FirThisReceiverExpression, data: D): R = visitQualifiedAccessExpression(thisReceiverExpression, data)
|
||||
|
||||
override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull<E>, data: D): R = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNull, data)
|
||||
override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing<E>, data: D): R = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNothing, data)
|
||||
|
||||
override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: D): R = visitExpression(safeCallExpression, data)
|
||||
|
||||
|
||||
@@ -99,9 +99,9 @@ import org.jetbrains.kotlin.fir.expressions.FirComponentCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCheckedSafeCallSubject
|
||||
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
||||
@@ -120,7 +120,7 @@ import org.jetbrains.kotlin.fir.expressions.FirThrowExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
@@ -223,7 +223,7 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
|
||||
|
||||
override fun visitThisReceiverExpression(thisReceiverExpression: FirThisReceiverExpression) = visitQualifiedAccessExpression(thisReceiverExpression)
|
||||
|
||||
override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull<E>) = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNull)
|
||||
override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing<E>) = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNothing)
|
||||
|
||||
override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression) = visitExpression(safeCallExpression)
|
||||
|
||||
|
||||
@@ -99,9 +99,9 @@ import org.jetbrains.kotlin.fir.expressions.FirComponentCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCheckedSafeCallSubject
|
||||
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
||||
@@ -120,7 +120,7 @@ import org.jetbrains.kotlin.fir.expressions.FirThrowExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
@@ -526,16 +526,16 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformElement(wrappedExpressionWithSmartcast, data)
|
||||
}
|
||||
|
||||
open fun <E : FirExpression> transformWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull<E>, data: D): FirWrappedExpressionWithSmartcastToNull<E> {
|
||||
return transformElement(wrappedExpressionWithSmartcastToNull, data)
|
||||
open fun <E : FirExpression> transformWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing<E>, data: D): FirWrappedExpressionWithSmartcastToNothing<E> {
|
||||
return transformElement(wrappedExpressionWithSmartcastToNothing, data)
|
||||
}
|
||||
|
||||
open fun transformExpressionWithSmartcast(expressionWithSmartcast: FirExpressionWithSmartcast, data: D): FirStatement {
|
||||
return transformElement(expressionWithSmartcast, data)
|
||||
}
|
||||
|
||||
open fun transformExpressionWithSmartcastToNull(expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull, data: D): FirStatement {
|
||||
return transformElement(expressionWithSmartcastToNull, data)
|
||||
open fun transformExpressionWithSmartcastToNothing(expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing, data: D): FirStatement {
|
||||
return transformElement(expressionWithSmartcastToNothing, data)
|
||||
}
|
||||
|
||||
open fun transformSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: D): FirStatement {
|
||||
@@ -610,8 +610,8 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformElement(whenSubjectExpressionWithSmartcast, data)
|
||||
}
|
||||
|
||||
open fun transformWhenSubjectExpressionWithSmartcastToNull(whenSubjectExpressionWithSmartcastToNull: FirWhenSubjectExpressionWithSmartcastToNull, data: D): FirStatement {
|
||||
return transformElement(whenSubjectExpressionWithSmartcastToNull, data)
|
||||
open fun transformWhenSubjectExpressionWithSmartcastToNothing(whenSubjectExpressionWithSmartcastToNothing: FirWhenSubjectExpressionWithSmartcastToNothing, data: D): FirStatement {
|
||||
return transformElement(whenSubjectExpressionWithSmartcastToNothing, data)
|
||||
}
|
||||
|
||||
open fun transformWrappedDelegateExpression(wrappedDelegateExpression: FirWrappedDelegateExpression, data: D): FirStatement {
|
||||
@@ -1082,16 +1082,16 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcast, data)
|
||||
}
|
||||
|
||||
final override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull<E>, data: D): FirWrappedExpressionWithSmartcastToNull<E> {
|
||||
return transformWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull, data)
|
||||
final override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing<E>, data: D): FirWrappedExpressionWithSmartcastToNothing<E> {
|
||||
return transformWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing, data)
|
||||
}
|
||||
|
||||
final override fun visitExpressionWithSmartcast(expressionWithSmartcast: FirExpressionWithSmartcast, data: D): FirStatement {
|
||||
return transformExpressionWithSmartcast(expressionWithSmartcast, data)
|
||||
}
|
||||
|
||||
final override fun visitExpressionWithSmartcastToNull(expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull, data: D): FirStatement {
|
||||
return transformExpressionWithSmartcastToNull(expressionWithSmartcastToNull, data)
|
||||
final override fun visitExpressionWithSmartcastToNothing(expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing, data: D): FirStatement {
|
||||
return transformExpressionWithSmartcastToNothing(expressionWithSmartcastToNothing, data)
|
||||
}
|
||||
|
||||
final override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: D): FirStatement {
|
||||
@@ -1166,8 +1166,8 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformWhenSubjectExpressionWithSmartcast(whenSubjectExpressionWithSmartcast, data)
|
||||
}
|
||||
|
||||
final override fun visitWhenSubjectExpressionWithSmartcastToNull(whenSubjectExpressionWithSmartcastToNull: FirWhenSubjectExpressionWithSmartcastToNull, data: D): FirStatement {
|
||||
return transformWhenSubjectExpressionWithSmartcastToNull(whenSubjectExpressionWithSmartcastToNull, data)
|
||||
final override fun visitWhenSubjectExpressionWithSmartcastToNothing(whenSubjectExpressionWithSmartcastToNothing: FirWhenSubjectExpressionWithSmartcastToNothing, data: D): FirStatement {
|
||||
return transformWhenSubjectExpressionWithSmartcastToNothing(whenSubjectExpressionWithSmartcastToNothing, data)
|
||||
}
|
||||
|
||||
final override fun visitWrappedDelegateExpression(wrappedDelegateExpression: FirWrappedDelegateExpression, data: D): FirStatement {
|
||||
|
||||
@@ -99,9 +99,9 @@ import org.jetbrains.kotlin.fir.expressions.FirComponentCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCheckedSafeCallSubject
|
||||
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
||||
@@ -120,7 +120,7 @@ import org.jetbrains.kotlin.fir.expressions.FirThrowExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
@@ -339,11 +339,11 @@ abstract class FirVisitor<out R, in D> {
|
||||
|
||||
open fun <E : FirExpression> visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcast: FirWrappedExpressionWithSmartcast<E>, data: D): R = visitElement(wrappedExpressionWithSmartcast, data)
|
||||
|
||||
open fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull<E>, data: D): R = visitElement(wrappedExpressionWithSmartcastToNull, data)
|
||||
open fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing<E>, data: D): R = visitElement(wrappedExpressionWithSmartcastToNothing, data)
|
||||
|
||||
open fun visitExpressionWithSmartcast(expressionWithSmartcast: FirExpressionWithSmartcast, data: D): R = visitElement(expressionWithSmartcast, data)
|
||||
|
||||
open fun visitExpressionWithSmartcastToNull(expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull, data: D): R = visitElement(expressionWithSmartcastToNull, data)
|
||||
open fun visitExpressionWithSmartcastToNothing(expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing, data: D): R = visitElement(expressionWithSmartcastToNothing, data)
|
||||
|
||||
open fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: D): R = visitElement(safeCallExpression, data)
|
||||
|
||||
@@ -381,7 +381,7 @@ abstract class FirVisitor<out R, in D> {
|
||||
|
||||
open fun visitWhenSubjectExpressionWithSmartcast(whenSubjectExpressionWithSmartcast: FirWhenSubjectExpressionWithSmartcast, data: D): R = visitElement(whenSubjectExpressionWithSmartcast, data)
|
||||
|
||||
open fun visitWhenSubjectExpressionWithSmartcastToNull(whenSubjectExpressionWithSmartcastToNull: FirWhenSubjectExpressionWithSmartcastToNull, data: D): R = visitElement(whenSubjectExpressionWithSmartcastToNull, data)
|
||||
open fun visitWhenSubjectExpressionWithSmartcastToNothing(whenSubjectExpressionWithSmartcastToNothing: FirWhenSubjectExpressionWithSmartcastToNothing, data: D): R = visitElement(whenSubjectExpressionWithSmartcastToNothing, data)
|
||||
|
||||
open fun visitWrappedDelegateExpression(wrappedDelegateExpression: FirWrappedDelegateExpression, data: D): R = visitElement(wrappedDelegateExpression, data)
|
||||
|
||||
|
||||
@@ -99,9 +99,9 @@ import org.jetbrains.kotlin.fir.expressions.FirComponentCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCheckedSafeCallSubject
|
||||
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
||||
@@ -120,7 +120,7 @@ import org.jetbrains.kotlin.fir.expressions.FirThrowExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
@@ -525,16 +525,16 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(wrappedExpressionWithSmartcast)
|
||||
}
|
||||
|
||||
open fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull<E>) {
|
||||
visitElement(wrappedExpressionWithSmartcastToNull)
|
||||
open fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing<E>) {
|
||||
visitElement(wrappedExpressionWithSmartcastToNothing)
|
||||
}
|
||||
|
||||
open fun visitExpressionWithSmartcast(expressionWithSmartcast: FirExpressionWithSmartcast) {
|
||||
visitElement(expressionWithSmartcast)
|
||||
}
|
||||
|
||||
open fun visitExpressionWithSmartcastToNull(expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull) {
|
||||
visitElement(expressionWithSmartcastToNull)
|
||||
open fun visitExpressionWithSmartcastToNothing(expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing) {
|
||||
visitElement(expressionWithSmartcastToNothing)
|
||||
}
|
||||
|
||||
open fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression) {
|
||||
@@ -609,8 +609,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(whenSubjectExpressionWithSmartcast)
|
||||
}
|
||||
|
||||
open fun visitWhenSubjectExpressionWithSmartcastToNull(whenSubjectExpressionWithSmartcastToNull: FirWhenSubjectExpressionWithSmartcastToNull) {
|
||||
visitElement(whenSubjectExpressionWithSmartcastToNull)
|
||||
open fun visitWhenSubjectExpressionWithSmartcastToNothing(whenSubjectExpressionWithSmartcastToNothing: FirWhenSubjectExpressionWithSmartcastToNothing) {
|
||||
visitElement(whenSubjectExpressionWithSmartcastToNothing)
|
||||
}
|
||||
|
||||
open fun visitWrappedDelegateExpression(wrappedDelegateExpression: FirWrappedDelegateExpression) {
|
||||
@@ -1081,16 +1081,16 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcast)
|
||||
}
|
||||
|
||||
final override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull<E>, data: Nothing?) {
|
||||
visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull)
|
||||
final override fun <E : FirExpression> visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing<E>, data: Nothing?) {
|
||||
visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing)
|
||||
}
|
||||
|
||||
final override fun visitExpressionWithSmartcast(expressionWithSmartcast: FirExpressionWithSmartcast, data: Nothing?) {
|
||||
visitExpressionWithSmartcast(expressionWithSmartcast)
|
||||
}
|
||||
|
||||
final override fun visitExpressionWithSmartcastToNull(expressionWithSmartcastToNull: FirExpressionWithSmartcastToNull, data: Nothing?) {
|
||||
visitExpressionWithSmartcastToNull(expressionWithSmartcastToNull)
|
||||
final override fun visitExpressionWithSmartcastToNothing(expressionWithSmartcastToNothing: FirExpressionWithSmartcastToNothing, data: Nothing?) {
|
||||
visitExpressionWithSmartcastToNothing(expressionWithSmartcastToNothing)
|
||||
}
|
||||
|
||||
final override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: Nothing?) {
|
||||
@@ -1165,8 +1165,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitWhenSubjectExpressionWithSmartcast(whenSubjectExpressionWithSmartcast)
|
||||
}
|
||||
|
||||
final override fun visitWhenSubjectExpressionWithSmartcastToNull(whenSubjectExpressionWithSmartcastToNull: FirWhenSubjectExpressionWithSmartcastToNull, data: Nothing?) {
|
||||
visitWhenSubjectExpressionWithSmartcastToNull(whenSubjectExpressionWithSmartcastToNull)
|
||||
final override fun visitWhenSubjectExpressionWithSmartcastToNothing(whenSubjectExpressionWithSmartcastToNothing: FirWhenSubjectExpressionWithSmartcastToNothing, data: Nothing?) {
|
||||
visitWhenSubjectExpressionWithSmartcastToNothing(whenSubjectExpressionWithSmartcastToNothing)
|
||||
}
|
||||
|
||||
final override fun visitWrappedDelegateExpression(wrappedDelegateExpression: FirWrappedDelegateExpression, data: Nothing?) {
|
||||
|
||||
+7
-7
@@ -5,13 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.expressions.builder
|
||||
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionWithSmartcastToNullImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionWithSmartcastToNothingImpl
|
||||
|
||||
class FirExpressionWithSmartcastToNullBuilder : FirWrappedExpressionWithSmartcastToNullBuilder<FirQualifiedAccessExpression>() {
|
||||
override fun build(): FirExpressionWithSmartcastToNull {
|
||||
return FirExpressionWithSmartcastToNullImpl(
|
||||
class FirExpressionWithSmartcastToNothingBuilder : FirWrappedExpressionWithSmartcastToNothingBuilder<FirQualifiedAccessExpression>() {
|
||||
override fun build(): FirExpressionWithSmartcastToNothing {
|
||||
return FirExpressionWithSmartcastToNothingImpl(
|
||||
originalExpression,
|
||||
smartcastType,
|
||||
typesFromSmartCast,
|
||||
@@ -21,6 +21,6 @@ class FirExpressionWithSmartcastToNullBuilder : FirWrappedExpressionWithSmartcas
|
||||
}
|
||||
}
|
||||
|
||||
inline fun buildExpressionWithSmartcastToNull(init: FirExpressionWithSmartcastToNullBuilder.() -> Unit): FirExpressionWithSmartcastToNull {
|
||||
return FirExpressionWithSmartcastToNullBuilder().apply(init).build()
|
||||
inline fun buildExpressionWithSmartcastToNothing(init: FirExpressionWithSmartcastToNothingBuilder.() -> Unit): FirExpressionWithSmartcastToNothing {
|
||||
return FirExpressionWithSmartcastToNothingBuilder().apply(init).build()
|
||||
}
|
||||
|
||||
+7
-7
@@ -6,12 +6,12 @@
|
||||
package org.jetbrains.kotlin.fir.expressions.builder
|
||||
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirWhenSubjectExpressionWithSmartcastToNullImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirWhenSubjectExpressionWithSmartcastToNothingImpl
|
||||
|
||||
class FirWhenSubjectExpressionWithSmartcastToNullBuilder : FirWrappedExpressionWithSmartcastToNullBuilder<FirWhenSubjectExpression>() {
|
||||
override fun build(): FirWhenSubjectExpressionWithSmartcastToNull {
|
||||
return FirWhenSubjectExpressionWithSmartcastToNullImpl(
|
||||
class FirWhenSubjectExpressionWithSmartcastToNothingBuilder : FirWrappedExpressionWithSmartcastToNothingBuilder<FirWhenSubjectExpression>() {
|
||||
override fun build(): FirWhenSubjectExpressionWithSmartcastToNothing {
|
||||
return FirWhenSubjectExpressionWithSmartcastToNothingImpl(
|
||||
originalExpression,
|
||||
smartcastType,
|
||||
typesFromSmartCast,
|
||||
@@ -21,6 +21,6 @@ class FirWhenSubjectExpressionWithSmartcastToNullBuilder : FirWrappedExpressionW
|
||||
}
|
||||
}
|
||||
|
||||
fun buildWhenSubjectExpressionWithSmartcastToNull(init: FirWhenSubjectExpressionWithSmartcastToNullBuilder.() -> Unit): FirWhenSubjectExpressionWithSmartcastToNull {
|
||||
return FirWhenSubjectExpressionWithSmartcastToNullBuilder().apply(init).build()
|
||||
fun buildWhenSubjectExpressionWithSmartcastToNothing(init: FirWhenSubjectExpressionWithSmartcastToNothingBuilder.() -> Unit): FirWhenSubjectExpressionWithSmartcastToNothing {
|
||||
return FirWhenSubjectExpressionWithSmartcastToNothingBuilder().apply(init).build()
|
||||
}
|
||||
|
||||
+1
-1
@@ -19,6 +19,6 @@ abstract class FirWrappedExpressionWithSmartcastBuilder<E : FirExpression> {
|
||||
abstract fun build(): E
|
||||
}
|
||||
|
||||
abstract class FirWrappedExpressionWithSmartcastToNullBuilder<E : FirExpression> : FirWrappedExpressionWithSmartcastBuilder<E>() {
|
||||
abstract class FirWrappedExpressionWithSmartcastToNothingBuilder<E : FirExpression> : FirWrappedExpressionWithSmartcastBuilder<E>() {
|
||||
lateinit var smartcastTypeWithoutNullableNothing: FirTypeRef
|
||||
}
|
||||
|
||||
+10
-10
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNull
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpressionWithSmartcastToNothing
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
@@ -21,13 +21,13 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
import org.jetbrains.kotlin.types.SmartcastStability
|
||||
|
||||
class FirExpressionWithSmartcastToNullImpl(
|
||||
class FirExpressionWithSmartcastToNothingImpl(
|
||||
override var originalExpression: FirQualifiedAccessExpression,
|
||||
override val smartcastType: FirTypeRef,
|
||||
override val typesFromSmartCast: Collection<ConeKotlinType>,
|
||||
override val smartcastStability: SmartcastStability,
|
||||
override val smartcastTypeWithoutNullableNothing: FirTypeRef
|
||||
) : FirExpressionWithSmartcastToNull() {
|
||||
) : FirExpressionWithSmartcastToNothing() {
|
||||
init {
|
||||
assert(originalExpression.typeRef is FirResolvedTypeRef)
|
||||
}
|
||||
@@ -48,7 +48,7 @@ class FirExpressionWithSmartcastToNullImpl(
|
||||
// purpose only.
|
||||
override val typeRef: FirTypeRef get() = if (isStable) smartcastType else originalType
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull {
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing {
|
||||
originalExpression = originalExpression.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
@@ -57,27 +57,27 @@ class FirExpressionWithSmartcastToNullImpl(
|
||||
originalExpression.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull {
|
||||
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull {
|
||||
override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull {
|
||||
override fun <D> transformDispatchReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull {
|
||||
override fun <D> transformExtensionReceiver(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull {
|
||||
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNull {
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirExpressionWithSmartcastToNothing {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -16,13 +16,13 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.types.SmartcastStability
|
||||
|
||||
class FirWhenSubjectExpressionWithSmartcastToNullImpl(
|
||||
class FirWhenSubjectExpressionWithSmartcastToNothingImpl(
|
||||
override var originalExpression: FirWhenSubjectExpression,
|
||||
override val smartcastType: FirTypeRef,
|
||||
override val typesFromSmartCast: Collection<ConeKotlinType>,
|
||||
override val smartcastStability: SmartcastStability,
|
||||
override val smartcastTypeWithoutNullableNothing: FirTypeRef
|
||||
) : FirWhenSubjectExpressionWithSmartcastToNull() {
|
||||
) : FirWhenSubjectExpressionWithSmartcastToNothing() {
|
||||
init {
|
||||
assert(originalExpression.typeRef is FirResolvedTypeRef)
|
||||
}
|
||||
@@ -37,7 +37,7 @@ class FirWhenSubjectExpressionWithSmartcastToNullImpl(
|
||||
|
||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {}
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastToNullImpl {
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastToNothingImpl {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ class FirWhenSubjectExpressionWithSmartcastToNullImpl(
|
||||
originalExpression.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastToNullImpl {
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirWhenSubjectExpressionWithSmartcastToNothingImpl {
|
||||
originalExpression = originalExpression.transform(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
+3
-3
@@ -121,9 +121,9 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val callableReferenceAccess by element(Expression, qualifiedAccessExpression)
|
||||
val thisReceiverExpression by element(Expression, qualifiedAccessExpression)
|
||||
val wrappedExpressionWithSmartcast by element(Expression)
|
||||
val wrappedExpressionWithSmartcastToNull by element(Expression, wrappedExpressionWithSmartcast)
|
||||
val wrappedExpressionWithSmartcastToNothing by element(Expression, wrappedExpressionWithSmartcast)
|
||||
val expressionWithSmartcast by element(Expression, qualifiedAccessExpression, wrappedExpressionWithSmartcast)
|
||||
val expressionWithSmartcastToNull by element(Expression, expressionWithSmartcast, wrappedExpressionWithSmartcastToNull)
|
||||
val expressionWithSmartcastToNothing by element(Expression, expressionWithSmartcast, wrappedExpressionWithSmartcastToNothing)
|
||||
val safeCallExpression by element(Expression, expression)
|
||||
val checkedSafeCallSubject by element(Expression, expression)
|
||||
val getClassCall by element(Expression, expression, call)
|
||||
@@ -143,7 +143,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val variableAssignment by element(Expression, qualifiedAccess)
|
||||
val whenSubjectExpression by element(Expression, expression)
|
||||
val whenSubjectExpressionWithSmartcast by element(Expression, whenSubjectExpression, wrappedExpressionWithSmartcast)
|
||||
val whenSubjectExpressionWithSmartcastToNull by element(Expression, whenSubjectExpression, wrappedExpressionWithSmartcastToNull)
|
||||
val whenSubjectExpressionWithSmartcastToNothing by element(Expression, whenSubjectExpression, wrappedExpressionWithSmartcastToNothing)
|
||||
|
||||
val wrappedDelegateExpression by element(Expression, wrappedExpression)
|
||||
|
||||
|
||||
+2
-2
@@ -190,10 +190,10 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
}
|
||||
|
||||
noImpl(expressionWithSmartcast)
|
||||
noImpl(expressionWithSmartcastToNull)
|
||||
noImpl(expressionWithSmartcastToNothing)
|
||||
|
||||
noImpl(whenSubjectExpressionWithSmartcast)
|
||||
noImpl(whenSubjectExpressionWithSmartcastToNull)
|
||||
noImpl(whenSubjectExpressionWithSmartcastToNothing)
|
||||
|
||||
impl(getClassCall) {
|
||||
default("argument") {
|
||||
|
||||
+5
-5
@@ -501,7 +501,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+smartcastStability
|
||||
}
|
||||
|
||||
wrappedExpressionWithSmartcastToNull.configure {
|
||||
wrappedExpressionWithSmartcastToNothing.configure {
|
||||
withArg("E", expression)
|
||||
parentArg(wrappedExpressionWithSmartcast, "E", "E")
|
||||
+field("smartcastTypeWithoutNullableNothing", typeRef)
|
||||
@@ -511,8 +511,8 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
parentArg(wrappedExpressionWithSmartcast, "E", qualifiedAccessExpression)
|
||||
}
|
||||
|
||||
expressionWithSmartcastToNull.configure {
|
||||
parentArg(wrappedExpressionWithSmartcastToNull, "E", qualifiedAccessExpression)
|
||||
expressionWithSmartcastToNothing.configure {
|
||||
parentArg(wrappedExpressionWithSmartcastToNothing, "E", qualifiedAccessExpression)
|
||||
}
|
||||
|
||||
safeCallExpression.configure {
|
||||
@@ -585,8 +585,8 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
parentArg(wrappedExpressionWithSmartcast, "E", whenSubjectExpression)
|
||||
}
|
||||
|
||||
whenSubjectExpressionWithSmartcastToNull.configure {
|
||||
parentArg(wrappedExpressionWithSmartcastToNull, "E", whenSubjectExpression)
|
||||
whenSubjectExpressionWithSmartcastToNothing.configure {
|
||||
parentArg(wrappedExpressionWithSmartcastToNothing, "E", whenSubjectExpression)
|
||||
}
|
||||
|
||||
wrappedExpression.configure {
|
||||
|
||||
Reference in New Issue
Block a user