Add a wasmtime::component::bindgen! macro (#5317)
* Import Wasmtime support from the `wit-bindgen` repo This commit imports the `wit-bindgen-gen-host-wasmtime-rust` crate from the `wit-bindgen` repository into the upstream Wasmtime repository. I've chosen to not import the full history here since the crate is relatively small and doesn't have a ton of complexity. While the history of the crate is quite long the current iteration of the crate's history is relatively short so there's not a ton of import there anyway. The thinking is that this can now continue to evolve in-tree. * Refactor `wasmtime-component-macro` a bit Make room for a `wit_bindgen` macro to slot in. * Add initial support for a `bindgen` macro * Add tests for `wasmtime::component::bindgen!` * Improve error forgetting `async` feature * Add end-to-end tests for bindgen * Add an audit of `unicase` * Add a license to the test-helpers crate * Add vet entry for `pulldown-cmark` * Update publish script with new crate * Try to fix publish script * Update audits * Update lock file
This commit is contained in:
65
crates/component-macro/tests/codegen/unions.wit
Normal file
65
crates/component-macro/tests/codegen/unions.wit
Normal file
@@ -0,0 +1,65 @@
|
||||
interface unions {
|
||||
/// A union of all of the integral types
|
||||
union all-integers {
|
||||
/// Bool is equivalent to a 1 bit integer
|
||||
/// and is treated that way in some languages
|
||||
bool,
|
||||
u8, u16, u32, u64,
|
||||
s8, s16, s32, s64
|
||||
}
|
||||
union all-floats {
|
||||
float32, float64
|
||||
}
|
||||
union all-text {
|
||||
char, string
|
||||
}
|
||||
|
||||
// Returns the same case as the input but with 1 added
|
||||
add-one-integer: func(num: all-integers) -> all-integers
|
||||
// Returns the same case as the input but with 1 added
|
||||
add-one-float: func(num: all-floats) -> all-floats
|
||||
// Returns the same case as the input but with the first character replaced
|
||||
replace-first-char: func(text: all-text, letter: char) -> all-text
|
||||
|
||||
// Returns the index of the case provided
|
||||
identify-integer: func(num: all-integers) -> u8
|
||||
// Returns the index of the case provided
|
||||
identify-float: func(num: all-floats) -> u8
|
||||
// Returns the index of the case provided
|
||||
identify-text: func(text: all-text) -> u8
|
||||
|
||||
union duplicated-s32 {
|
||||
/// The first s32
|
||||
s32,
|
||||
/// The second s32
|
||||
s32,
|
||||
/// The third s32
|
||||
s32
|
||||
}
|
||||
|
||||
// Returns the same case as the input but with 1 added
|
||||
add-one-duplicated: func(num: duplicated-s32) -> duplicated-s32
|
||||
|
||||
// Returns the index of the case provided
|
||||
identify-duplicated: func(num: duplicated-s32) -> u8
|
||||
|
||||
/// A type containing numeric types that are distinct in most languages
|
||||
union distinguishable-num {
|
||||
/// A Floating Point Number
|
||||
float64,
|
||||
/// A Signed Integer
|
||||
s64
|
||||
}
|
||||
|
||||
// Returns the same case as the input but with 1 added
|
||||
add-one-distinguishable-num: func(num: distinguishable-num) -> distinguishable-num
|
||||
|
||||
// Returns the index of the case provided
|
||||
identify-distinguishable-num: func(num: distinguishable-num) -> u8
|
||||
}
|
||||
|
||||
world the-unions {
|
||||
import import-unions: unions
|
||||
export export-unions: unions
|
||||
default export unions
|
||||
}
|
||||
Reference in New Issue
Block a user