diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt index 60502e52b8d..8290cd7b493 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt @@ -107,7 +107,7 @@ class CallGenerator(statementGenerator: StatementGenerator) : StatementGenerator val constructorSymbol = context.symbolTable.referenceConstructor(descriptor.original) val irCall = IrDelegatingConstructorCallImpl( startOffset, endOffset, - descriptor.returnType.toIrType(), + context.irBuiltIns.unitType, constructorSymbol, descriptor ).apply { diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DataClassMembersGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DataClassMembersGenerator.kt index 5da3859c97e..7de97169d39 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DataClassMembersGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DataClassMembersGenerator.kt @@ -172,7 +172,7 @@ class DataClassMembersGenerator( for (property in properties) { val irPropertyType = property.type.toIrType() val arg1 = irGet(irPropertyType, irThis(), getPropertyGetterSymbol(property)) - val arg2 = irGet(irPropertyType, irGet(irPropertyType, otherWithCast.symbol), getPropertyGetterSymbol(property)) + val arg2 = irGet(irPropertyType, irGet(irType, otherWithCast.symbol), getPropertyGetterSymbol(property)) +irIfThenReturnFalse(irNotEquals(arg1, arg2)) } +irReturnTrue() 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 67f6fa6766a..cdaead48e66 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 @@ -120,6 +120,7 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio ): IrSimpleFunction = declareSimpleFunctionInner(descriptor, ktParameter, IrDeclarationOrigin.DEFAULT_PROPERTY_ACCESSOR).buildWithScope { irAccessor -> declarationGenerator.generateScopedTypeParameterDeclarations(irAccessor, descriptor.typeParameters) + irAccessor.returnType = descriptor.returnType!!.toIrType() FunctionGenerator(declarationGenerator).generateSyntheticFunctionParameterDeclarations(irAccessor) irAccessor.body = generateDefaultAccessorBody(ktParameter, descriptor, irAccessor) } @@ -296,6 +297,7 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio context.symbolTable.declareValueParameter( ktElement.startOffsetOrUndefined, ktElement.endOffsetOrUndefined, IrDeclarationOrigin.DEFINED, - descriptor, descriptor.type.toIrType() + descriptor, descriptor.type.toIrType(), + (descriptor as? ValueParameterDescriptor)?.varargElementType?.toIrType() ) } \ No newline at end of file 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 92e1d7d6bf7..4a97c82f505 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 @@ -30,12 +30,11 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager class GeneratorContext( val configuration: Psi2IrConfiguration, val moduleDescriptor: ModuleDescriptor, - val bindingContext: BindingContext -) : IrGeneratorContext(IrBuiltIns(moduleDescriptor.builtIns)) { + val bindingContext: BindingContext, + val symbolTable: SymbolTable = SymbolTable() +) : IrGeneratorContext(IrBuiltIns(moduleDescriptor.builtIns, symbolTable)) { val sourceManager = PsiSourceManager() - val symbolTable = SymbolTable() - // TODO: inject a correct StorageManager instance, or store NotFoundClasses inside ModuleDescriptor val reflectionTypes = ReflectionTypes(moduleDescriptor, NotFoundClasses(LockBasedStorageManager.NO_LOCKS, moduleDescriptor)) }