compiler: fix incorrect "exported function" panic
Because the parentHandle parameter wasn't always set to the right value, the coroutine lowering pass would sometimes panic with "trying to make exported function async" even though there was no exported function involved. Therefore, it should unconditionally be set to avoid this. The parent function doesn't always have the parentHandle function parameter set because it can only be set after defining a function, not when it is only declared.
Этот коммит содержится в:
родитель
6ad631539d
коммит
e9d549d211
1 изменённых файлов: 1 добавлений и 3 удалений
|
@ -465,9 +465,7 @@ func (c *compilerContext) getInterfaceInvokeWrapper(f *ir.Function) llvm.Value {
|
|||
paramTypes := append([]llvm.Type{c.i8ptrType}, fnType.ParamTypes()[len(expandedReceiverType):]...)
|
||||
wrapFnType := llvm.FunctionType(fnType.ReturnType(), paramTypes, false)
|
||||
wrapper = llvm.AddFunction(c.mod, wrapperName, wrapFnType)
|
||||
if f.LLVMFn.LastParam().Name() == "parentHandle" {
|
||||
wrapper.LastParam().SetName("parentHandle")
|
||||
}
|
||||
wrapper.LastParam().SetName("parentHandle")
|
||||
|
||||
wrapper.SetLinkage(llvm.InternalLinkage)
|
||||
wrapper.SetUnnamedAddr(true)
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче