Add support for variadic arguments in WebIDL

This commit is contained in:
Anton Danilkin
2018-09-06 20:00:38 +03:00
parent 3c41d39b16
commit 1c0a34ff8e
7 changed files with 103 additions and 27 deletions

View File

@ -110,6 +110,13 @@ global.OptionalAndUnionArguments = class OptionalAndUnionArguments {
}
};
global.Variadic = class Variadic {
constructor() {}
sum(...values) {
return values.reduce((a, b) => a + b, 0);
}
};
global.PartialInterface = class PartialInterface {
get un() {
return 1;

View File

@ -90,6 +90,12 @@ fn optional_and_union_arguments() {
assert_eq!(f.m_with_b_and_str_and_opt_bool("abc", false, "5", Some(true)), "string, abc, boolean, false, string, 5, boolean, true");
}
#[wasm_bindgen_test]
fn variadic() {
let f = Variadic::new().unwrap();
assert_eq!(f.sum(Box::new([1, 2, 3, 4, 5])), 15);
}
#[wasm_bindgen_test]
fn unforgeable_is_structural() {
let f = Unforgeable::new().unwrap();

View File

@ -57,6 +57,11 @@ interface OptionalAndUnionArguments {
);
};
[Constructor()]
interface Variadic {
short sum(short... values);
};
[Constructor()]
interface Unforgeable {
[Unforgeable] readonly attribute short uno;