diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.js b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.js new file mode 100644 index 00000000000..79f5d7bfd9a --- /dev/null +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.js @@ -0,0 +1,47 @@ +//// [0.js] +// @ts-check +var lol = "hello Lol" +const obj = { + /** @type {string|undefined} */ + foo: undefined, + /** @type {string|undefined} */ + bar: "42", + /** @type {function(number): number} */ + method1(n1) { + return n1 + 42; + }, + /** @type {string} */ + lol, + /** @type {number} */ + ['b' + 'ar1']: 42, +} +obj.foo = 'string' +obj.lol +obj.bar = undefined; +var k = obj.method1(0); +obj.bar1 = "42"; + +//// [0.js] +// @ts-check +var lol = "hello Lol"; +var obj = (_a = { + /** @type {string|undefined} */ + foo: undefined, + /** @type {string|undefined} */ + bar: "42", + /** @type {function(number): number} */ + method1: function (n1) { + return n1 + 42; + }, + /** @type {string} */ + lol: lol + }, + /** @type {number} */ + _a['b' + 'ar1'] = 42, + _a); +obj.foo = 'string'; +obj.lol; +obj.bar = undefined; +var k = obj.method1(0); +obj.bar1 = "42"; +var _a; diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.symbols b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.symbols new file mode 100644 index 00000000000..9a1b1acb8a8 --- /dev/null +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.symbols @@ -0,0 +1,58 @@ +=== tests/cases/conformance/jsdoc/0.js === +// @ts-check +var lol = "hello Lol" +>lol : Symbol(lol, Decl(0.js, 1, 3)) + +const obj = { +>obj : Symbol(obj, Decl(0.js, 2, 5)) + + /** @type {string|undefined} */ + foo: undefined, +>foo : Symbol(foo, Decl(0.js, 2, 13)) +>undefined : Symbol(undefined) + + /** @type {string|undefined} */ + bar: "42", +>bar : Symbol(bar, Decl(0.js, 4, 17)) + + /** @type {function(number): number} */ + method1(n1) { +>method1 : Symbol(method1, Decl(0.js, 6, 12)) +>n1 : Symbol(n1, Decl(0.js, 8, 10)) + + return n1 + 42; +>n1 : Symbol(n1, Decl(0.js, 8, 10)) + + }, + /** @type {string} */ + lol, +>lol : Symbol(lol, Decl(0.js, 10, 4)) + + /** @type {number} */ + ['b' + 'ar1']: 42, +} +obj.foo = 'string' +>obj.foo : Symbol(foo, Decl(0.js, 2, 13)) +>obj : Symbol(obj, Decl(0.js, 2, 5)) +>foo : Symbol(foo, Decl(0.js, 2, 13)) + +obj.lol +>obj.lol : Symbol(lol, Decl(0.js, 10, 4)) +>obj : Symbol(obj, Decl(0.js, 2, 5)) +>lol : Symbol(lol, Decl(0.js, 10, 4)) + +obj.bar = undefined; +>obj.bar : Symbol(bar, Decl(0.js, 4, 17)) +>obj : Symbol(obj, Decl(0.js, 2, 5)) +>bar : Symbol(bar, Decl(0.js, 4, 17)) +>undefined : Symbol(undefined) + +var k = obj.method1(0); +>k : Symbol(k, Decl(0.js, 19, 3)) +>obj.method1 : Symbol(method1, Decl(0.js, 6, 12)) +>obj : Symbol(obj, Decl(0.js, 2, 5)) +>method1 : Symbol(method1, Decl(0.js, 6, 12)) + +obj.bar1 = "42"; +>obj : Symbol(obj, Decl(0.js, 2, 5)) + diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.types b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.types new file mode 100644 index 00000000000..39ae9d39c8e --- /dev/null +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.types @@ -0,0 +1,76 @@ +=== tests/cases/conformance/jsdoc/0.js === +// @ts-check +var lol = "hello Lol" +>lol : string +>"hello Lol" : "hello Lol" + +const obj = { +>obj : { [x: string]: any; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; } +>{ /** @type {string|undefined} */ foo: undefined, /** @type {string|undefined} */ bar: "42", /** @type {function(number): number} */ method1(n1) { return n1 + 42; }, /** @type {string} */ lol, /** @type {number} */ ['b' + 'ar1']: 42,} : { [x: string]: any; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; } + + /** @type {string|undefined} */ + foo: undefined, +>foo : string | undefined +>undefined : undefined + + /** @type {string|undefined} */ + bar: "42", +>bar : string | undefined +>"42" : "42" + + /** @type {function(number): number} */ + method1(n1) { +>method1 : (n1: any) => any +>n1 : any + + return n1 + 42; +>n1 + 42 : any +>n1 : any +>42 : 42 + + }, + /** @type {string} */ + lol, +>lol : string + + /** @type {number} */ + ['b' + 'ar1']: 42, +>'b' + 'ar1' : string +>'b' : "b" +>'ar1' : "ar1" +>42 : 42 +} +obj.foo = 'string' +>obj.foo = 'string' : "string" +>obj.foo : string | undefined +>obj : { [x: string]: any; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; } +>foo : string | undefined +>'string' : "string" + +obj.lol +>obj.lol : string +>obj : { [x: string]: any; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; } +>lol : string + +obj.bar = undefined; +>obj.bar = undefined : undefined +>obj.bar : string | undefined +>obj : { [x: string]: any; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; } +>bar : string | undefined +>undefined : undefined + +var k = obj.method1(0); +>k : number +>obj.method1(0) : number +>obj.method1 : (arg0: number) => number +>obj : { [x: string]: any; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; } +>method1 : (arg0: number) => number +>0 : 0 + +obj.bar1 = "42"; +>obj.bar1 = "42" : "42" +>obj.bar1 : any +>obj : { [x: string]: any; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; } +>bar1 : any +>"42" : "42" + diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.errors.txt b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.errors.txt new file mode 100644 index 00000000000..007bb61ab7d --- /dev/null +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.errors.txt @@ -0,0 +1,39 @@ +tests/cases/conformance/jsdoc/0.js(5,3): error TS2322: Type 'number' is not assignable to type 'string | undefined'. +tests/cases/conformance/jsdoc/0.js(7,3): error TS2322: Type '(n1: any) => string' is not assignable to type '(arg0: number) => number'. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/jsdoc/0.js(11,3): error TS2322: Type '(n1: any) => string' is not assignable to type '(arg0: number) => number'. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/jsdoc/0.js(13,3): error TS2322: Type 'undefined' is not assignable to type 'string'. +tests/cases/conformance/jsdoc/0.js(17,5): error TS2322: Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/jsdoc/0.js (5 errors) ==== + // @ts-check + var lol; + const obj = { + /** @type {string|undefined} */ + bar: 42, + ~~~~~~~ +!!! error TS2322: Type 'number' is not assignable to type 'string | undefined'. + /** @type {function(number): number} */ + method1(n1) { + ~~~~~~~ +!!! error TS2322: Type '(n1: any) => string' is not assignable to type '(arg0: number) => number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + return "42"; + }, + /** @type {function(number): number} */ + method2: (n1) => "lol", + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type '(n1: any) => string' is not assignable to type '(arg0: number) => number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + /** @type {string} */ + lol + ~~~ +!!! error TS2322: Type 'undefined' is not assignable to type 'string'. + } + lol = "string" + /** @type {string} */ + var s = obj.method1(0); + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.js b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.js new file mode 100644 index 00000000000..ee2a2b76dcd --- /dev/null +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.js @@ -0,0 +1,37 @@ +//// [0.js] +// @ts-check +var lol; +const obj = { + /** @type {string|undefined} */ + bar: 42, + /** @type {function(number): number} */ + method1(n1) { + return "42"; + }, + /** @type {function(number): number} */ + method2: (n1) => "lol", + /** @type {string} */ + lol +} +lol = "string" +/** @type {string} */ +var s = obj.method1(0); + +//// [0.js] +// @ts-check +var lol; +var obj = { + /** @type {string|undefined} */ + bar: 42, + /** @type {function(number): number} */ + method1: function (n1) { + return "42"; + }, + /** @type {function(number): number} */ + method2: function (n1) { return "lol"; }, + /** @type {string} */ + lol: lol +}; +lol = "string"; +/** @type {string} */ +var s = obj.method1(0); diff --git a/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty1.ts b/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty1.ts index b45f3f0cc51..a0f98b1cd59 100644 --- a/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty1.ts +++ b/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty1.ts @@ -9,16 +9,18 @@ const obj = { /** @type {string|undefined} */ foo: undefined, /** @type {string|undefined} */ - bar: 42, + bar: "42", /** @type {function(number): number} */ method1(n1) { return n1 + 42; }, /** @type {string} */ - lol + lol, + /** @type {number} */ + ['b' + 'ar1']: 42, } obj.foo = 'string' -obj.foo; obj.lol obj.bar = undefined; -var k = obj.method1(0); \ No newline at end of file +var k = obj.method1(0); +obj.bar1 = "42"; \ No newline at end of file diff --git a/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty2.ts b/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty2.ts index 26285838137..3ef19f73d7f 100644 --- a/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty2.ts +++ b/tests/cases/conformance/jsdoc/checkJsdocTypeTagOnObjectProperty2.ts @@ -4,17 +4,19 @@ // @filename: 0.js // @ts-check +var lol; const obj = { - /** @type {string|undefined} */ - foo: undefined, /** @type {string|undefined} */ bar: 42, /** @type {function(number): number} */ method1(n1) { - return (n1 + 42).toString() + return "42"; }, + /** @type {function(number): number} */ + method2: (n1) => "lol", /** @type {string} */ lol } -var lol = "string" -obj.foo = 5 +lol = "string" +/** @type {string} */ +var s = obj.method1(0); \ No newline at end of file