diff --git a/CHANGELOG.md b/CHANGELOG.md index 745e56ecbab..d28bef07beb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ * String enums now generate private TypeScript types but only if used. [#4174](https://github.com/rustwasm/wasm-bindgen/pull/4174) +* Remove unnecessary JSDoc type annotations from generated `.d.ts` files + [#4187](https://github.com/rustwasm/wasm-bindgen/pull/4187) + ### Fixed * Fixed methods with `self: &Self` consuming the object. diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index e23e3190c39..22bd9246e6a 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -2712,7 +2712,7 @@ __wbg_set_wasm(wasm);" match &export.kind { AuxExportKind::Function(name) => { if let Some(ts_sig) = ts_sig { - self.typescript.push_str(&js_docs); + self.typescript.push_str(&ts_docs); self.typescript.push_str("export function "); self.typescript.push_str(name); self.typescript.push_str(ts_sig); @@ -2730,7 +2730,7 @@ __wbg_set_wasm(wasm);" } exported.has_constructor = true; - exported.push(&js_docs, "constructor", "", &code, ts_sig); + exported.push("constructor", "", &js_docs, &code, &ts_docs, ts_sig); } AuxExportKind::Method { class, @@ -2783,7 +2783,7 @@ __wbg_set_wasm(wasm);" } }; - exported.push(&js_docs, name, &prefix, &code, ts); + exported.push(name, &prefix, &js_docs, &code, &ts_docs, ts); } } } @@ -4287,20 +4287,21 @@ fn property_accessor(name: &str) -> String { impl ExportedClass { fn push( &mut self, - docs: &str, function_name: &str, function_prefix: &str, + js_docs: &str, js: &str, + ts_docs: &str, ts: Option<&str>, ) { - self.contents.push_str(docs); + self.contents.push_str(js_docs); self.contents.push_str(function_prefix); self.contents.push_str(function_name); self.contents.push_str(js); self.contents.push('\n'); if let Some(ts) = ts { - if !docs.is_empty() { - for line in docs.lines() { + if !ts_docs.is_empty() { + for line in ts_docs.lines() { self.typescript.push_str(" "); self.typescript.push_str(line); self.typescript.push('\n'); diff --git a/crates/cli/tests/reference/add.d.ts b/crates/cli/tests/reference/add.d.ts index 73827342908..f11140413c4 100644 --- a/crates/cli/tests/reference/add.d.ts +++ b/crates/cli/tests/reference/add.d.ts @@ -1,14 +1,4 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @param {number} a - * @param {number} b - * @returns {number} - */ export function add_u32(a: number, b: number): number; -/** - * @param {number} a - * @param {number} b - * @returns {number} - */ export function add_i32(a: number, b: number): number; diff --git a/crates/cli/tests/reference/async-number.d.ts b/crates/cli/tests/reference/async-number.d.ts index bc2b7e88a3c..e1bf9ff0bcc 100644 --- a/crates/cli/tests/reference/async-number.d.ts +++ b/crates/cli/tests/reference/async-number.d.ts @@ -1,6 +1,3 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @returns {Promise} - */ export function foo(): Promise; diff --git a/crates/cli/tests/reference/async-void.d.ts b/crates/cli/tests/reference/async-void.d.ts index b5b19290f13..e1866a433c0 100644 --- a/crates/cli/tests/reference/async-void.d.ts +++ b/crates/cli/tests/reference/async-void.d.ts @@ -1,6 +1,3 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @returns {Promise} - */ export function foo(): Promise; diff --git a/crates/cli/tests/reference/builder.d.ts b/crates/cli/tests/reference/builder.d.ts index 3a92bacdb43..032da9dcf73 100644 --- a/crates/cli/tests/reference/builder.d.ts +++ b/crates/cli/tests/reference/builder.d.ts @@ -2,8 +2,5 @@ /* eslint-disable */ export class ClassBuilder { free(): void; - /** - * @returns {ClassBuilder} - */ static builder(): ClassBuilder; } diff --git a/crates/cli/tests/reference/enums.d.ts b/crates/cli/tests/reference/enums.d.ts index 2eb6f824e83..1c830d483f9 100644 --- a/crates/cli/tests/reference/enums.d.ts +++ b/crates/cli/tests/reference/enums.d.ts @@ -1,24 +1,8 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @param {Color} color - * @returns {Color} - */ export function enum_echo(color: Color): Color; -/** - * @param {Color | undefined} [color] - * @returns {Color | undefined} - */ export function option_enum_echo(color?: Color): Color | undefined; -/** - * @param {Color} color - * @returns {ColorName} - */ export function get_name(color: Color): ColorName; -/** - * @param {ColorName | undefined} [color] - * @returns {ColorName | undefined} - */ export function option_string_enum_echo(color?: ColorName): ColorName | undefined; /** * A color. diff --git a/crates/cli/tests/reference/pointers.d.ts b/crates/cli/tests/reference/pointers.d.ts index 145577b8753..314eae5938b 100644 --- a/crates/cli/tests/reference/pointers.d.ts +++ b/crates/cli/tests/reference/pointers.d.ts @@ -1,12 +1,4 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @param {number} input - * @returns {number} - */ export function const_pointer(input: number): number; -/** - * @param {number} input - * @returns {number} - */ export function mut_pointer(input: number): number; diff --git a/crates/cli/tests/reference/raw.d.ts b/crates/cli/tests/reference/raw.d.ts index fb474c2fabd..6dc3f5c628f 100644 --- a/crates/cli/tests/reference/raw.d.ts +++ b/crates/cli/tests/reference/raw.d.ts @@ -1,19 +1,8 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @param {number} test - * @returns {number} - */ export function test1(test: number): number; export class Test { free(): void; - /** - * @param {number} test - * @returns {Test} - */ static test1(test: number): Test; - /** - * @param {number} test - */ test2(test: number): void; } diff --git a/crates/cli/tests/reference/result-string.d.ts b/crates/cli/tests/reference/result-string.d.ts index 2e707cffa43..561576d42cb 100644 --- a/crates/cli/tests/reference/result-string.d.ts +++ b/crates/cli/tests/reference/result-string.d.ts @@ -1,6 +1,3 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @returns {string} - */ export function exported(): string; diff --git a/crates/cli/tests/reference/skip-jsdoc.d.ts b/crates/cli/tests/reference/skip-jsdoc.d.ts index f295e357377..0d908f65acc 100644 --- a/crates/cli/tests/reference/skip-jsdoc.d.ts +++ b/crates/cli/tests/reference/skip-jsdoc.d.ts @@ -7,3 +7,7 @@ * @returns to whence I came */ export function docme(arg: number): number; +/** + * Regular documentation. + */ +export function i_has_docs(arg: number): number; diff --git a/crates/cli/tests/reference/skip-jsdoc.js b/crates/cli/tests/reference/skip-jsdoc.js index 66a9f7870d1..f3c1bc442c2 100644 --- a/crates/cli/tests/reference/skip-jsdoc.js +++ b/crates/cli/tests/reference/skip-jsdoc.js @@ -14,3 +14,13 @@ export function docme(arg) { return ret >>> 0; } +/** + * Regular documentation. + * @param {number} arg + * @returns {number} + */ +export function i_has_docs(arg) { + const ret = wasm.i_has_docs(arg); + return ret >>> 0; +} + diff --git a/crates/cli/tests/reference/skip-jsdoc.rs b/crates/cli/tests/reference/skip-jsdoc.rs index b4a131615c1..2aa14eb1359 100644 --- a/crates/cli/tests/reference/skip-jsdoc.rs +++ b/crates/cli/tests/reference/skip-jsdoc.rs @@ -8,3 +8,9 @@ use wasm_bindgen::prelude::*; pub fn docme(arg: u32) -> u32 { arg + 1 } + +/// Regular documentation. +#[wasm_bindgen] +pub fn i_has_docs(arg: u32) -> u32 { + arg + 1 +} diff --git a/crates/cli/tests/reference/skip-jsdoc.wat b/crates/cli/tests/reference/skip-jsdoc.wat index e81e8942422..0179e135da5 100644 --- a/crates/cli/tests/reference/skip-jsdoc.wat +++ b/crates/cli/tests/reference/skip-jsdoc.wat @@ -1,9 +1,11 @@ (module $reference_test.wasm (type (;0;) (func (param i32) (result i32))) (func $docme (;0;) (type 0) (param i32) (result i32)) + (func $i_has_docs (;1;) (type 0) (param i32) (result i32)) (memory (;0;) 17) (export "memory" (memory 0)) (export "docme" (func $docme)) + (export "i_has_docs" (func $i_has_docs)) (@custom "target_features" (after code) "\02+\0fmutable-globals+\08sign-ext") ) diff --git a/crates/cli/tests/reference/string-arg.d.ts b/crates/cli/tests/reference/string-arg.d.ts index d103e1337e1..a03bca0b63b 100644 --- a/crates/cli/tests/reference/string-arg.d.ts +++ b/crates/cli/tests/reference/string-arg.d.ts @@ -1,6 +1,3 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @param {string} a - */ export function foo(a: string): void; diff --git a/crates/cli/tests/reference/web-sys.d.ts b/crates/cli/tests/reference/web-sys.d.ts index b60ab59ae5b..b9ec2febe5b 100644 --- a/crates/cli/tests/reference/web-sys.d.ts +++ b/crates/cli/tests/reference/web-sys.d.ts @@ -1,12 +1,6 @@ /* tslint:disable */ /* eslint-disable */ -/** - * @returns {URL} - */ export function get_url(): URL; -/** - * @returns {MediaSourceEnum} - */ export function get_media_source(): MediaSourceEnum; /** *The `MediaSourceEnum` enum.