Files
endorphin-aster-vm/crates/compiler/examples/calls.endor
T

22 lines
1.0 KiB
Plaintext

// compiler/tests/pipeline.rs 将此文件作为模块编译,加载后由测试调用 main,检查前向全局函数查找。
// The callee is declared after main. Parameters, locals and calls use wordcode.
// 模块入口由宿主/测试在模块执行完成后调用;先 echo,再把局部结果交给 relay。
function main(): String {
// 直接调用后面声明的 echo,返回值写入当前帧的 message 局部槽。
let message = echo("函数调用已接通")
// 将局部值作为实参传给 relay,返回其结果给宿主。
return relay(message)
}
// main 调用的中转函数;value 是当前帧参数槽,继续调用全局 echo。
function relay(value: String): String {
// 普通函数调用逐层返回相同字符串,验证嵌套调用的参数传递与返回。
return echo(value)
}
// main 和 relay 共用的恒等函数,参数值直接成为调用结果。
function echo(value: String): String {
// 无额外转换,直接把参数值交给调用者。
return value
}