diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index 96ea33d4..0a98b407 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -3,6 +3,7 @@ use crate::descriptor::{Descriptor, VectorKind}; use crate::{Bindgen, EncodeInto, OutputMode}; use failure::{bail, Error, ResultExt}; use std::collections::{HashMap, HashSet}; +use std::env; use walrus::{MemoryId, Module}; use wasm_bindgen_wasm_interpreter::Interpreter; @@ -2797,11 +2798,14 @@ impl<'a, 'b> SubContext<'a, 'b> { // module syntax in the snippet to a CommonJS module, which is in theory // not that hard but is a chunk of work to do. if is_local_snippet && self.cx.config.mode.nodejs() { - bail!( - "local JS snippets are not supported with `--nodejs`; \ - see rustwasm/rfcs#6 for more details, but this restriction \ - will be lifted in the future" - ); + // have a small unergonomic escape hatch for our webidl-tests tests + if env::var("WBINDGEN_I_PROMISE_JS_SYNTAX_WORKS_IN_NODE").is_err() { + bail!( + "local JS snippets are not supported with `--nodejs`; \ + see rustwasm/rfcs#6 for more details, but this restriction \ + will be lifted in the future" + ); + } } // Similar to `--no-modules`, only allow vendor prefixes basically for web diff --git a/crates/webidl-tests/build.rs b/crates/webidl-tests/build.rs index 53c4be12..3f4e2fb4 100644 --- a/crates/webidl-tests/build.rs +++ b/crates/webidl-tests/build.rs @@ -21,14 +21,13 @@ fn main() { let out_file = out_dir.join(path.file_name().unwrap()).with_extension("rs"); - let js_file = path.with_extension("js").canonicalize().unwrap(); generated_rust.push_str(&format!( r#" pub mod import_script {{ use wasm_bindgen::prelude::*; use wasm_bindgen_test::*; - #[wasm_bindgen(module = r"{}")] + #[wasm_bindgen(module = "/{}.js")] extern "C" {{ fn not_actually_a_function{1}(x: &str); }} @@ -41,7 +40,7 @@ fn main() { }} }} "#, - js_file.display(), + path.file_stem().unwrap().to_str().unwrap(), i ));