Add WebIDL support for the ArrayBuffer type

Should help enable a slew of new bindings as well.
This commit is contained in:
Alex Crichton
2018-08-04 13:51:22 -07:00
parent 57fd1dedd6
commit a98b5ea2a0
10 changed files with 48 additions and 6 deletions

View File

@ -12,8 +12,9 @@ path = 'lib.rs'
wasm-bindgen-webidl = { path = '../webidl' }
[dev-dependencies]
wasm-bindgen-test = { path = '../test' }
js-sys = { path = '../js-sys' }
wasm-bindgen = { path = '../..' }
wasm-bindgen-test = { path = '../test' }
[[test]]
name = 'wasm'

View File

@ -0,0 +1,8 @@
global.ArrayBufferTest = class {
getBuffer() {
return new ArrayBuffer(3);
}
setBuffer(x) {
// ...
}
};

View File

@ -0,0 +1,11 @@
use wasm_bindgen_test::*;
include!(concat!(env!("OUT_DIR"), "/array_buffer.rs"));
#[wasm_bindgen_test]
fn take_and_return_a_bunch_of_slices() {
let f = ArrayBufferTest::new().unwrap();
let x = f.get_buffer();
f.set_buffer(None);
f.set_buffer(Some(x));
}

View File

@ -0,0 +1,5 @@
[Constructor]
interface ArrayBufferTest {
ArrayBuffer getBuffer();
void setBuffer(ArrayBuffer? b);
};

View File

@ -1,8 +1,9 @@
extern crate wasm_bindgen_webidl;
use std::fs;
use std::env;
use std::fs;
use std::path::PathBuf;
use std::process::Command;
fn main() {
let idls = fs::read_dir(".")
@ -41,6 +42,10 @@ fn main() {
}}
"#, js_file.display(), i));
fs::write(out_file, generated_rust).unwrap();
fs::write(&out_file, generated_rust).unwrap();
// Attempt to run rustfmt, but don't worry if it fails or if it isn't
// installed, this is just to help with debugging
drop(Command::new("rustfmt").arg(&out_file).status());
}
}

View File

@ -1,10 +1,12 @@
#![feature(use_extern_macros)]
extern crate wasm_bindgen_test;
extern crate js_sys;
extern crate wasm_bindgen;
extern crate wasm_bindgen_test;
pub mod array;
pub mod array_buffer;
pub mod consts;
pub mod enums;
pub mod simple;
pub mod throws;
pub mod array;