Skip to content

Commit

Permalink
Merge pull request #1491 from RReverser/more-variadic
Browse files Browse the repository at this point in the history
Add missing variadic bindings for string methods
  • Loading branch information
alexcrichton authored Apr 26, 2019
2 parents 26f9d86 + 85eea18 commit 4865b08
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
12 changes: 12 additions & 0 deletions crates/js-sys/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3400,6 +3400,14 @@ extern "C" {
///
/// There are a few bindings to `from_char_code` in `js-sys`: `from_char_code1`, `from_char_code2`, etc...
/// with different arities.
///
/// Additionally, this function accepts `u16` for character codes, but
/// fixing others requires a breaking change release
/// (see https://github.com/rustwasm/wasm-bindgen/issues/1460 for details).
#[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode, variadic)]
pub fn from_char_code(char_codes: &[u16]) -> JsString;

/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
#[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)]
pub fn from_char_code1(a: u32) -> JsString;

Expand Down Expand Up @@ -3432,6 +3440,10 @@ extern "C" {
///
/// There are a few bindings to `from_code_point` in `js-sys`: `from_code_point1`, `from_code_point2`, etc...
/// with different arities.
#[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint, variadic)]
pub fn from_code_point(code_points: &[u32]) -> Result<JsString, JsValue>;

/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)
#[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)]
pub fn from_code_point1(a: u32) -> Result<JsString, JsValue>;

Expand Down
14 changes: 14 additions & 0 deletions crates/js-sys/tests/wasm/JsString.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,16 @@ fn from_char_code() {
JsString::from_char_code4(codes[0], codes[1], codes[2], codes[3]),
"½+¾="
);

let codes_u16: Vec<u16> = codes.into_iter().map(|code| {
assert!(code <= u32::from(u16::max_value()));
code as u16
}).collect();

assert_eq!(
JsString::from_char_code(&codes_u16),
"½+¾="
);
}

#[wasm_bindgen_test]
Expand All @@ -111,6 +121,10 @@ fn from_code_point() {
JsString::from_code_point4(codes[0], codes[1], codes[2], codes[3]).unwrap(),
"☃★♲你"
);
assert_eq!(
JsString::from_code_point(&codes).unwrap(),
"☃★♲你"
);

assert!(!JsString::from_code_point1(0x10FFFF).is_err());
assert!(JsString::from_code_point1(0x110000).is_err());
Expand Down

0 comments on commit 4865b08

Please sign in to comment.