22 lines
1.0 KiB
Plaintext
22 lines
1.0 KiB
Plaintext
// compiler/tests/pipeline.rs 加载模块并调用 main,检查函数值传参及局部名优先于全局声明。
|
|
// A parameter can shadow a module function, and functions are ordinary values.
|
|
// main 把此全局函数作为普通值传入 invoke;实际调用时返回收到的参数。
|
|
function echo(value: String): String {
|
|
// 恒等返回,不改变用于确认调用链的文本。
|
|
return value
|
|
}
|
|
|
|
// main 调用;参数 echo 遮蔽同名模块函数,value 保存待转发的字符串。
|
|
function invoke(echo: Callable, value: String): String {
|
|
// 从局部参数 echo 复制函数值,而非再次查找模块的同名全局。
|
|
let chosen = echo
|
|
// 经局部 chosen 间接调用函数,把 value 作为实参并返回调用结果。
|
|
return chosen(value)
|
|
}
|
|
|
|
// 宿主/测试入口,先取得全局 echo 函数值,再传给 invoke 的同名参数。
|
|
function main(): String {
|
|
// invoke 内部用局部参数解析 echo,最终应原样返回这段文本。
|
|
return invoke(echo, "局部名称优先")
|
|
}
|