Skip to content

wac expects "instantiation" of type aliaes #152

Open

Description

@leon-thomm

Hi, I noticed wac compose will fail if the world of the component I'm instantiating includes a type alias like so

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

  1. fibonacci1729 commented on Feb 6, 2025

    @fibonacci1729
    Collaborator

    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 --skeleton you'll see:

    (component
      (type (;0;) u32)
      (import "my-alias" (type (;1;) (eq 0)))
      ...
    

    To fix this you can tell wac to import any arguments you are not directly providing, i.e.:

    let my-component = new wacdebug:my-component {...};
    
  2. leon-thomm commented on Feb 6, 2025

    @leon-thomm
    Author

    Ah that works! Maybe wac could have a more telling error here.

    top-level types (e.g. my-alias) are implicitly considered imports

    why is that? How should I think about imports on the component (encoding) level?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions