[IR] Add returnType to consturcotrs of IrFunctionBase

This commit is contained in:
Svyatoslav Kuzmich
2018-11-19 16:03:32 +03:00
parent fe6b36391d
commit d5f8c63130
31 changed files with 131 additions and 71 deletions
@@ -95,13 +95,13 @@ class JsDeclarationFactory : DeclarationFactory {
symbol,
oldConstructor.name,
oldConstructor.visibility,
oldConstructor.returnType,
oldConstructor.isInline,
oldConstructor.isExternal,
oldConstructor.isPrimary
).also {
descriptor.bind(it)
it.parent = oldConstructor.parent
it.returnType = oldConstructor.returnType
}
newConstructor.copyTypeParametersFrom(oldConstructor)
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
import org.jetbrains.kotlin.ir.symbols.impl.IrVariableSymbolImpl
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
import org.jetbrains.kotlin.ir.util.defaultType
import org.jetbrains.kotlin.name.Name
class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclarationsFile: IrFile) : SharedVariablesManager {
@@ -169,7 +170,7 @@ class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclaration
val declaration = IrConstructorImpl(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION, symbol,
Name.special("<init>"), Visibilities.PUBLIC, false, false, true
Name.special("<init>"), Visibilities.PUBLIC, closureBoxClassDeclaration.defaultType, false, false, true
)
descriptor.bind(declaration)
@@ -140,13 +140,13 @@ object JsIrBuilder {
name,
visibility,
modality,
returnType,
isInline,
isExternal,
isTailrec,
isSuspend
).also {
descriptor.bind(it)
it.returnType = returnType
it.parent = parent
}
}
@@ -417,13 +417,13 @@ class EnumClassTransformer(val context: JsIrBackendContext, private val irClass:
loweredConstructorSymbol,
enumConstructor.name,
enumConstructor.visibility,
enumConstructor.returnType,
enumConstructor.isInline,
enumConstructor.isExternal,
enumConstructor.isPrimary
).apply {
loweredConstructorDescriptor.bind(this)
parent = enumClass
returnType = enumConstructor.returnType
valueParameters += JsIrBuilder.buildValueParameter("name", 0, context.irBuiltIns.stringType).also { it.parent = this }
valueParameters += JsIrBuilder.buildValueParameter("ordinal", 1, context.irBuiltIns.intType).also { it.parent = this }
copyParameterDeclarationsFrom(enumConstructor)
@@ -498,6 +498,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
symbol,
Name.special("<init>"),
irFunction.visibility,
coroutineClass.defaultType,
false,
false,
false
@@ -505,7 +506,6 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
descriptor.bind(declaration)
declaration.parent = coroutineClass
declaration.returnType = coroutineClass.defaultType
declaration.valueParameters += functionParameters.map {
JsIrBuilder.buildValueParameter(it.name, it.index, it.type, it.origin).also { p -> p.parent = declaration }
@@ -567,6 +567,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
symbol,
Name.special("<init>"),
irFunction.visibility,
coroutineClass.defaultType,
false,
false,
false
@@ -574,7 +575,6 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
descriptor.bind(declaration)
declaration.parent = coroutineClass
declaration.returnType = coroutineClass.defaultType
boundParams.mapIndexedTo(declaration.valueParameters) { i, p ->
JsIrBuilder.buildValueParameter(p.name, i, p.type, p.origin).also { it.parent = declaration }
@@ -627,6 +627,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
Name.identifier("create"),
Visibilities.PRIVATE,
Modality.FINAL,
coroutineClass.defaultType,
false,
false,
false,
@@ -703,6 +704,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
Name.identifier("invoke"),
Visibilities.PRIVATE,
Modality.FINAL,
irFunction.returnType,
false,
false,
false,
@@ -712,7 +714,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
descriptor.bind(declaration)
declaration.parent = coroutineClass
declaration.returnType = irFunction.returnType
declaration.dispatchReceiverParameter = coroutineClassThis
declaration.dispatchReceiverParameter = coroutineClassThis.copyTo(declaration)
declaration.overriddenSymbols += suspendFunctionInvokeFunctionDeclaration.symbol
declaration.overriddenSymbols += functionInvokeFunctionDeclaration.symbol
@@ -793,6 +795,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
doResumeFunction.name,
doResumeFunction.visibility,
Modality.FINAL,
context.irBuiltIns.anyNType,
doResumeFunction.isInline,
doResumeFunction.isExternal,
doResumeFunction.isTailrec,
@@ -986,4 +989,4 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
scopeStack.peek()!!.add(declaration)
}
}
}
}
@@ -516,6 +516,7 @@ internal class DeepCopyIrTreeWithDescriptors(val targetDescriptor: FunctionDescr
endOffset = declaration.endOffset,
origin = mapDeclarationOrigin(declaration.origin),
descriptor = descriptor,
returnType = declaration.returnType,
body = declaration.body?.transform(this@InlineCopyIr, null)
).also {
it.setOverrides(context.symbolTable)