[FIR] Use builder to create synthetic properties
This commit is contained in:
+1
-15
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
|
||||
class FirSyntheticProperty private constructor(
|
||||
class FirSyntheticProperty(
|
||||
override val session: FirSession,
|
||||
override val returnTypeRef: FirTypeRef,
|
||||
override val name: Name,
|
||||
@@ -37,20 +37,6 @@ class FirSyntheticProperty private constructor(
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
constructor(
|
||||
session: FirSession,
|
||||
name: Name,
|
||||
symbol: FirAccessorSymbol,
|
||||
delegateGetter: FirSimpleFunction,
|
||||
delegateSetter: FirSimpleFunction? = null
|
||||
) : this(
|
||||
session, delegateGetter.returnTypeRef, name, isVar = delegateSetter != null, symbol = symbol,
|
||||
status = FirDeclarationStatusImpl(delegateGetter.visibility, delegateGetter.modality),
|
||||
resolvePhase = delegateGetter.resolvePhase,
|
||||
getter = FirSyntheticPropertyAccessor(delegateGetter, isGetter = true),
|
||||
setter = delegateSetter?.let { FirSyntheticPropertyAccessor(it, isGetter = false) }
|
||||
)
|
||||
|
||||
override val source: FirSourceElement?
|
||||
get() = null
|
||||
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations.synthetic
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.modality
|
||||
import org.jetbrains.kotlin.fir.declarations.visibility
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class FirSyntheticPropertyBuilder {
|
||||
lateinit var session: FirSession
|
||||
lateinit var name: Name
|
||||
lateinit var symbol: FirAccessorSymbol
|
||||
lateinit var delegateGetter: FirSimpleFunction
|
||||
var delegateSetter: FirSimpleFunction? = null
|
||||
|
||||
fun build(): FirSyntheticProperty = FirSyntheticProperty(
|
||||
session, delegateGetter.returnTypeRef, name, isVar = delegateSetter != null, symbol = symbol,
|
||||
status = FirDeclarationStatusImpl(delegateGetter.visibility, delegateGetter.modality),
|
||||
resolvePhase = delegateGetter.resolvePhase,
|
||||
getter = FirSyntheticPropertyAccessor(delegateGetter, isGetter = true),
|
||||
setter = delegateSetter?.let { FirSyntheticPropertyAccessor(it, isGetter = false) }
|
||||
)
|
||||
}
|
||||
|
||||
fun buildSyntheticProperty(f: FirSyntheticPropertyBuilder.() -> Unit): FirSyntheticProperty =
|
||||
FirSyntheticPropertyBuilder().apply { f() }.build()
|
||||
Reference in New Issue
Block a user