Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
152
third-party/vendor/wasm-bindgen/tests/wasm/no_shims.rs
vendored
Normal file
152
third-party/vendor/wasm-bindgen/tests/wasm/no_shims.rs
vendored
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
//! A collection of tests to exercise imports where we don't need to generate a
|
||||
//! JS shim to convert arguments/returns even when Web IDL bindings is not
|
||||
//! implemented.
|
||||
|
||||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen_test::*;
|
||||
|
||||
#[wasm_bindgen(inline_js = "
|
||||
function assert_eq(a, b) {
|
||||
if (a !== b) {
|
||||
throw new Error(`assert_eq failed: ${a} != ${b}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.trivial = function () {};
|
||||
|
||||
module.exports.incoming_bool = function () { return true; };
|
||||
module.exports.incoming_u8 = function () { return 255; };
|
||||
module.exports.incoming_i8 = function () { return -127; };
|
||||
module.exports.incoming_u16 = function () { return 65535; };
|
||||
module.exports.incoming_i16 = function () { return 32767; };
|
||||
module.exports.incoming_u32 = function () { return 4294967295; };
|
||||
module.exports.incoming_i32 = function () { return 0; };
|
||||
module.exports.incoming_f32 = function () { return 1.5; };
|
||||
module.exports.incoming_f64 = function () { return Math.PI; };
|
||||
|
||||
module.exports.outgoing_u8 = function (k) { assert_eq(k, 255); };
|
||||
module.exports.outgoing_i8 = function (i) { assert_eq(i, -127); };
|
||||
module.exports.outgoing_u16 = function (l) { assert_eq(l, 65535); };
|
||||
module.exports.outgoing_i16 = function (j) { assert_eq(j, 32767); };
|
||||
module.exports.outgoing_i32 = function (x) { assert_eq(x, 0); };
|
||||
module.exports.outgoing_f32 = function (y) { assert_eq(y, 1.5); };
|
||||
module.exports.outgoing_f64 = function (pi) { assert_eq(pi, Math.PI); };
|
||||
|
||||
module.exports.many = function (x, y, pi) {
|
||||
assert_eq(x, 0);
|
||||
assert_eq(y, 1.5);
|
||||
assert_eq(pi, Math.PI);
|
||||
return 42;
|
||||
};
|
||||
|
||||
module.exports.works_when_externref_support_is_enabled = function (v) {
|
||||
assert_eq(v, 'hello');
|
||||
return v;
|
||||
};
|
||||
|
||||
module.exports.MyNamespace = {};
|
||||
module.exports.MyNamespace.incoming_namespaced = function () { return 13.37; };
|
||||
module.exports.MyNamespace.outgoing_namespaced = function (w) { assert_eq(13.37, w); };
|
||||
")]
|
||||
extern "C" {
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn trivial();
|
||||
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_bool() -> bool;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_u8() -> u8;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_i8() -> i8;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_u16() -> u16;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_i16() -> i16;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_u32() -> u32;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_i32() -> i32;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_f32() -> f32;
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn incoming_f64() -> f64;
|
||||
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn outgoing_u8(k: u8);
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn outgoing_i8(i: i8);
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn outgoing_u16(l: u16);
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn outgoing_i16(j: i16);
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn outgoing_i32(x: i32);
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn outgoing_f32(y: f32);
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn outgoing_f64(z: f64);
|
||||
|
||||
#[wasm_bindgen(assert_no_shim)]
|
||||
fn many(x: i32, y: f32, z: f64) -> i32;
|
||||
|
||||
#[wasm_bindgen(assert_no_shim, js_namespace = MyNamespace)]
|
||||
fn incoming_namespaced() -> f64;
|
||||
#[wasm_bindgen(assert_no_shim, js_namespace = MyNamespace)]
|
||||
fn outgoing_namespaced(x: f64);
|
||||
|
||||
// Note that this should only skip the JS shim if we have externref support
|
||||
// enabled.
|
||||
//
|
||||
// #[wasm_bindgen(assert_no_shim)]
|
||||
fn works_when_externref_support_is_enabled(v: JsValue) -> JsValue;
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn no_shims() {
|
||||
trivial();
|
||||
|
||||
let k = incoming_u8();
|
||||
assert_eq!(k, 255);
|
||||
outgoing_u8(k);
|
||||
|
||||
let l = incoming_u16();
|
||||
assert_eq!(l, 65535);
|
||||
outgoing_u16(l);
|
||||
|
||||
let m = incoming_u32();
|
||||
assert_eq!(m, 4294967295);
|
||||
|
||||
let i = incoming_i8();
|
||||
assert_eq!(i, -127);
|
||||
outgoing_i8(i);
|
||||
|
||||
let j = incoming_i16();
|
||||
assert_eq!(j, 32767);
|
||||
outgoing_i16(j);
|
||||
|
||||
let x = incoming_i32();
|
||||
assert_eq!(x, 0);
|
||||
outgoing_i32(x);
|
||||
|
||||
let y = incoming_f32();
|
||||
assert_eq!(y, 1.5);
|
||||
outgoing_f32(y);
|
||||
|
||||
let pi = incoming_f64();
|
||||
assert_eq!(pi, std::f64::consts::PI);
|
||||
outgoing_f64(pi);
|
||||
|
||||
let z = many(x, y, pi);
|
||||
assert_eq!(z, 42);
|
||||
|
||||
let w = incoming_namespaced();
|
||||
assert_eq!(w, 13.37);
|
||||
outgoing_namespaced(w);
|
||||
|
||||
let b = incoming_bool();
|
||||
assert!(b);
|
||||
|
||||
let v = JsValue::from("hello");
|
||||
let vv = works_when_externref_support_is_enabled(v.clone());
|
||||
assert_eq!(v, vv);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue