diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt index aa243fa3b97..96063799a76 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt @@ -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()) { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index 15c111c5c41..4d4942944a7 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -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 diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt index e6cc99c0adc..73c8d6b963a 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt @@ -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. diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index d58e17754a1..3dfe1f31473 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -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 { diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt index 0255f4d5ddf..5f87afed2df 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt @@ -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 diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt index 1f6cac0e67e..9a45fd41783 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt @@ -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") } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index cdca2e6f40a..1f995dc5a8d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -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 BodyResolveComponents.transformExpressionUsingSmartcastInfo( expression: T, smartcastExtractor: (T) -> Pair>?, smartcastBuilder: () -> FirWrappedExpressionWithSmartcastBuilder, - smartcastToNullBuilder: () -> FirWrappedExpressionWithSmartcastToNullBuilder + smartcastToNothingBuilder: () -> FirWrappedExpressionWithSmartcastToNothingBuilder ): FirWrappedExpressionWithSmartcastBuilder? { val (stability, typesFromSmartCast) = smartcastExtractor(expression) ?: return null val smartcastStability = stability.impliedSmartcastStability @@ -358,33 +361,38 @@ private inline fun 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) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt index 39767904ded..3ef19a8d5ed 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt @@ -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( diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcastToNull.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcastToNothing.kt similarity index 81% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcastToNull.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcastToNothing.kt index 732c832fe54..9d54e96f0d2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcastToNull.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcastToNothing.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail * DO NOT MODIFY IT MANUALLY */ -abstract class FirExpressionWithSmartcastToNull : FirExpressionWithSmartcast(), FirWrappedExpressionWithSmartcastToNull { +abstract class FirExpressionWithSmartcastToNothing : FirExpressionWithSmartcast(), FirWrappedExpressionWithSmartcastToNothing { abstract override val source: KtSourceElement? abstract override val typeRef: FirTypeRef abstract override val annotations: List @@ -38,11 +38,11 @@ abstract class FirExpressionWithSmartcastToNull : FirExpressionWithSmartcast(), abstract override val smartcastStability: SmartcastStability abstract override val smartcastTypeWithoutNullableNothing: FirTypeRef - override fun accept(visitor: FirVisitor, data: D): R = visitor.visitExpressionWithSmartcastToNull(this, data) + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitExpressionWithSmartcastToNothing(this, data) @Suppress("UNCHECKED_CAST") override fun transform(transformer: FirTransformer, 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 transformAnnotations(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing - abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing - abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull + abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing - abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull + abstract override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing - abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull + abstract override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing - abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull + abstract override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpressionWithSmartcastToNull.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpressionWithSmartcastToNothing.kt similarity index 86% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpressionWithSmartcastToNull.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpressionWithSmartcastToNothing.kt index 10d6da3be36..d2017f7c895 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpressionWithSmartcastToNull.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpressionWithSmartcastToNothing.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirWhenSubjectExpressionWithSmartcastToNull : FirWhenSubjectExpression(), FirWrappedExpressionWithSmartcastToNull { +abstract class FirWhenSubjectExpressionWithSmartcastToNothing : FirWhenSubjectExpression(), FirWrappedExpressionWithSmartcastToNothing { abstract override val source: KtSourceElement? abstract override val typeRef: FirTypeRef abstract override val annotations: List @@ -31,13 +31,13 @@ abstract class FirWhenSubjectExpressionWithSmartcastToNull : FirWhenSubjectExpre abstract override val smartcastStability: SmartcastStability abstract override val smartcastTypeWithoutNullableNothing: FirTypeRef - override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhenSubjectExpressionWithSmartcastToNull(this, data) + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhenSubjectExpressionWithSmartcastToNothing(this, data) @Suppress("UNCHECKED_CAST") override fun transform(transformer: FirTransformer, data: D): E = - transformer.transformWhenSubjectExpressionWithSmartcastToNull(this, data) as E + transformer.transformWhenSubjectExpressionWithSmartcastToNothing(this, data) as E abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) - abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirWhenSubjectExpressionWithSmartcastToNull + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirWhenSubjectExpressionWithSmartcastToNothing } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpressionWithSmartcastToNull.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpressionWithSmartcastToNothing.kt similarity index 82% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpressionWithSmartcastToNull.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpressionWithSmartcastToNothing.kt index 8ef7592c4bd..f99bc5afcd7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpressionWithSmartcastToNull.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpressionWithSmartcastToNothing.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirWrappedExpressionWithSmartcastToNull : FirWrappedExpressionWithSmartcast { +interface FirWrappedExpressionWithSmartcastToNothing : FirWrappedExpressionWithSmartcast { override val source: KtSourceElement? override val typeRef: FirTypeRef override val originalExpression: E @@ -28,11 +28,11 @@ interface FirWrappedExpressionWithSmartcastToNull : FirWrappe override val smartcastStability: SmartcastStability val smartcastTypeWithoutNullableNothing: FirTypeRef - override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedExpressionWithSmartcastToNull(this, data) + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedExpressionWithSmartcastToNothing(this, data) @Suppress("UNCHECKED_CAST") override fun transform(transformer: FirTransformer, data: D): E = - transformer.transformWrappedExpressionWithSmartcastToNull(this, data) as E + transformer.transformWrappedExpressionWithSmartcastToNothing(this, data) as E override fun replaceTypeRef(newTypeRef: FirTypeRef) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt index e0aefd96e0c..52a965ddd73 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt @@ -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 : FirVisitor() { override fun visitThisReceiverExpression(thisReceiverExpression: FirThisReceiverExpression, data: D): R = visitQualifiedAccessExpression(thisReceiverExpression, data) - override fun visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull, data: D): R = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNull, data) + override fun visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing, data: D): R = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNothing, data) override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: D): R = visitExpression(safeCallExpression, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt index f54710310b4..98afd021d1c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt @@ -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 visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull) = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNull) + override fun visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing) = visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcastToNothing) override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression) = visitExpression(safeCallExpression) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index fde0233bedb..f7e873b0f72 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -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 : FirVisitor() { return transformElement(wrappedExpressionWithSmartcast, data) } - open fun transformWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull, data: D): FirWrappedExpressionWithSmartcastToNull { - return transformElement(wrappedExpressionWithSmartcastToNull, data) + open fun transformWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing, data: D): FirWrappedExpressionWithSmartcastToNothing { + 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 : FirVisitor() { 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 : FirVisitor() { return transformWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcast, data) } - final override fun visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull, data: D): FirWrappedExpressionWithSmartcastToNull { - return transformWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull, data) + final override fun visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing, data: D): FirWrappedExpressionWithSmartcastToNothing { + 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 : FirVisitor() { 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 { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index 90393420113..e068b8c574d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -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 { open fun visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcast: FirWrappedExpressionWithSmartcast, data: D): R = visitElement(wrappedExpressionWithSmartcast, data) - open fun visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull, data: D): R = visitElement(wrappedExpressionWithSmartcastToNull, data) + open fun visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing, 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 { 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) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index 84505cd965a..6617f7d6b4b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -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() { visitElement(wrappedExpressionWithSmartcast) } - open fun visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull) { - visitElement(wrappedExpressionWithSmartcastToNull) + open fun visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing) { + 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() { 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() { visitWrappedExpressionWithSmartcast(wrappedExpressionWithSmartcast) } - final override fun visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull: FirWrappedExpressionWithSmartcastToNull, data: Nothing?) { - visitWrappedExpressionWithSmartcastToNull(wrappedExpressionWithSmartcastToNull) + final override fun visitWrappedExpressionWithSmartcastToNothing(wrappedExpressionWithSmartcastToNothing: FirWrappedExpressionWithSmartcastToNothing, 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() { 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?) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirExpressionWithSmartcastToNullBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirExpressionWithSmartcastToNullBuilder.kt index 7e56657fb4c..5e8a7e7c8db 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirExpressionWithSmartcastToNullBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirExpressionWithSmartcastToNullBuilder.kt @@ -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() { - override fun build(): FirExpressionWithSmartcastToNull { - return FirExpressionWithSmartcastToNullImpl( +class FirExpressionWithSmartcastToNothingBuilder : FirWrappedExpressionWithSmartcastToNothingBuilder() { + 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() } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWhenSubjectExpressionWithSmartcastToNullBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWhenSubjectExpressionWithSmartcastToNullBuilder.kt index 953de742174..d825a6f87c5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWhenSubjectExpressionWithSmartcastToNullBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWhenSubjectExpressionWithSmartcastToNullBuilder.kt @@ -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() { - override fun build(): FirWhenSubjectExpressionWithSmartcastToNull { - return FirWhenSubjectExpressionWithSmartcastToNullImpl( +class FirWhenSubjectExpressionWithSmartcastToNothingBuilder : FirWrappedExpressionWithSmartcastToNothingBuilder() { + 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() } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedExpressionWithSmartcastBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedExpressionWithSmartcastBuilder.kt index 3babf5a55b5..4722792cc24 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedExpressionWithSmartcastBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirWrappedExpressionWithSmartcastBuilder.kt @@ -19,6 +19,6 @@ abstract class FirWrappedExpressionWithSmartcastBuilder { abstract fun build(): E } -abstract class FirWrappedExpressionWithSmartcastToNullBuilder : FirWrappedExpressionWithSmartcastBuilder() { +abstract class FirWrappedExpressionWithSmartcastToNothingBuilder : FirWrappedExpressionWithSmartcastBuilder() { lateinit var smartcastTypeWithoutNullableNothing: FirTypeRef } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastToNullImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastToNullImpl.kt index cfeb09441b1..1f1a37692d6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastToNullImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastToNullImpl.kt @@ -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, 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 transformChildren(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull { + override fun transformChildren(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing { originalExpression = originalExpression.transformSingle(transformer, data) return this } @@ -57,27 +57,27 @@ class FirExpressionWithSmartcastToNullImpl( originalExpression.accept(visitor, data) } - override fun transformCalleeReference(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull { + override fun transformCalleeReference(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing { throw IllegalStateException() } - override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull { + override fun transformExplicitReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing { throw IllegalStateException() } - override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull { + override fun transformDispatchReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing { throw IllegalStateException() } - override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull { + override fun transformExtensionReceiver(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing { throw IllegalStateException() } - override fun transformTypeArguments(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull { + override fun transformTypeArguments(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing { throw IllegalStateException() } - override fun transformAnnotations(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNull { + override fun transformAnnotations(transformer: FirTransformer, data: D): FirExpressionWithSmartcastToNothing { throw IllegalStateException() } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionWithSmartcastToNullImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionWithSmartcastToNullImpl.kt index 487da327ac4..d89e53e5d0b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionWithSmartcastToNullImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirWhenSubjectExpressionWithSmartcastToNullImpl.kt @@ -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, 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 transformAnnotations(transformer: FirTransformer, data: D): FirWhenSubjectExpressionWithSmartcastToNullImpl { + override fun transformAnnotations(transformer: FirTransformer, data: D): FirWhenSubjectExpressionWithSmartcastToNothingImpl { throw IllegalStateException() } @@ -45,7 +45,7 @@ class FirWhenSubjectExpressionWithSmartcastToNullImpl( originalExpression.accept(visitor, data) } - override fun transformChildren(transformer: FirTransformer, data: D): FirWhenSubjectExpressionWithSmartcastToNullImpl { + override fun transformChildren(transformer: FirTransformer, data: D): FirWhenSubjectExpressionWithSmartcastToNothingImpl { originalExpression = originalExpression.transform(transformer, data) return this } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index f06434bbd37..63f23b063bd 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -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) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index 2a329f4efcd..2ce4c2bd3ec 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -190,10 +190,10 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } noImpl(expressionWithSmartcast) - noImpl(expressionWithSmartcastToNull) + noImpl(expressionWithSmartcastToNothing) noImpl(whenSubjectExpressionWithSmartcast) - noImpl(whenSubjectExpressionWithSmartcastToNull) + noImpl(whenSubjectExpressionWithSmartcastToNothing) impl(getClassCall) { default("argument") { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 1239fad6644..5e224b44d57 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -501,7 +501,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +smartcastStability } - wrappedExpressionWithSmartcastToNull.configure { + wrappedExpressionWithSmartcastToNothing.configure { withArg("E", expression) parentArg(wrappedExpressionWithSmartcast, "E", "E") +field("smartcastTypeWithoutNullableNothing", typeRef) @@ -511,8 +511,8 @@ object NodeConfigurator : AbstractFieldConfigurator(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(FirTreeBuild parentArg(wrappedExpressionWithSmartcast, "E", whenSubjectExpression) } - whenSubjectExpressionWithSmartcastToNull.configure { - parentArg(wrappedExpressionWithSmartcastToNull, "E", whenSubjectExpression) + whenSubjectExpressionWithSmartcastToNothing.configure { + parentArg(wrappedExpressionWithSmartcastToNothing, "E", whenSubjectExpression) } wrappedExpression.configure {