Assemblyscript: wasm-validator-Fehler bei der Verwendung anonymer Funktionen

Erstellt am 14. Nov. 2019  ·  3Kommentare  ·  Quelle: AssemblyScript/assemblyscript

Hier ist mein Minimalbeispiel: Wenn ich den Anweisungen hier (https://docs.assemblyscript.org/quick-start) mit einer sauberen Installation und einem sauberen Verzeichnis folge und dies als meine index.ts verwende, erhalte ich einen Compilerfehler
index.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 Ausgabe:

> @ 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

Wenn ich das Funktionsargument nicht in der Anon-Funktion verwende, wird es kompiliert:
index.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;
}

Sieht so aus, als ob ich keine Funktionsargumente in anonymen Funktionen verwenden kann? Die angezeigte Fehlermeldung scheint jedoch nicht korreliert zu sein.

Lass es mich wissen, wenn du weitere Informationen brauchst

duplicate question

Hilfreichster Kommentar

@DuncanUszkay1 Im nächsten täglichen Nacht-Build werden solche Schließungsfälle mit "AS100: Nicht implementiert" früher fehlschlagen. Fehler statt "unbekannter" Validierungsfehler

Alle 3 Kommentare

Hallo, Verschlüsse werden noch nicht unterstützt. Siehe ähnliche Fragen / Probleme: #754, #661, #242, #173 und #798

@DuncanUszkay1 Im nächsten täglichen Nacht-Build werden solche Schließungsfälle mit "AS100: Nicht implementiert" früher fehlschlagen. Fehler statt "unbekannter" Validierungsfehler

Da wir den richtigen "nicht implementierten" Fehler ausgeben und wir bereits eine Reihe von Problemen im Zusammenhang mit dem Problem der Schließung haben, schließe ich dies. Bitte achten Sie auf den Fortschritt in #798

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen