[FIR] Create intersection overrides for fields in intersection type scope
^KT-56820 Fixed
This commit is contained in:
committed by
Space Team
parent
4e56079c59
commit
8c6d4a6f4b
+40
-12
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.declarations.UnresolvedDeprecationProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirVariableBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirFieldImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
@@ -44,23 +44,23 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
*/
|
||||
|
||||
@FirBuilderDsl
|
||||
open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilder {
|
||||
open class FirFieldBuilder : FirVariableBuilder, FirAnnotationContainerBuilder {
|
||||
override var source: KtSourceElement? = null
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
override lateinit var moduleData: FirModuleData
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
open val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
open lateinit var status: FirDeclarationStatus
|
||||
open lateinit var returnTypeRef: FirTypeRef
|
||||
open var deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider
|
||||
open var containerSource: DeserializedContainerSource? = null
|
||||
open var dispatchReceiverType: ConeSimpleKotlinType? = null
|
||||
open val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
|
||||
open lateinit var name: Name
|
||||
open var initializer: FirExpression? = null
|
||||
open var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
open var backingField: FirBackingField? = null
|
||||
override lateinit var status: FirDeclarationStatus
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
override var deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
override var dispatchReceiverType: ConeSimpleKotlinType? = null
|
||||
override val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
|
||||
override lateinit var name: Name
|
||||
override var initializer: FirExpression? = null
|
||||
override var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
override var backingField: FirBackingField? = null
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
open lateinit var symbol: FirFieldSymbol
|
||||
|
||||
@@ -88,6 +88,34 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@Deprecated("Modification of 'receiverParameter' has no impact for FirFieldBuilder", level = DeprecationLevel.HIDDEN)
|
||||
override var receiverParameter: FirReceiverParameter?
|
||||
get() = throw IllegalStateException()
|
||||
set(_) {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
@Deprecated("Modification of 'delegate' has no impact for FirFieldBuilder", level = DeprecationLevel.HIDDEN)
|
||||
override var delegate: FirExpression?
|
||||
get() = throw IllegalStateException()
|
||||
set(_) {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
@Deprecated("Modification of 'getter' has no impact for FirFieldBuilder", level = DeprecationLevel.HIDDEN)
|
||||
override var getter: FirPropertyAccessor?
|
||||
get() = throw IllegalStateException()
|
||||
set(_) {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
@Deprecated("Modification of 'setter' has no impact for FirFieldBuilder", level = DeprecationLevel.HIDDEN)
|
||||
override var setter: FirPropertyAccessor?
|
||||
get() = throw IllegalStateException()
|
||||
set(_) {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
|
||||
+16
-16
@@ -26,8 +26,8 @@ import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.UnresolvedDeprecationProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParametersOwnerBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirVariableBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
@@ -47,27 +47,27 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
*/
|
||||
|
||||
@FirBuilderDsl
|
||||
class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, FirAnnotationContainerBuilder {
|
||||
class FirPropertyBuilder : FirVariableBuilder, FirTypeParametersOwnerBuilder, FirAnnotationContainerBuilder {
|
||||
override var source: KtSourceElement? = null
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
override lateinit var moduleData: FirModuleData
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
lateinit var status: FirDeclarationStatus
|
||||
lateinit var returnTypeRef: FirTypeRef
|
||||
var receiverParameter: FirReceiverParameter? = null
|
||||
var deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeSimpleKotlinType? = null
|
||||
lateinit var name: Name
|
||||
var initializer: FirExpression? = null
|
||||
var delegate: FirExpression? = null
|
||||
var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
var getter: FirPropertyAccessor? = null
|
||||
var setter: FirPropertyAccessor? = null
|
||||
var backingField: FirBackingField? = null
|
||||
override lateinit var status: FirDeclarationStatus
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
override var receiverParameter: FirReceiverParameter? = null
|
||||
override var deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
override var dispatchReceiverType: ConeSimpleKotlinType? = null
|
||||
override lateinit var name: Name
|
||||
override var initializer: FirExpression? = null
|
||||
override var delegate: FirExpression? = null
|
||||
override var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
override var getter: FirPropertyAccessor? = null
|
||||
override var setter: FirPropertyAccessor? = null
|
||||
override var backingField: FirBackingField? = null
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
|
||||
override val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
|
||||
lateinit var symbol: FirPropertySymbol
|
||||
var delegateFieldSymbol: FirDelegateFieldSymbol? = null
|
||||
var isLocal: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("DuplicatedCode")
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations.builder
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.FirBackingField
|
||||
import org.jetbrains.kotlin.fir.declarations.FirContextReceiver
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
@FirBuilderDsl
|
||||
interface FirVariableBuilder : FirDeclarationBuilder {
|
||||
abstract override var source: KtSourceElement?
|
||||
abstract override var resolvePhase: FirResolvePhase
|
||||
abstract override val annotations: MutableList<FirAnnotation>
|
||||
abstract override var moduleData: FirModuleData
|
||||
abstract override var origin: FirDeclarationOrigin
|
||||
abstract override var attributes: FirDeclarationAttributes
|
||||
abstract var status: FirDeclarationStatus
|
||||
abstract var returnTypeRef: FirTypeRef
|
||||
abstract var receiverParameter: FirReceiverParameter?
|
||||
abstract var deprecationsProvider: DeprecationsProvider
|
||||
abstract var containerSource: DeserializedContainerSource?
|
||||
abstract var dispatchReceiverType: ConeSimpleKotlinType?
|
||||
abstract val contextReceivers: MutableList<FirContextReceiver>
|
||||
abstract var name: Name
|
||||
abstract var initializer: FirExpression?
|
||||
abstract var delegate: FirExpression?
|
||||
abstract var isVar: Boolean
|
||||
abstract var getter: FirPropertyAccessor?
|
||||
abstract var setter: FirPropertyAccessor?
|
||||
abstract var backingField: FirBackingField?
|
||||
override fun build(): FirVariable
|
||||
}
|
||||
@@ -77,6 +77,11 @@ class FirIntersectionOverridePropertySymbol(
|
||||
override val intersections: Collection<FirCallableSymbol<*>>
|
||||
) : FirPropertySymbol(callableId), FirIntersectionCallableSymbol
|
||||
|
||||
class FirIntersectionOverrideFieldSymbol(
|
||||
callableId: CallableId,
|
||||
override val intersections: Collection<FirCallableSymbol<*>>
|
||||
) : FirFieldSymbol(callableId), FirIntersectionCallableSymbol
|
||||
|
||||
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirBackingField>(callableId) {
|
||||
val isVal: Boolean
|
||||
get() = fir.isVal
|
||||
@@ -93,7 +98,7 @@ class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirBacki
|
||||
|
||||
class FirDelegateFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
|
||||
|
||||
class FirFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirField>(callableId) {
|
||||
open class FirFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirField>(callableId) {
|
||||
val hasInitializer: Boolean
|
||||
get() = fir.initializer != null
|
||||
|
||||
|
||||
+12
-7
@@ -101,12 +101,6 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
withCopy()
|
||||
}
|
||||
|
||||
builder(field) {
|
||||
parents += declarationBuilder
|
||||
default("resolvePhase", "FirResolvePhase.DECLARATIONS")
|
||||
openBuilder()
|
||||
}
|
||||
|
||||
builder(anonymousObject) {
|
||||
parents += declarationBuilder
|
||||
parents += classBuilder
|
||||
@@ -223,8 +217,13 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
parents += callBuilder
|
||||
}
|
||||
|
||||
builder(property) {
|
||||
val variableBuilder by builder {
|
||||
fields from variable without listOf("symbol", "typeParameters", "isVal")
|
||||
parents += declarationBuilder
|
||||
}
|
||||
|
||||
builder(property) {
|
||||
parents += variableBuilder
|
||||
parents += typeParametersOwnerBuilder
|
||||
defaultNull("getter", "setter", "containerSource", "delegateFieldSymbol")
|
||||
default("resolvePhase", "FirResolvePhase.RAW_FIR")
|
||||
@@ -232,6 +231,12 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
withCopy()
|
||||
}
|
||||
|
||||
builder(field) {
|
||||
parents += variableBuilder
|
||||
default("resolvePhase", "FirResolvePhase.DECLARATIONS")
|
||||
openBuilder()
|
||||
}
|
||||
|
||||
builder(typeOperatorCall) {
|
||||
parents += callBuilder
|
||||
default("argumentList") {
|
||||
|
||||
Reference in New Issue
Block a user