Skip to content

rust: Stream/future bindings fail with root-level export function #1433

@alexcrichton

Description

@alexcrichton

This input:

wit_bindgen::generate!({
    inline: r#"
        package a:b;

        world w {
            use t.{r};
            export f: func(p: stream<r>);
        }

        interface t {
            record r {
                x: u32,
            }
        }
    "#,
});

fn main() {}

fails with:

$ cargo build --target wasm32-wasip1
   Compiling wat v0.1.0 (/home/alex/code/wat)
error[E0412]: cannot find type `R` in this scope
  --> src/main.rs:1:1
   |
 1 | / wit_bindgen::generate!({
 2 | |     inline: r#"
 3 | |         package a:b;
...  |
15 | |     "#,
16 | | });
   | |__^ not found in this scope
   |
   = help: consider importing one of these items:
           crate::R
           crate::a::b::t::R
   = note: this error originates in the macro `wit_bindgen::generate` (in Nightly builds, run with -Z macro-backtrace for more info)

For more information about this error, try `rustc --explain E0412`.
error: could not compile `wat` (bin "wat") due to 1 previous error

Metadata

Metadata

Assignees

No one assigned

    Labels

    asyncRelated to async/streams in the component model.gen-rustRelated to bindings for Rust-compiled-to-WebAssembly

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions