wit-bindgen-cli 0.56.0

CLI tool to generate bindings for WIT documents and the component model.
//@ dependencies = ['resources', 'leaf']
//@ wac = 'compose.wac'

package test:resources;

world leaf {
  export imports: interface {
    resource y {
      constructor(a: s32);
      get-a: func() -> s32;
      set-a: func(a: s32);
      add: static func(y: y, a: s32) -> y;
    }
  }
}

world resources {
  import imports: interface {
    resource y {
      constructor(a: s32);
      get-a: func() -> s32;
      set-a: func(a: s32);
      add: static func(y: y, a: s32) -> y;
    }
  }

  export exports: interface {
    resource x {
      constructor(a: s32);
      get-a: func() -> s32;
      set-a: func(a: s32);
      add: static func(x: x, a: s32) -> x;
    }

    resource z {
      constructor(a: s32);
      get-a: func() -> s32;

      num-dropped: static func() -> u32;
    }

    add: func(a: borrow<z>, b: borrow<z>) -> own<z>;

    consume: func(x: x);

    resource kebab-case {
      constructor(a: u32);
      get-a: func() -> u32;
      take-owned: static func(k: own<kebab-case>) -> u32;
    }

    test-imports: func() -> result<_, string>;
  }
}

world runner {
  import exports: interface {
    resource x {
      constructor(a: s32);
      get-a: func() -> s32;
      set-a: func(a: s32);
      add: static func(x: x, a: s32) -> x;
    }

    resource z {
      constructor(a: s32);
      get-a: func() -> s32;

      num-dropped: static func() -> u32;
    }

    add: func(a: borrow<z>, b: borrow<z>) -> own<z>;

    consume: func(x: x);

    resource kebab-case {
      constructor(a: u32);
      get-a: func() -> u32;
      take-owned: static func(k: own<kebab-case>) -> u32;
    }

    test-imports: func() -> result<_, string>;
  }

  export run: func();
}