From 305288aa82a64e1fc5a63edb7eda87469b62dce1 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 13 Jul 2020 19:09:43 +0200 Subject: [PATCH] IR: use IrFactory in psi2ir --- .../generators/ArgumentsGenerationUtils.kt | 6 ++--- .../psi2ir/generators/DeclarationGenerator.kt | 8 +++---- .../generators/DelegatedPropertyGenerator.kt | 3 +-- .../psi2ir/generators/FunctionGenerator.kt | 3 +-- .../psi2ir/generators/GeneratorContext.kt | 2 ++ .../ReflectionReferencesGenerator.kt | 6 ++--- .../StandaloneDeclarationGenerator.kt | 22 ++++++++++++------- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt index e78f7a8a74e..05e39932479 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt @@ -29,8 +29,6 @@ import org.jetbrains.kotlin.ir.builders.irGet import org.jetbrains.kotlin.ir.builders.irTemporary import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction -import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl -import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor import org.jetbrains.kotlin.ir.descriptors.WrappedValueParameterDescriptor import org.jetbrains.kotlin.ir.expressions.* @@ -392,7 +390,7 @@ private fun StatementGenerator.createFunctionForSuspendConversion( val irAdapterFun = context.symbolTable.declareSimpleFunction( adapterFunctionDescriptor ) { irAdapterSymbol -> - IrFunctionImpl( + context.irFactory.createFunction( startOffset, endOffset, IrDeclarationOrigin.ADAPTER_FOR_SUSPEND_CONVERSION, irAdapterSymbol, @@ -418,7 +416,7 @@ private fun StatementGenerator.createFunctionForSuspendConversion( adaptedParameterDescriptor, irParameterType, ) { irValueParameterSymbol -> - IrValueParameterImpl( + context.irFactory.createValueParameter( startOffset, endOffset, IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION, irValueParameterSymbol, Name.identifier("p$index"), diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt index 039bb2af2a5..37cf98f8601 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt @@ -21,8 +21,6 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.IrErrorDeclarationImpl -import org.jetbrains.kotlin.ir.declarations.impl.IrTypeAliasImpl import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.withScope @@ -54,7 +52,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator { is KtScript -> ScriptGenerator(this).generateScriptDeclaration(ktDeclaration) else -> - IrErrorDeclarationImpl( + context.irFactory.createErrorDeclaration( ktDeclaration.startOffsetSkippingComments, ktDeclaration.endOffset, getOrFail(BindingContext.DECLARATION_TO_DESCRIPTOR, ktDeclaration) ) @@ -85,7 +83,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator { private fun generateTypeAliasDeclaration(ktTypeAlias: KtTypeAlias): IrTypeAlias = with(getOrFail(BindingContext.TYPE_ALIAS, ktTypeAlias)) { context.symbolTable.declareTypeAlias(this) { symbol -> - IrTypeAliasImpl( + context.irFactory.createTypeAlias( ktTypeAlias.startOffsetSkippingComments, ktTypeAlias.endOffset, symbol, name, visibility, expandedType.toIrType(), isActual, IrDeclarationOrigin.DEFINED ) @@ -183,4 +181,4 @@ abstract class DeclarationGeneratorExtension(val declarationGenerator: Declarati } fun Generator.createBodyGenerator(scopeOwnerSymbol: IrSymbol) = - BodyGenerator(scopeOwnerSymbol, context) \ No newline at end of file + BodyGenerator(scopeOwnerSymbol, context) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DelegatedPropertyGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DelegatedPropertyGenerator.kt index 80d80736b13..e954bd32b95 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DelegatedPropertyGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DelegatedPropertyGenerator.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.ir.builders.irBlockBody import org.jetbrains.kotlin.ir.builders.irGet import org.jetbrains.kotlin.ir.builders.irReturn import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl import org.jetbrains.kotlin.ir.descriptors.IrLocalDelegatedPropertyDelegateDescriptor import org.jetbrains.kotlin.ir.descriptors.IrLocalDelegatedPropertyDelegateDescriptorImpl import org.jetbrains.kotlin.ir.descriptors.IrPropertyDelegateDescriptor @@ -133,7 +132,7 @@ class DelegatedPropertyGenerator(declarationGenerator: DeclarationGenerator) : D context.symbolTable.declareField( startOffset, endOffset, origin, delegateDescriptor, type ) { - IrFieldImpl( + context.irFactory.createField( startOffset, endOffset, origin, it, delegateDescriptor.name, type, delegateDescriptor.visibility, !delegateDescriptor.isVar, false, delegateDescriptor.dispatchReceiverParameter == null ).apply { diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt index 0c4bfc00b36..ea938efe7fd 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.IrConstructorImpl import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.expressions.IrExpression @@ -253,7 +252,7 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio val origin = IrDeclarationOrigin.DEFINED return context.symbolTable.declareConstructor(constructorDescriptor) { with(constructorDescriptor) { - IrConstructorImpl( + context.irFactory.createConstructor( startOffset, endOffset, origin, it, context.symbolTable.nameProvider.nameForDeclaration(this), visibility, IrUninitializedType, isInline, isEffectivelyExternal(), isPrimary, isExpect ) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt index 716c4270f38..c948df8e929 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorContext.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.NotFoundClasses import org.jetbrains.kotlin.ir.builders.IrGeneratorContext +import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference import org.jetbrains.kotlin.ir.util.ConstantValueGenerator @@ -32,6 +33,7 @@ class GeneratorContext( val constantValueGenerator: ConstantValueGenerator, override val irBuiltIns: IrBuiltIns ) : IrGeneratorContext { + val irFactory: IrFactory get() = symbolTable.irFactory val callToSubstitutedDescriptorMap = mutableMapOf() diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt index 5d4d2661919..adaf474b784 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt @@ -26,8 +26,6 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.declarations.MetadataSource -import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl -import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor import org.jetbrains.kotlin.ir.descriptors.WrappedValueParameterDescriptor import org.jetbrains.kotlin.ir.expressions.* @@ -345,7 +343,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St return context.symbolTable.declareSimpleFunction( adapterFunctionDescriptor ) { irAdapterSymbol -> - IrFunctionImpl( + context.irFactory.createFunction( startOffset, endOffset, IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE, irAdapterSymbol, @@ -400,7 +398,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St return context.symbolTable.declareValueParameter( startOffset, endOffset, IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE, descriptor, type.toIrType() ) { irAdapterParameterSymbol -> - IrValueParameterImpl( + context.irFactory.createValueParameter( startOffset, endOffset, IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE, irAdapterParameterSymbol, diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt index 59db16ac232..bde48c55363 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.psi2ir.generators import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.declarations.impl.* import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType @@ -27,6 +26,7 @@ import org.jetbrains.kotlin.types.KotlinType class StandaloneDeclarationGenerator(private val context: GeneratorContext) { private val typeTranslator = context.typeTranslator private val symbolTable = context.symbolTable + private val irFactory = context.irFactory // TODO: use this generator in psi2ir too @@ -97,9 +97,11 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { return irClass } - fun generateEnumEntry(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, symbol: IrEnumEntrySymbol): IrEnumEntry { + fun generateEnumEntry( + startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, symbol: IrEnumEntrySymbol + ): IrEnumEntry { // TODO: corresponging class? - val irEntry = IrEnumEntryImpl(startOffset, endOffset, origin, symbol, descriptor.name) + val irEntry = irFactory.createEnumEntry(startOffset, endOffset, origin, symbol, descriptor.name) return irEntry } @@ -111,7 +113,9 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { descriptor: TypeAliasDescriptor, symbol: IrTypeAliasSymbol ): IrTypeAlias = with(descriptor) { - IrTypeAliasImpl(startOffset, endOffset, symbol, name, visibility, expandedType.toIrType(), isActual, origin).also { + irFactory.createTypeAlias( + startOffset, endOffset, symbol, name, visibility, expandedType.toIrType(), isActual, origin + ).also { generateGlobalTypeParametersDeclarations(it, declaredTypeParameters) } } @@ -156,7 +160,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { defaultArgumentFactory: IrFunction.(IrValueParameter) -> IrExpressionBody? = { null } ): IrConstructor { val irConstructor = with(descriptor) { - IrConstructorImpl( + irFactory.createConstructor( startOffset, endOffset, origin, symbol, name, visibility, IrUninitializedType, isInline, isEffectivelyExternal(), isPrimary, isExpect ) @@ -182,7 +186,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { defaultArgumentFactory: IrFunction.(IrValueParameter) -> IrExpressionBody? = { null } ): IrSimpleFunction { val irFunction = with(descriptor) { - IrFunctionImpl( + irFactory.createFunction( startOffset, endOffset, origin, symbol, name, visibility, modality, IrUninitializedType, isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect ) @@ -199,8 +203,10 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { return irFunction } - fun generateProperty(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor, symbol: IrPropertySymbol): IrProperty { - val irProperty = IrPropertyImpl( + fun generateProperty( + startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor, symbol: IrPropertySymbol + ): IrProperty { + val irProperty = irFactory.createProperty( startOffset, endOffset, origin, symbol, name = descriptor.name, visibility = descriptor.visibility,