Skip to content

Commit

Permalink
Remove IrUninitializedType #1
Browse files Browse the repository at this point in the history
  • Loading branch information
skuzmich committed Nov 17, 2018
1 parent d773707 commit 41d74d9
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 8 deletions.
Expand Up @@ -247,11 +247,10 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
): IrConstructor =
context.symbolTable.declareConstructor(
ktConstructorElement.pureStartOffset, ktConstructorElement.pureEndOffset, IrDeclarationOrigin.DEFINED,
constructorDescriptor
constructorDescriptor, returnType = constructorDescriptor.returnType.toIrType()
).buildWithScope { irConstructor ->
generateValueParameterDeclarations(irConstructor, ktParametersElement, null)
irConstructor.body = createBodyGenerator(irConstructor.symbol).generateBody()
irConstructor.returnType = constructorDescriptor.returnType.toIrType()
}

fun generateSyntheticFunctionParameterDeclarations(irFunction: IrFunction) {
Expand Down
Expand Up @@ -154,9 +154,9 @@ class DeclarationStubGenerator(
return referenced.owner
}

return symbolTable.declareConstructor(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor.original
) { IrLazyConstructor(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, it, this, typeTranslator) }
return symbolTable.declareConstructor(descriptor.original) {
IrLazyConstructor(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, it, this, typeTranslator)
}
}

private fun KotlinType.toIrType() = typeTranslator.translateType(this)
Expand Down
Expand Up @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.symbols.impl.*
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
import org.jetbrains.kotlin.ir.types.toIrType
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
Expand Down Expand Up @@ -236,14 +237,25 @@ open class SymbolTable : ReferenceSymbolTable {
endOffset: Int,
origin: IrDeclarationOrigin,
descriptor: ClassConstructorDescriptor,
constructorFactory: (IrConstructorSymbol) -> IrConstructor = { IrConstructorImpl(startOffset, endOffset, origin, it, IrUninitializedType) }
returnType: IrType
): IrConstructor =
constructorSymbolTable.declare(
descriptor,
{ IrConstructorSymbolImpl(descriptor) },
{ IrConstructorImpl(startOffset, endOffset, origin, it, returnType) }
)

fun declareConstructor(
descriptor: ClassConstructorDescriptor,
constructorFactory: (IrConstructorSymbol) -> IrConstructor
): IrConstructor =
constructorSymbolTable.declare(
descriptor,
{ IrConstructorSymbolImpl(descriptor) },
constructorFactory
)


override fun referenceConstructor(descriptor: ClassConstructorDescriptor) =
constructorSymbolTable.referenced(descriptor) { IrConstructorSymbolImpl(descriptor) }

Expand Down
Expand Up @@ -62,10 +62,10 @@ interface IrBuilderExtension {
this.startOffset,
this.endOffset,
SERIALIZABLE_PLUGIN_ORIGIN,
descriptor
descriptor,
returnType = descriptor.returnType.toIrType()
)
c.parent = this
c.returnType = descriptor.returnType.toIrType()
c.createParameterDeclarations()
c.body = compilerContext.createIrBuilder(c.symbol).irBlockBody { bodyGen(c) }
this.addMember(c)
Expand Down

0 comments on commit 41d74d9

Please sign in to comment.