-
-
Notifications
You must be signed in to change notification settings - Fork 672
Closed
Description
Here's my minimal example: when I follow the instructions here (https://docs.assemblyscript.org/quick-start) with a clean install and clean directory and use this as my index.ts I get a compiler error
index.ts:
// The entry file of your WebAssembly module.
@unmanaged
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
output:
> @ 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
If I don't use the function argument inside the anon function it compiles:
index.ts
// The entry file of your WebAssembly module.
@unmanaged
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;
}
Looks like I can't use function arguments inside anonymous functions? The error message given doesn't seem to be correlated though.
Let me know if you need any more info