Hi, I noticed `wac compose` will fail if the world of the component I'm instantiating includes a type alias like so ```wit world my-component { type my-alias = u32; export foo: func(x: my-alias) -> my-alias; } ``` If I instantiate this in wac ``` let my-component = new wacdebug:my-component {}; ``` it will fail ``` × missing instantiation argument `my-alias` for package `wacdebug:my-component` ╭─[default.wac:3:24] 2 │ 3 │ let my-component = new wacdebug:my-component {}; · ──────────┬────────── · ╰── missing argument `my-alias` ╰──── ``` Instantiating a type alias makes no sense to me, it is not an import. Did I miss anything?
Activity
fibonacci1729 commentedon Feb 6, 2025
This is just a nuance of wit<->component translation/encoding where top-level types (e.g.
my-alias) are implicitly considered imports.For a component targeting your world, if you
wasm-tools print wacdebug.wasm --skeletonyou'll see:To fix this you can tell wac to import any arguments you are not directly providing, i.e.:
leon-thomm commentedon Feb 6, 2025
Ah that works! Maybe wac could have a more telling error here.
why is that? How should I think about imports on the component (encoding) level?