File: vendor_prefix.rs

package info (click to toggle)
rustc-web 1.78.0%2Bdfsg1-2~deb12u3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,245,420 kB
  • sloc: xml: 147,985; javascript: 18,022; sh: 11,083; python: 10,265; ansic: 6,172; cpp: 5,023; asm: 4,390; makefile: 4,269
file content (48 lines) | stat: -rw-r--r-- 1,336 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use wasm_bindgen::prelude::*;
use wasm_bindgen_test::*;

#[wasm_bindgen(module = "tests/wasm/vendor_prefix.js")]
extern "C" {
    fn import_me(x: &str);
}

#[wasm_bindgen]
extern "C" {
    #[wasm_bindgen(vendor_prefix = webkit)]
    type MySpecialApi;
    #[wasm_bindgen(constructor)]
    fn new() -> MySpecialApi;
    #[wasm_bindgen(method)]
    fn foo(this: &MySpecialApi) -> u32;

    #[wasm_bindgen(vendor_prefix = webkit)]
    type MySpecialApi2;
    #[wasm_bindgen(constructor)]
    fn new() -> MySpecialApi2;
    #[wasm_bindgen(method)]
    fn foo(this: &MySpecialApi2) -> u32;

    #[wasm_bindgen(vendor_prefix = a, vendor_prefix = b)]
    type MySpecialApi3;
    #[wasm_bindgen(constructor)]
    fn new() -> MySpecialApi3;
    #[wasm_bindgen(method)]
    fn foo(this: &MySpecialApi3) -> u32;

    // This API does not exist at all;
    // test that Rust gets a chance to catch the error (#2437)
    #[wasm_bindgen(vendor_prefix = a, vendor_prefix = b)]
    type MyMissingApi;
    #[wasm_bindgen(constructor, catch)]
    fn new() -> Result<MyMissingApi, JsValue>;
}

#[wasm_bindgen_test]
pub fn polyfill_works() {
    import_me("foo");

    assert_eq!(MySpecialApi::new().foo(), 123);
    assert_eq!(MySpecialApi2::new().foo(), 124);
    assert_eq!(MySpecialApi3::new().foo(), 125);
    assert!(MyMissingApi::new().is_err());
}