Skip to content

Commit 5d697c1

Browse files
committed
Only expose assertions in debug mode
1 parent f1d425b commit 5d697c1

File tree

1 file changed

+35
-32
lines changed
  • crates/wasm-bindgen-cli-support/src

1 file changed

+35
-32
lines changed

crates/wasm-bindgen-cli-support/src/ts.rs

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -120,17 +120,22 @@ impl Js {
120120
match *arg {
121121
shared::Type::Number => {
122122
dst.push_str("number");
123-
self.expose_assert_num();
124-
arg_conversions.push_str(&format!("_assertNum({});\n", name));
123+
if self.debug {
124+
self.expose_assert_num();
125+
arg_conversions.push_str(&format!("_assertNum({});\n", name));
126+
}
125127
pass(&name)
126128
}
127129
shared::Type::Boolean => {
128130
dst.push_str("boolean");
129-
self.expose_assert_bool();
130-
arg_conversions.push_str(&format!("\
131-
const bool{i} = _assertBoolean({name});
132-
", name = name, i = i));
133-
pass(&format!("bool{i}", i = i))
131+
if self.debug {
132+
self.expose_assert_bool();
133+
arg_conversions.push_str(&format!("\
134+
_assertBoolean({name});
135+
", name = name));
136+
} else {
137+
}
138+
pass(&format!("arg{i} ? 1 : 0", i = i))
134139
}
135140
shared::Type::BorrowedStr |
136141
shared::Type::String => {
@@ -151,19 +156,26 @@ impl Js {
151156
shared::Type::ByRef(ref s) |
152157
shared::Type::ByMutRef(ref s) => {
153158
dst.push_str(s);
154-
self.expose_assert_class();
155-
arg_conversions.push_str(&format!("\
156-
const ptr{i} = _assertClass({arg}, {struct_});
157-
", i = i, arg = name, struct_ = s));
158-
pass(&format!("ptr{}", i));
159+
if self.debug {
160+
self.expose_assert_class();
161+
arg_conversions.push_str(&format!("\
162+
_assertClass({arg}, {struct_});
163+
", arg = name, struct_ = s));
164+
}
165+
pass(&format!("{}.__wasmPtr", name));
159166
}
160167
shared::Type::ByValue(ref s) => {
161168
dst.push_str(s);
162-
self.expose_assert_class();
169+
if self.debug {
170+
self.expose_assert_class();
171+
arg_conversions.push_str(&format!("\
172+
_assertClass({arg}, {struct_});
173+
", arg = name, struct_ = s));
174+
}
163175
arg_conversions.push_str(&format!("\
164-
const ptr{i} = _assertClass({arg}, {struct_});
176+
const ptr{i} = {arg}.__wasmPtr;
165177
{arg}.__wasmPtr = 0;
166-
", i = i, arg = name, struct_ = s));
178+
", i = i, arg = name));
167179
pass(&format!("ptr{}", i));
168180
}
169181
shared::Type::JsObject => {
@@ -313,37 +325,33 @@ impl Js {
313325
}
314326
ts_dst.push_str("): ");
315327
dst.push_str("): ");
316-
let mut convert = None;
317-
match import.ret {
328+
let invoc = format!("_imports.{}({})", import.name, invocation);
329+
let invoc = match import.ret {
318330
Some(shared::Type::Number) => {
319331
ts_dst.push_str("number");
320332
dst.push_str("number");
333+
invoc
321334
}
322335
Some(shared::Type::Boolean) => {
323336
ts_dst.push_str("boolean");
324337
dst.push_str("number");
325-
convert = Some("_assertBoolean");
326-
self.expose_assert_bool();
338+
format!("{} ? 1 : 0", invoc)
327339
}
328340
Some(shared::Type::JsObject) => {
329341
ts_dst.push_str("any");
330342
dst.push_str("number");
331343
self.expose_add_heap_object();
332-
convert = Some("addHeapObject");
344+
format!("addHeapObject({})", invoc)
333345
}
334346
None => {
335347
ts_dst.push_str("void");
336348
dst.push_str("void");
349+
invoc
337350
}
338351
_ => unimplemented!(),
339-
}
352+
};
340353
ts_dst.push_str("\n");
341354
dst.push_str(" {\n");
342-
let invoc = format!("_imports.{}({})", import.name, invocation);
343-
let invoc = match convert {
344-
Some(s) => format!("{}({})", s, invoc),
345-
None => invoc,
346-
};
347355
dst.push_str(&format!("return {};\n}}", invoc));
348356

349357
(dst, ts_dst)
@@ -819,14 +827,9 @@ impl Js {
819827
return
820828
}
821829
self.globals.push_str("\
822-
function _assertBoolean(n: boolean): number {
830+
function _assertBoolean(n: boolean) {
823831
if (typeof(n) !== 'boolean')
824832
throw new Error('expected a boolean argument');
825-
if (n) {
826-
return 1;
827-
} else {
828-
return 0;
829-
}
830833
}
831834
");
832835
}

0 commit comments

Comments
 (0)