IR API: change val ... : MutableList to var ...: List for most lists

All mutable state for IR declarations should be either:
- var (mutable properties)
- or class member list

Mutable properties are straightforward to persist.

The class member list is handled in a special way.
This commit is contained in:
Anton Bannykh
2020-01-14 14:12:51 +03:00
parent 0bcde9dffc
commit e8fba8bcb6
62 changed files with 203 additions and 200 deletions
@@ -40,8 +40,10 @@ class AnnotationGenerator(context: GeneratorContext) : IrElementVisitorVoid {
declaration.descriptor.backingField
else declaration.descriptor
annotatedDescriptor?.annotations?.mapNotNullTo(declaration.annotations) {
constantValueGenerator.generateAnnotationConstructorCall(it)
if (annotatedDescriptor != null) {
declaration.annotations += annotatedDescriptor.annotations.mapNotNull {
constantValueGenerator.generateAnnotationConstructorCall(it)
}
}
}
}
@@ -87,7 +87,7 @@ class ClassGenerator(
).buildWithScope { irClass ->
declarationGenerator.generateGlobalTypeParametersDeclarations(irClass, classDescriptor.declaredTypeParameters)
classDescriptor.typeConstructor.supertypes.mapTo(irClass.superTypes) {
irClass.superTypes = classDescriptor.typeConstructor.supertypes.map {
it.toIrType()
}
@@ -126,7 +126,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
from: List<TypeParameterDescriptor>,
declareTypeParameter: (Int, Int, TypeParameterDescriptor) -> IrTypeParameter
) {
from.mapTo(irTypeParametersOwner.typeParameters) { typeParameterDescriptor ->
irTypeParametersOwner.typeParameters += from.map { typeParameterDescriptor ->
val ktTypeParameterDeclaration = DescriptorToSourceUtils.getSourceFromDescriptor(typeParameterDescriptor)
val startOffset = ktTypeParameterDeclaration.startOffsetOrUndefined
val endOffset = ktTypeParameterDeclaration.endOffsetOrUndefined
@@ -286,7 +286,7 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
val bodyGenerator = createBodyGenerator(irFunction.symbol)
// Declare all the value parameters up first.
functionDescriptor.valueParameters.mapTo(irFunction.valueParameters) { valueParameterDescriptor ->
irFunction.valueParameters += functionDescriptor.valueParameters.map { valueParameterDescriptor ->
val ktParameter = DescriptorToSourceUtils.getSourceFromDescriptor(valueParameterDescriptor) as? KtParameter
declareParameter(valueParameterDescriptor, ktParameter, irFunction)
}
@@ -71,7 +71,9 @@ class ModuleGenerator(override val context: GeneratorContext) : Generator {
for (ktAnnotationEntry in ktFile.annotationEntries) {
val annotationDescriptor = getOrFail(BindingContext.ANNOTATION, ktAnnotationEntry)
irFile.annotations.addIfNotNull(constantValueGenerator.generateAnnotationConstructorCall(annotationDescriptor))
constantValueGenerator.generateAnnotationConstructorCall(annotationDescriptor)?.let {
irFile.annotations += it
}
}
for (ktDeclaration in ktFile.declarations) {
@@ -379,7 +379,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
irAdapterFun.dispatchReceiverParameter = null
irAdapterFun.extensionReceiverParameter = null
ktExpectedParameterTypes.mapIndexedTo(irAdapterFun.valueParameters) { index, ktExpectedParameterType ->
irAdapterFun.valueParameters += ktExpectedParameterTypes.mapIndexed { index, ktExpectedParameterType ->
val adapterValueParameterDescriptor = WrappedValueParameterDescriptor()
context.symbolTable.declareValueParameter(
startOffset, endOffset,