Skip to content

Commit 41d74d9

Browse files
committed
Remove IrUninitializedType #1
1 parent d773707 commit 41d74d9

File tree

4 files changed

+19
-8
lines changed

4 files changed

+19
-8
lines changed

compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,11 +247,10 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
247247
): IrConstructor =
248248
context.symbolTable.declareConstructor(
249249
ktConstructorElement.pureStartOffset, ktConstructorElement.pureEndOffset, IrDeclarationOrigin.DEFINED,
250-
constructorDescriptor
250+
constructorDescriptor, returnType = constructorDescriptor.returnType.toIrType()
251251
).buildWithScope { irConstructor ->
252252
generateValueParameterDeclarations(irConstructor, ktParametersElement, null)
253253
irConstructor.body = createBodyGenerator(irConstructor.symbol).generateBody()
254-
irConstructor.returnType = constructorDescriptor.returnType.toIrType()
255254
}
256255

257256
fun generateSyntheticFunctionParameterDeclarations(irFunction: IrFunction) {

compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,9 @@ class DeclarationStubGenerator(
154154
return referenced.owner
155155
}
156156

157-
return symbolTable.declareConstructor(
158-
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor.original
159-
) { IrLazyConstructor(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, it, this, typeTranslator) }
157+
return symbolTable.declareConstructor(descriptor.original) {
158+
IrLazyConstructor(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, it, this, typeTranslator)
159+
}
160160
}
161161

162162
private fun KotlinType.toIrType() = typeTranslator.translateType(this)

compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.symbols.*
2727
import org.jetbrains.kotlin.ir.symbols.impl.*
2828
import org.jetbrains.kotlin.ir.types.IrType
2929
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
30+
import org.jetbrains.kotlin.ir.types.toIrType
3031
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
3132
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
3233
import org.jetbrains.kotlin.ir.visitors.acceptVoid
@@ -236,14 +237,25 @@ open class SymbolTable : ReferenceSymbolTable {
236237
endOffset: Int,
237238
origin: IrDeclarationOrigin,
238239
descriptor: ClassConstructorDescriptor,
239-
constructorFactory: (IrConstructorSymbol) -> IrConstructor = { IrConstructorImpl(startOffset, endOffset, origin, it, IrUninitializedType) }
240+
returnType: IrType
241+
): IrConstructor =
242+
constructorSymbolTable.declare(
243+
descriptor,
244+
{ IrConstructorSymbolImpl(descriptor) },
245+
{ IrConstructorImpl(startOffset, endOffset, origin, it, returnType) }
246+
)
247+
248+
fun declareConstructor(
249+
descriptor: ClassConstructorDescriptor,
250+
constructorFactory: (IrConstructorSymbol) -> IrConstructor
240251
): IrConstructor =
241252
constructorSymbolTable.declare(
242253
descriptor,
243254
{ IrConstructorSymbolImpl(descriptor) },
244255
constructorFactory
245256
)
246257

258+
247259
override fun referenceConstructor(descriptor: ClassConstructorDescriptor) =
248260
constructorSymbolTable.referenced(descriptor) { IrConstructorSymbolImpl(descriptor) }
249261

plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ interface IrBuilderExtension {
6262
this.startOffset,
6363
this.endOffset,
6464
SERIALIZABLE_PLUGIN_ORIGIN,
65-
descriptor
65+
descriptor,
66+
returnType = descriptor.returnType.toIrType()
6667
)
6768
c.parent = this
68-
c.returnType = descriptor.returnType.toIrType()
6969
c.createParameterDeclarations()
7070
c.body = compilerContext.createIrBuilder(c.symbol).irBlockBody { bodyGen(c) }
7171
this.addMember(c)

0 commit comments

Comments
 (0)