From 08171aab5fddf94f78454d17c56284b93cde7182 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 16 Feb 2023 15:33:39 -0800 Subject: [PATCH 1/2] Fix overloadTag2 test --- .../baselines/reference/overloadTag2.errors.txt | 8 +++----- tests/baselines/reference/overloadTag2.js | 2 ++ tests/baselines/reference/overloadTag2.symbols | 17 +++++++++-------- tests/baselines/reference/overloadTag2.types | 11 ++++++----- tests/cases/conformance/jsdoc/overloadTag2.ts | 1 + 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/tests/baselines/reference/overloadTag2.errors.txt b/tests/baselines/reference/overloadTag2.errors.txt index d6faad296ce71..158c88330fe6d 100644 --- a/tests/baselines/reference/overloadTag2.errors.txt +++ b/tests/baselines/reference/overloadTag2.errors.txt @@ -1,8 +1,7 @@ -tests/cases/conformance/jsdoc/overloadTag2.js(25,20): error TS7006: Parameter 'b' implicitly has an 'any' type. -tests/cases/conformance/jsdoc/overloadTag2.js(30,9): error TS2554: Expected 1-2 arguments, but got 0. +tests/cases/conformance/jsdoc/overloadTag2.js(31,9): error TS2554: Expected 1-2 arguments, but got 0. -==== tests/cases/conformance/jsdoc/overloadTag2.js (2 errors) ==== +==== tests/cases/conformance/jsdoc/overloadTag2.js (1 errors) ==== export class Foo { #a = true ? 1 : "1" #b @@ -26,10 +25,9 @@ tests/cases/conformance/jsdoc/overloadTag2.js(30,9): error TS2554: Expected 1-2 *//** * @constructor * @param {number | string} a + * @param {number} [b] */ constructor(a, b) { - ~ -!!! error TS7006: Parameter 'b' implicitly has an 'any' type. this.#a = a this.#b = b } diff --git a/tests/baselines/reference/overloadTag2.js b/tests/baselines/reference/overloadTag2.js index 04af61ffbbdb4..c97caa77147cc 100644 --- a/tests/baselines/reference/overloadTag2.js +++ b/tests/baselines/reference/overloadTag2.js @@ -22,6 +22,7 @@ export class Foo { *//** * @constructor * @param {number | string} a + * @param {number} [b] */ constructor(a, b) { this.#a = a @@ -57,6 +58,7 @@ export class Foo { */ /** * @constructor * @param {number | string} a + * @param {number} [b] */ constructor(a, b) { this.#a = a; diff --git a/tests/baselines/reference/overloadTag2.symbols b/tests/baselines/reference/overloadTag2.symbols index 1e7bca466e87b..edfb2be02226f 100644 --- a/tests/baselines/reference/overloadTag2.symbols +++ b/tests/baselines/reference/overloadTag2.symbols @@ -27,35 +27,36 @@ export class Foo { *//** * @constructor * @param {number | string} a + * @param {number} [b] */ constructor(a, b) { ->a : Symbol(a, Decl(overloadTag2.js, 24, 16)) ->b : Symbol(b, Decl(overloadTag2.js, 24, 18)) +>a : Symbol(a, Decl(overloadTag2.js, 25, 16)) +>b : Symbol(b, Decl(overloadTag2.js, 25, 18)) this.#a = a >this.#a : Symbol(Foo.#a, Decl(overloadTag2.js, 0, 18)) >this : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) ->a : Symbol(a, Decl(overloadTag2.js, 24, 16)) +>a : Symbol(a, Decl(overloadTag2.js, 25, 16)) this.#b = b >this.#b : Symbol(Foo.#b, Decl(overloadTag2.js, 1, 23)) >this : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) ->b : Symbol(b, Decl(overloadTag2.js, 24, 18)) +>b : Symbol(b, Decl(overloadTag2.js, 25, 18)) } } var a = new Foo() ->a : Symbol(a, Decl(overloadTag2.js, 29, 3)) +>a : Symbol(a, Decl(overloadTag2.js, 30, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) var b = new Foo('str') ->b : Symbol(b, Decl(overloadTag2.js, 30, 3)) +>b : Symbol(b, Decl(overloadTag2.js, 31, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) var c = new Foo(2) ->c : Symbol(c, Decl(overloadTag2.js, 31, 3)) +>c : Symbol(c, Decl(overloadTag2.js, 32, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) var d = new Foo('str', 2) ->d : Symbol(d, Decl(overloadTag2.js, 32, 3)) +>d : Symbol(d, Decl(overloadTag2.js, 33, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) diff --git a/tests/baselines/reference/overloadTag2.types b/tests/baselines/reference/overloadTag2.types index 45fee2091e348..22d454592bca9 100644 --- a/tests/baselines/reference/overloadTag2.types +++ b/tests/baselines/reference/overloadTag2.types @@ -10,7 +10,7 @@ export class Foo { >"1" : "1" #b ->#b : any +>#b : number | undefined /** * Should not have an implicit any error, because constructor's return type is always implicit @@ -31,10 +31,11 @@ export class Foo { *//** * @constructor * @param {number | string} a + * @param {number} [b] */ constructor(a, b) { >a : string | number ->b : any +>b : number | undefined this.#a = a >this.#a = a : string | number @@ -43,10 +44,10 @@ export class Foo { >a : string | number this.#b = b ->this.#b = b : any ->this.#b : any +>this.#b = b : number | undefined +>this.#b : number | undefined >this : this ->b : any +>b : number | undefined } } var a = new Foo() diff --git a/tests/cases/conformance/jsdoc/overloadTag2.ts b/tests/cases/conformance/jsdoc/overloadTag2.ts index e6acf59b3800f..2f3886bafdca3 100644 --- a/tests/cases/conformance/jsdoc/overloadTag2.ts +++ b/tests/cases/conformance/jsdoc/overloadTag2.ts @@ -28,6 +28,7 @@ export class Foo { *//** * @constructor * @param {number | string} a + * @param {number} [b] */ constructor(a, b) { this.#a = a From 9d689a8e6e556dbddeddf9d84a066de902f0e106 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 16 Feb 2023 15:38:15 -0800 Subject: [PATCH 2/2] Revert and accept --- .../baselines/reference/overloadTag2.errors.txt | 12 +++++++++--- tests/baselines/reference/overloadTag2.js | 2 -- tests/baselines/reference/overloadTag2.symbols | 17 ++++++++--------- tests/baselines/reference/overloadTag2.types | 11 +++++------ tests/cases/conformance/jsdoc/overloadTag2.ts | 1 - 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/tests/baselines/reference/overloadTag2.errors.txt b/tests/baselines/reference/overloadTag2.errors.txt index 158c88330fe6d..e3b54ad441fd7 100644 --- a/tests/baselines/reference/overloadTag2.errors.txt +++ b/tests/baselines/reference/overloadTag2.errors.txt @@ -1,7 +1,9 @@ -tests/cases/conformance/jsdoc/overloadTag2.js(31,9): error TS2554: Expected 1-2 arguments, but got 0. +tests/cases/conformance/jsdoc/overloadTag2.js(14,9): error TS2394: This overload signature is not compatible with its implementation signature. +tests/cases/conformance/jsdoc/overloadTag2.js(25,20): error TS7006: Parameter 'b' implicitly has an 'any' type. +tests/cases/conformance/jsdoc/overloadTag2.js(30,9): error TS2554: Expected 1-2 arguments, but got 0. -==== tests/cases/conformance/jsdoc/overloadTag2.js (1 errors) ==== +==== tests/cases/conformance/jsdoc/overloadTag2.js (3 errors) ==== export class Foo { #a = true ? 1 : "1" #b @@ -16,6 +18,9 @@ tests/cases/conformance/jsdoc/overloadTag2.js(31,9): error TS2554: Expected 1-2 /** * @constructor * @overload + ~~~~~~~~ +!!! error TS2394: This overload signature is not compatible with its implementation signature. +!!! related TS2750 tests/cases/conformance/jsdoc/overloadTag2.js:25:5: The implementation signature is declared here. * @param {number} a */ /** @@ -25,9 +30,10 @@ tests/cases/conformance/jsdoc/overloadTag2.js(31,9): error TS2554: Expected 1-2 *//** * @constructor * @param {number | string} a - * @param {number} [b] */ constructor(a, b) { + ~ +!!! error TS7006: Parameter 'b' implicitly has an 'any' type. this.#a = a this.#b = b } diff --git a/tests/baselines/reference/overloadTag2.js b/tests/baselines/reference/overloadTag2.js index c97caa77147cc..04af61ffbbdb4 100644 --- a/tests/baselines/reference/overloadTag2.js +++ b/tests/baselines/reference/overloadTag2.js @@ -22,7 +22,6 @@ export class Foo { *//** * @constructor * @param {number | string} a - * @param {number} [b] */ constructor(a, b) { this.#a = a @@ -58,7 +57,6 @@ export class Foo { */ /** * @constructor * @param {number | string} a - * @param {number} [b] */ constructor(a, b) { this.#a = a; diff --git a/tests/baselines/reference/overloadTag2.symbols b/tests/baselines/reference/overloadTag2.symbols index edfb2be02226f..1e7bca466e87b 100644 --- a/tests/baselines/reference/overloadTag2.symbols +++ b/tests/baselines/reference/overloadTag2.symbols @@ -27,36 +27,35 @@ export class Foo { *//** * @constructor * @param {number | string} a - * @param {number} [b] */ constructor(a, b) { ->a : Symbol(a, Decl(overloadTag2.js, 25, 16)) ->b : Symbol(b, Decl(overloadTag2.js, 25, 18)) +>a : Symbol(a, Decl(overloadTag2.js, 24, 16)) +>b : Symbol(b, Decl(overloadTag2.js, 24, 18)) this.#a = a >this.#a : Symbol(Foo.#a, Decl(overloadTag2.js, 0, 18)) >this : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) ->a : Symbol(a, Decl(overloadTag2.js, 25, 16)) +>a : Symbol(a, Decl(overloadTag2.js, 24, 16)) this.#b = b >this.#b : Symbol(Foo.#b, Decl(overloadTag2.js, 1, 23)) >this : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) ->b : Symbol(b, Decl(overloadTag2.js, 25, 18)) +>b : Symbol(b, Decl(overloadTag2.js, 24, 18)) } } var a = new Foo() ->a : Symbol(a, Decl(overloadTag2.js, 30, 3)) +>a : Symbol(a, Decl(overloadTag2.js, 29, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) var b = new Foo('str') ->b : Symbol(b, Decl(overloadTag2.js, 31, 3)) +>b : Symbol(b, Decl(overloadTag2.js, 30, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) var c = new Foo(2) ->c : Symbol(c, Decl(overloadTag2.js, 32, 3)) +>c : Symbol(c, Decl(overloadTag2.js, 31, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) var d = new Foo('str', 2) ->d : Symbol(d, Decl(overloadTag2.js, 33, 3)) +>d : Symbol(d, Decl(overloadTag2.js, 32, 3)) >Foo : Symbol(Foo, Decl(overloadTag2.js, 0, 0)) diff --git a/tests/baselines/reference/overloadTag2.types b/tests/baselines/reference/overloadTag2.types index 22d454592bca9..45fee2091e348 100644 --- a/tests/baselines/reference/overloadTag2.types +++ b/tests/baselines/reference/overloadTag2.types @@ -10,7 +10,7 @@ export class Foo { >"1" : "1" #b ->#b : number | undefined +>#b : any /** * Should not have an implicit any error, because constructor's return type is always implicit @@ -31,11 +31,10 @@ export class Foo { *//** * @constructor * @param {number | string} a - * @param {number} [b] */ constructor(a, b) { >a : string | number ->b : number | undefined +>b : any this.#a = a >this.#a = a : string | number @@ -44,10 +43,10 @@ export class Foo { >a : string | number this.#b = b ->this.#b = b : number | undefined ->this.#b : number | undefined +>this.#b = b : any +>this.#b : any >this : this ->b : number | undefined +>b : any } } var a = new Foo() diff --git a/tests/cases/conformance/jsdoc/overloadTag2.ts b/tests/cases/conformance/jsdoc/overloadTag2.ts index 2f3886bafdca3..e6acf59b3800f 100644 --- a/tests/cases/conformance/jsdoc/overloadTag2.ts +++ b/tests/cases/conformance/jsdoc/overloadTag2.ts @@ -28,7 +28,6 @@ export class Foo { *//** * @constructor * @param {number | string} a - * @param {number} [b] */ constructor(a, b) { this.#a = a