[FIR IDE] Make fir resolve phase volatile and remove locks
This commit is contained in:
@@ -32,6 +32,7 @@ import kotlin.properties.Delegates
|
||||
class FirJavaClass @FirImplementationDetail internal constructor(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val name: Name,
|
||||
override val annotations: MutableList<FirAnnotationCall>,
|
||||
|
||||
@@ -37,6 +37,7 @@ class FirJavaConstructor @FirImplementationDetail constructor(
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
annotationBuilder: () -> List<FirAnnotationCall>,
|
||||
override var status: FirDeclarationStatus,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
) : FirConstructor() {
|
||||
|
||||
@@ -36,6 +36,7 @@ class FirJavaField @FirImplementationDetail constructor(
|
||||
override val moduleData: FirModuleData,
|
||||
override val symbol: FirFieldSymbol,
|
||||
override val name: Name,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var status: FirDeclarationStatus,
|
||||
|
||||
@@ -50,6 +50,7 @@ import kotlin.properties.Delegates
|
||||
class FirJavaMethod @FirImplementationDetail constructor(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
|
||||
+1
@@ -30,6 +30,7 @@ import kotlin.contracts.contract
|
||||
class FirJavaValueParameter @FirImplementationDetail constructor(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
|
||||
+1
@@ -55,6 +55,7 @@ internal class FirAnonymousFunctionImpl(
|
||||
override val typeParameters: MutableList<FirTypeParameter>,
|
||||
override var typeRef: FirTypeRef,
|
||||
) : FirAnonymousFunction() {
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
||||
override var status: FirDeclarationStatus = FirResolvedDeclarationStatusImpl.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
|
||||
|
||||
|
||||
+1
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirAnonymousInitializerImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirAnonymousObjectImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirConstructorImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirDefaultSetterValueParameter(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirEnumEntryImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirErrorFunctionImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirErrorPropertyImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
class FirFieldImpl @FirImplementationDetail constructor(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirFileImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirPrimaryConstructor(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirPropertyImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirRegularClassImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirSimpleFunctionImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirTypeAliasImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirTypeParameterImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
internal class FirValueParameterImpl(
|
||||
override val source: FirSourceElement?,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
declaration.configure {
|
||||
+symbolWithPackage("fir.symbols", "FirBasedSymbol", "out FirDeclaration")
|
||||
+field("moduleData", firModuleDataType)
|
||||
+field("resolvePhase", resolvePhaseType, withReplace = true).apply { isMutable = true }
|
||||
+field("resolvePhase", resolvePhaseType, withReplace = true).apply { isMutable = true; isVolatile = true }
|
||||
+field("origin", declarationOriginType)
|
||||
+field("attributes", declarationAttributesType)
|
||||
shouldBeAbstractClass()
|
||||
|
||||
+10
-3
@@ -11,6 +11,7 @@ sealed class Field : Importable {
|
||||
abstract val name: String
|
||||
open val arguments = mutableListOf<Importable>()
|
||||
abstract val nullable: Boolean
|
||||
abstract var isVolatile: Boolean
|
||||
open var withReplace: Boolean = false
|
||||
abstract val isFirType: Boolean
|
||||
|
||||
@@ -71,6 +72,7 @@ sealed class Field : Importable {
|
||||
class FieldWithDefault(val origin: Field) : Field() {
|
||||
override val name: String get() = origin.name
|
||||
override val type: String get() = origin.type
|
||||
override var isVolatile: Boolean = origin.isVolatile
|
||||
override val nullable: Boolean get() = origin.nullable
|
||||
override var withReplace: Boolean
|
||||
get() = origin.withReplace
|
||||
@@ -123,7 +125,8 @@ class SimpleField(
|
||||
override val packageName: String?,
|
||||
val customType: Importable? = null,
|
||||
override val nullable: Boolean,
|
||||
override var withReplace: Boolean
|
||||
override var withReplace: Boolean,
|
||||
override var isVolatile: Boolean = false
|
||||
) : Field() {
|
||||
override val isFirType: Boolean = false
|
||||
override val fullQualifiedName: String?
|
||||
@@ -138,7 +141,8 @@ class SimpleField(
|
||||
packageName,
|
||||
customType,
|
||||
nullable,
|
||||
withReplace
|
||||
withReplace,
|
||||
isVolatile
|
||||
).apply {
|
||||
withBindThis = this@SimpleField.withBindThis
|
||||
}
|
||||
@@ -150,7 +154,8 @@ class SimpleField(
|
||||
newType.packageName,
|
||||
customType,
|
||||
nullable,
|
||||
withReplace
|
||||
withReplace,
|
||||
isVolatile
|
||||
).also {
|
||||
it.withBindThis = withBindThis
|
||||
updateFieldsInCopy(it)
|
||||
@@ -170,6 +175,7 @@ class FirField(
|
||||
}
|
||||
|
||||
override val type: String get() = element.type
|
||||
override var isVolatile: Boolean = false
|
||||
override val packageName: String? get() = element.packageName
|
||||
override val isFirType: Boolean = true
|
||||
|
||||
@@ -202,6 +208,7 @@ class FieldList(
|
||||
override val nullable: Boolean
|
||||
get() = false
|
||||
|
||||
override var isVolatile: Boolean = false
|
||||
override var isMutable: Boolean = true
|
||||
|
||||
override fun internalCopy(): Field {
|
||||
|
||||
-1
@@ -37,7 +37,6 @@ fun Element.generateCode(generationPath: File): GeneratedFile {
|
||||
fun SmartPrinter.printElement(element: Element) {
|
||||
with(element) {
|
||||
val isInterface = kind == Kind.Interface || kind == Kind.SealedInterface
|
||||
|
||||
fun abstract() {
|
||||
if (!isInterface) {
|
||||
print("abstract ")
|
||||
|
||||
+7
@@ -6,10 +6,14 @@
|
||||
package org.jetbrains.kotlin.fir.tree.generator.printer
|
||||
|
||||
import org.jetbrains.kotlin.fir.tree.generator.model.Field
|
||||
import org.jetbrains.kotlin.fir.tree.generator.model.SimpleField
|
||||
import org.jetbrains.kotlin.util.SmartPrinter
|
||||
|
||||
|
||||
fun SmartPrinter.printField(field: Field, isImplementation: Boolean, override: Boolean, end: String) {
|
||||
if (isImplementation && !field.isVal && field.isVolatile) {
|
||||
println("@Volatile")
|
||||
}
|
||||
if (override) {
|
||||
print("override ")
|
||||
}
|
||||
@@ -23,6 +27,9 @@ fun SmartPrinter.printField(field: Field, isImplementation: Boolean, override: B
|
||||
}
|
||||
|
||||
fun SmartPrinter.printFieldWithDefaultInImplementation(field: Field) {
|
||||
if (!field.isVal && field.isVolatile) {
|
||||
println("@Volatile")
|
||||
}
|
||||
val defaultValue = field.defaultValueInImplementation
|
||||
print("override ")
|
||||
if (field.isVal) {
|
||||
|
||||
+2
@@ -73,6 +73,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
||||
}
|
||||
println("(")
|
||||
withIndent {
|
||||
|
||||
fieldsWithoutDefault.forEachIndexed { _, field ->
|
||||
printField(field, isImplementation = true, override = true, end = ",")
|
||||
}
|
||||
@@ -89,6 +90,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
||||
withIndent {
|
||||
if (isInterface || isAbstract) {
|
||||
allFields.forEach {
|
||||
|
||||
abstract()
|
||||
printField(it, isImplementation = true, override = true, end = "")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user