diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index cb0687629fa..11caf0dadda 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -37,7 +37,6 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.name.StandardClassIds -import org.jetbrains.kotlin.utils.addToStdlib.getOrPut import org.jetbrains.kotlin.utils.addToStdlib.runIf import org.jetbrains.kotlin.utils.addToStdlib.runUnless @@ -613,7 +612,7 @@ class Fir2IrClassifierStorage( name = enumEntry.name, symbol = symbol, ).apply { - declarationStorage.enterScope(this) + declarationStorage.enterScope(this.symbol) if (irParent != null) { this.parent = irParent } @@ -626,7 +625,7 @@ class Fir2IrClassifierStorage( ) this.correspondingClass = klass } - declarationStorage.leaveScope(this) + declarationStorage.leaveScope(this.symbol) } } enumEntryCache[enumEntry] = result diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt index 764ca7f76d6..e2ca5aa765d 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt @@ -218,7 +218,7 @@ class Fir2IrConverter( // Add synthetic members *before* fake override generations. // Otherwise, redundant members, e.g., synthetic toString _and_ fake override toString, will be added. if (klass is FirRegularClass && irConstructor != null && (irClass.isValue || irClass.isData)) { - declarationStorage.enterScope(irConstructor) + declarationStorage.enterScope(irConstructor.symbol) val dataClassMembersGenerator = DataClassMembersGenerator(components) if (irClass.isSingleFieldValueClass) { allDeclarations += dataClassMembersGenerator.generateSingleFieldValueClassMembers(klass, irClass) @@ -229,7 +229,7 @@ class Fir2IrConverter( if (irClass.isData) { allDeclarations += dataClassMembersGenerator.generateDataClassMembers(klass, irClass) } - declarationStorage.leaveScope(irConstructor) + declarationStorage.leaveScope(irConstructor.symbol) } with(fakeOverrideGenerator) { irClass.addFakeOverrides(klass, allDeclarations) @@ -245,7 +245,7 @@ class Fir2IrConverter( ): IrClass { val conversionData = codeFragment.conversionData - declarationStorage.enterScope(irClass) + declarationStorage.enterScope(irClass.symbol) val signature = irClass.symbol.signature!! @@ -321,7 +321,7 @@ class Fir2IrConverter( irClass.declarations.add(irPrimaryConstructor) irClass.declarations.add(irFragmentFunction) - declarationStorage.leaveScope(irClass) + declarationStorage.leaveScope(irClass.symbol) return irClass } @@ -428,7 +428,7 @@ class Fir2IrConverter( is FirScript -> { parent as IrFile declarationStorage.getOrCreateIrScript(declaration).also { irScript -> - declarationStorage.enterScope(irScript) + declarationStorage.enterScope(irScript.symbol) irScript.parent = parent for (scriptStatement in declaration.statements) { when (scriptStatement) { @@ -445,7 +445,7 @@ class Fir2IrConverter( processMemberDeclaration(scriptStatement, null, irScript) } } - declarationStorage.leaveScope(irScript) + declarationStorage.leaveScope(irScript.symbol) } } is FirSimpleFunction -> { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index b0342609040..841a9dc1451 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -243,14 +243,6 @@ class Fir2IrDeclarationStorage( return fileCache[firFile]!! } - fun enterScope(declaration: IrDeclaration) { - enterScope(declaration.symbol) - } - - fun leaveScope(declaration: IrDeclaration) { - leaveScope(declaration.symbol) - } - fun enterScope(symbol: IrSymbol) { symbolTable.enterScope(symbol) if (symbol is IrSimpleFunctionSymbol || @@ -716,14 +708,14 @@ class Fir2IrDeclarationStorage( containerSource = simpleFunction?.containerSource, ).apply { metadata = FirMetadataSource.Function(function) - enterScope(this) + enterScope(this.symbol) bindAndDeclareParameters( function, irParent, thisReceiverOwner, isStatic = simpleFunction?.isStatic == true, forSetter = false, ) convertAnnotationsForNonDeclaredMembers(function, origin) - leaveScope(this) + leaveScope(this.symbol) } } result @@ -825,9 +817,9 @@ class Fir2IrDeclarationStorage( // Add to cache before generating parameters to prevent an infinite loop when an annotation value parameter is annotated // with the annotation itself. constructorCache[constructor] = this - enterScope(this) + enterScope(this.symbol) bindAndDeclareParameters(constructor, irParent, irParent, isStatic = false, forSetter = false) - leaveScope(this) + leaveScope(this.symbol) } } } @@ -915,7 +907,7 @@ class Fir2IrDeclarationStorage( } // NB: we should enter accessor' scope before declaring its parameters // (both setter default and receiver ones, if any) - enterScope(this) + enterScope(this.symbol) if (propertyAccessor == null && isSetter) { declareDefaultSetterParameter( property.returnTypeRef.toIrType(ConversionTypeOrigin.SETTER), @@ -928,7 +920,7 @@ class Fir2IrDeclarationStorage( forSetter = isSetter, parentPropertyReceiver = property.receiverParameter, ) - leaveScope(this) + leaveScope(this.symbol) if (irParent != null) { parent = irParent } @@ -1114,7 +1106,7 @@ class Fir2IrDeclarationStorage( ).apply { metadata = FirMetadataSource.Property(property) convertAnnotationsForNonDeclaredMembers(property, origin) - enterScope(this) + enterScope(this.symbol) if (irParent != null) { parent = irParent } @@ -1194,7 +1186,7 @@ class Fir2IrDeclarationStorage( setterForPropertyCache[symbol] = it.symbol } } - leaveScope(this) + leaveScope(this.symbol) } } if (property.isFakeOverride(fakeOverrideOwnerLookupTag)) { @@ -1574,7 +1566,7 @@ class Fir2IrDeclarationStorage( }.apply { parent = irParent metadata = FirMetadataSource.Property(property) - enterScope(this) + enterScope(this.symbol) delegate = declareIrVariable( startOffset, endOffset, IrDeclarationOrigin.PROPERTY_DELEGATE, NameUtils.propertyDelegateName(property.name), property.delegate!!.resolvedType.toIrType(), @@ -1598,7 +1590,7 @@ class Fir2IrDeclarationStorage( } } annotationGenerator.generate(this, property) - leaveScope(this) + leaveScope(this.symbol) } localStorage.putDelegatedProperty(property, irProperty) return irProperty 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 3dbc0b87dad..a79560997c6 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 @@ -142,7 +142,7 @@ class Fir2IrVisitor( val irParentEnumClass = irEnumEntry.parent as? IrClass // If the enum entry has its own members, we need to introduce a synthetic class. if (correspondingClass != null) { - declarationStorage.enterScope(irEnumEntry) + declarationStorage.enterScope(irEnumEntry.symbol) classifierStorage.putEnumEntryClassInScope(enumEntry, correspondingClass) val anonymousObject = (enumEntry.initializer as FirAnonymousObjectExpression).anonymousObject converter.processAnonymousObjectHeaders(anonymousObject, correspondingClass) @@ -160,7 +160,7 @@ class Fir2IrVisitor( ) ) } - declarationStorage.leaveScope(irEnumEntry) + declarationStorage.leaveScope(irEnumEntry.symbol) } else if (initializer is FirAnonymousObjectExpression) { // Otherwise, this is a default-ish enum entry, which doesn't need its own synthetic class. // During raw FIR building, we put the delegated constructor call inside an anonymous object. @@ -217,7 +217,7 @@ class Fir2IrVisitor( override fun visitScript(script: FirScript, data: Any?): IrElement { return declarationStorage.getCachedIrScript(script)!!.also { irScript -> irScript.parent = conversionScope.parentFromStack() - declarationStorage.enterScope(irScript) + declarationStorage.enterScope(irScript.symbol) irScript.explicitCallParameters = script.parameters.map { parameter -> declarationStorage.createIrVariable(parameter, irScript, givenOrigin = IrDeclarationOrigin.SCRIPT_CALL_PARAMETER) @@ -318,7 +318,7 @@ class Fir2IrVisitor( irScript.configure(script) { declarationStorage.getCachedIrScript(it.fir)?.symbol } } } - declarationStorage.leaveScope(irScript) + declarationStorage.leaveScope(irScript.symbol) } } @@ -326,12 +326,12 @@ class Fir2IrVisitor( val irClass = classifierStorage.getCachedIrCodeFragment(codeFragment)!! val irFunction = irClass.declarations.firstIsInstance() - declarationStorage.enterScope(irFunction) + declarationStorage.enterScope(irFunction.symbol) conversionScope.withParent(irFunction) { val irBlock = codeFragment.block.convertToIrBlock(forceUnitType = false) irFunction.body = irFactory.createExpressionBody(irBlock) } - declarationStorage.leaveScope(irFunction) + declarationStorage.leaveScope(irFunction.symbol) return irFunction } @@ -384,9 +384,9 @@ class Fir2IrVisitor( data: Any? ): IrElement = whileAnalysing(session, anonymousInitializer) { val irAnonymousInitializer = declarationStorage.getCachedIrAnonymousInitializer(anonymousInitializer)!! - declarationStorage.enterScope(irAnonymousInitializer) + declarationStorage.enterScope(irAnonymousInitializer.symbol) irAnonymousInitializer.body = convertToIrBlockBody(anonymousInitializer.body!!) - declarationStorage.leaveScope(irAnonymousInitializer) + declarationStorage.leaveScope(irAnonymousInitializer.symbol) return irAnonymousInitializer } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt index ddeea8872e9..9e63c3dc653 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/ClassMemberGenerator.kt @@ -54,7 +54,7 @@ internal class ClassMemberGenerator( private fun applyParentFromStackTo(declaration: T): T = conversionScope.applyParentFromStackTo(declaration) fun convertClassContent(irClass: IrClass, klass: FirClass): Unit = conversionScope.withContainingFirClass(klass) { - declarationStorage.enterScope(irClass) + declarationStorage.enterScope(irClass.symbol) conversionScope.withClass(irClass) { val allDeclarations = buildList { addAll(klass.declarations) @@ -68,7 +68,7 @@ internal class ClassMemberGenerator( val irPrimaryConstructor = primaryConstructor?.let { declarationStorage.getCachedIrConstructor(it)!! } if (irPrimaryConstructor != null) { with(declarationStorage) { - enterScope(irPrimaryConstructor) + enterScope(irPrimaryConstructor.symbol) irPrimaryConstructor.putParametersInScope(primaryConstructor) convertFunctionContent(irPrimaryConstructor, primaryConstructor, containingClass = klass) } @@ -92,10 +92,10 @@ internal class ClassMemberGenerator( } annotationGenerator.generate(irClass, klass) if (irPrimaryConstructor != null) { - declarationStorage.leaveScope(irPrimaryConstructor) + declarationStorage.leaveScope(irPrimaryConstructor.symbol) } } - declarationStorage.leaveScope(irClass) + declarationStorage.leaveScope(irClass.symbol) } fun convertFunctionContent(irFunction: T, firFunction: FirFunction?, containingClass: FirClass?): T { @@ -104,7 +104,7 @@ internal class ClassMemberGenerator( if (irFunction !is IrConstructor || !irFunction.isPrimary) { // Scope for primary constructor should be entered before class declaration processing with(declarationStorage) { - enterScope(irFunction) + enterScope(irFunction.symbol) irFunction.putParametersInScope(firFunction) } } @@ -194,7 +194,7 @@ internal class ClassMemberGenerator( } if (firFunction != null && (irFunction !is IrConstructor || !irFunction.isPrimary)) { // Scope for primary constructor should be left after class declaration - declarationStorage.leaveScope(irFunction) + declarationStorage.leaveScope(irFunction.symbol) } if (irFunction is IrSimpleFunction && firFunction is FirSimpleFunction && containingClass != null) { irFunction.overriddenSymbols = firFunction.generateOverriddenFunctionSymbols(containingClass) @@ -241,12 +241,12 @@ internal class ClassMemberGenerator( fun convertFieldContent(irField: IrField, field: FirField): IrField { conversionScope.withParent(irField) { - declarationStorage.enterScope(irField) + declarationStorage.enterScope(irField.symbol) val initializerExpression = field.initializer if (irField.initializer == null && initializerExpression != null) { irField.initializer = irFactory.createExpressionBody(visitor.convertToIrExpression(initializerExpression)) } - declarationStorage.leaveScope(irField) + declarationStorage.leaveScope(irField.symbol) } return irField } @@ -257,7 +257,7 @@ internal class ClassMemberGenerator( ) { val irField = backingField ?: return conversionScope.withParent(irField) { - declarationStorage.enterScope(this@initializeBackingField) + declarationStorage.enterScope(this@initializeBackingField.symbol) // NB: initializer can be already converted if (initializer == null && initializerExpression != null) { initializer = irFactory.createExpressionBody( @@ -277,7 +277,7 @@ internal class ClassMemberGenerator( } ) } - declarationStorage.leaveScope(this@initializeBackingField) + declarationStorage.leaveScope(this@initializeBackingField.symbol) } property.backingField?.let { annotationGenerator.generate(irField, it) } } @@ -296,7 +296,7 @@ internal class ClassMemberGenerator( convertFunctionContent(this, propertyAccessor, containingClass = null) if (isDefault) { conversionScope.withParent(this) { - declarationStorage.enterScope(this) + declarationStorage.enterScope(this.symbol) val backingField = correspondingProperty.backingField val fieldSymbol = backingField?.symbol val declaration = this @@ -318,7 +318,7 @@ internal class ClassMemberGenerator( ) ) } - declarationStorage.leaveScope(this) + declarationStorage.leaveScope(this.symbol) } } if (containingClass != null) { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt index a4054471ae0..52bd58f3ff5 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/AbstractFir2IrLazyFunction.kt @@ -108,9 +108,9 @@ abstract class AbstractFir2IrLazyFunction( } protected fun createThisReceiverParameter(thisType: IrType, explicitReceiver: FirReceiverParameter? = null): IrValueParameter { - declarationStorage.enterScope(this) + declarationStorage.enterScope(this.symbol) return declareThisReceiverParameter(thisType, origin, explicitReceiver = explicitReceiver).apply { - declarationStorage.leaveScope(this@AbstractFir2IrLazyFunction) + declarationStorage.leaveScope(this@AbstractFir2IrLazyFunction.symbol) } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt index b21d254c6be..48a64a7d466 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt @@ -84,12 +84,12 @@ class Fir2IrLazyConstructor( val containingClass = parent as? IrClass val outerClass = containingClass?.parentClassOrNull if (containingClass?.isInner == true && outerClass != null) { - declarationStorage.enterScope(this) + declarationStorage.enterScope(this.symbol) declareThisReceiverParameter( thisType = outerClass.thisReceiver!!.type, thisOrigin = origin ).apply { - declarationStorage.leaveScope(this@Fir2IrLazyConstructor) + declarationStorage.leaveScope(this@Fir2IrLazyConstructor.symbol) } } else null } @@ -99,7 +99,7 @@ class Fir2IrLazyConstructor( override var contextReceiverParametersCount: Int = fir.contextReceivers.size override var valueParameters: List by lazyVar(lock) { - declarationStorage.enterScope(this) + declarationStorage.enterScope(this.symbol) buildList { declarationStorage.addContextReceiverParametersTo( @@ -118,7 +118,7 @@ class Fir2IrLazyConstructor( } } }.apply { - declarationStorage.leaveScope(this@Fir2IrLazyConstructor) + declarationStorage.leaveScope(this@Fir2IrLazyConstructor.symbol) } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt index 559ae4bfd5a..37f09a4b2ab 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyPropertyAccessor.kt @@ -77,7 +77,7 @@ class Fir2IrLazyPropertyAccessor( override var valueParameters: List by lazyVar(lock) { if (!isSetter && contextReceiverParametersCount == 0) emptyList() else { - declarationStorage.enterScope(this) + declarationStorage.enterScope(this.symbol) buildList { declarationStorage.addContextReceiverParametersTo( @@ -103,7 +103,7 @@ class Fir2IrLazyPropertyAccessor( ) } }.apply { - declarationStorage.leaveScope(this@Fir2IrLazyPropertyAccessor) + declarationStorage.leaveScope(this@Fir2IrLazyPropertyAccessor.symbol) } } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt index b7ff2328657..34a4dbb9a91 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt @@ -66,7 +66,7 @@ class Fir2IrLazySimpleFunction( override var contextReceiverParametersCount: Int = fir.contextReceiversForFunctionOrContainingProperty().size override var valueParameters: List by lazyVar(lock) { - declarationStorage.enterScope(this) + declarationStorage.enterScope(this.symbol) buildList { declarationStorage.addContextReceiverParametersTo( @@ -83,7 +83,7 @@ class Fir2IrLazySimpleFunction( } } }.apply { - declarationStorage.leaveScope(this@Fir2IrLazySimpleFunction) + declarationStorage.leaveScope(this@Fir2IrLazySimpleFunction.symbol) } }