Assemblyscript: 使用匿名函数时 wasm-validator 错误

创建于 2019-11-14  ·  3评论  ·  资料来源: AssemblyScript/assemblyscript

这是我的最小示例:当我按照此处的说明 (https://docs.assemblyscript.org/quick-start) 进行干净安装和干净目录并将其用作我的 index.ts 时,出现编译器错误
索引.ts:

// The entry file of your WebAssembly module.
<strong i="7">@unmanaged</strong>
export class Foo {
  use_anon_function(fn: (value: i32) => i32): Array<i32> {
    return new Array<i32>();
  }
}

export function anon_test(bars: Foo, value: i32): i32 {
    let bar_ids = bars.use_anon_function((bar: i32) =>
      value
    );

    return bar_ids.length;
}

npm run asbuild输出:

> @ asbuild /Users/duncanuszkay/src/github.com/Shopify/temp-delete
> npm run asbuild:untouched && npm run asbuild:optimized


> @ asbuild:untouched /Users/duncanuszkay/src/github.com/Shopify/temp-delete
> asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --sourceMap --validate --debug

[wasm-validator error in function $assembly/index/anon_test~anonymous|0] unexpected false: local.get index must be small enough, on
[i32] (local.get $1)
[wasm-validator error in function $assembly/index/anon_test~anonymous|0] unexpected false: local.get must have proper type, on
[i32] (local.get $1)
ERROR: Validate error
    at /Users/duncanuszkay/src/github.com/Shopify/temp-delete/node_modules/assemblyscript/cli/asc.js:573:25
    at measure (/Users/duncanuszkay/src/github.com/Shopify/temp-delete/node_modules/assemblyscript/cli/asc.js:880:3)
    at Object.main (/Users/duncanuszkay/src/github.com/Shopify/temp-delete/node_modules/assemblyscript/cli/asc.js:570:27)
    at Object.<anonymous> (/Users/duncanuszkay/src/github.com/Shopify/temp-delete/node_modules/assemblyscript/bin/asc:21:26)
    at Module._compile (internal/modules/cjs/loader.js:774:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    at Module.load (internal/modules/cjs/loader.js:641:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:837:10)
    at internal/main/run_main_module.js:17:11

如果我不在 anon 函数中使用函数参数,它会编译:
索引.ts

// The entry file of your WebAssembly module.
<strong i="16">@unmanaged</strong>
export class Foo {
  use_anon_function(fn: (value: i32) => i32): Array<i32> {
    return new Array<i32>();
  }
}

export function anon_test(bars: Foo, value: i32): i32 {
    let bar_ids = bars.use_anon_function((bar: i32) =>
      100
    );

    return bar_ids.length;
}

看起来我不能在匿名函数中使用函数参数? 不过,给出的错误消息似乎并不相关。

如果您需要更多信息,请告诉我

duplicate question

最有用的评论

@DuncanUszkay1在接下来的每日夜间构建中,此类关闭案例将因“AS100:未实施”而提前失败。 错误而不是“未知”验证错误

所有3条评论

您好,目前还不支持关闭。 查看类似的问题/问题:#754、#661、#242、#173 和 #798

@DuncanUszkay1在接下来的每日夜间构建中,此类关闭案例将因“AS100:未实施”而提前失败。 错误而不是“未知”验证错误

由于我们发出了正确的“未实现”错误,并且我们已经有很多与闭包问题相关的问题,我正在关闭它。 请注意 #798 的进展

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Iainmon picture Iainmon  ·  3评论

torch2424 picture torch2424  ·  3评论

drachehavoc picture drachehavoc  ·  6评论

DanielMazurkiewicz picture DanielMazurkiewicz  ·  4评论

MaxGraey picture MaxGraey  ·  4评论