From 76955ce792074d3587eeeef825e6bb0f3749563c Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 17 May 2017 07:27:08 -0700 Subject: [PATCH] Expand tests that jsdoc does not affect typescript code --- .../reference/jsdocInTypeScript.errors.txt | 49 +++++++++++++++++++ .../baselines/reference/jsdocInTypeScript.js | 34 +++++++++++++ .../reference/jsdocInTypeScript.symbols | 19 ------- .../reference/jsdocInTypeScript.types | 19 ------- tests/cases/compiler/jsdocInTypeScript.ts | 21 ++++++++ 5 files changed, 104 insertions(+), 38 deletions(-) create mode 100644 tests/baselines/reference/jsdocInTypeScript.errors.txt delete mode 100644 tests/baselines/reference/jsdocInTypeScript.symbols delete mode 100644 tests/baselines/reference/jsdocInTypeScript.types diff --git a/tests/baselines/reference/jsdocInTypeScript.errors.txt b/tests/baselines/reference/jsdocInTypeScript.errors.txt new file mode 100644 index 00000000000..621aa4677b4 --- /dev/null +++ b/tests/baselines/reference/jsdocInTypeScript.errors.txt @@ -0,0 +1,49 @@ +tests/cases/compiler/jsdocInTypeScript.ts(16,23): error TS2304: Cannot find name 'MyType'. +tests/cases/compiler/jsdocInTypeScript.ts(23,33): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. +tests/cases/compiler/jsdocInTypeScript.ts(25,3): error TS2345: Argument of type '1' is not assignable to parameter of type 'boolean'. +tests/cases/compiler/jsdocInTypeScript.ts(25,15): error TS2339: Property 'length' does not exist on type 'number'. +tests/cases/compiler/jsdocInTypeScript.ts(30,3): error TS2339: Property 'x' does not exist on type '{}'. + + +==== tests/cases/compiler/jsdocInTypeScript.ts (5 errors) ==== + // JSDoc typedef tags are not bound TypeScript files. + /** @typedef {function} T */ + declare const x: T; + + class T { + prop: number; + } + + x.prop; + + // Just to be sure that @property has no impact either. + /** + * @typedef {Object} MyType + * @property {string} yes + */ + declare const myType: MyType; // should error, no such type + ~~~~~~ +!!! error TS2304: Cannot find name 'MyType'. + + // @param type has no effect. + /** + * @param {number} x + * @returns string + */ + function f(x: boolean) { return x * 2; } // Should error + ~ +!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. + // Should fail, because it takes a boolean and returns a number + f(1); f(true).length; + ~ +!!! error TS2345: Argument of type '1' is not assignable to parameter of type 'boolean'. + ~~~~~~ +!!! error TS2339: Property 'length' does not exist on type 'number'. + + // @type has no effect either. + /** @type {{ x?: number }} */ + const z = {}; + z.x = 1; + ~ +!!! error TS2339: Property 'x' does not exist on type '{}'. + \ No newline at end of file diff --git a/tests/baselines/reference/jsdocInTypeScript.js b/tests/baselines/reference/jsdocInTypeScript.js index af4b8b6ce0a..29782e92592 100644 --- a/tests/baselines/reference/jsdocInTypeScript.js +++ b/tests/baselines/reference/jsdocInTypeScript.js @@ -8,6 +8,27 @@ class T { } x.prop; + +// Just to be sure that @property has no impact either. +/** + * @typedef {Object} MyType + * @property {string} yes + */ +declare const myType: MyType; // should error, no such type + +// @param type has no effect. +/** + * @param {number} x + * @returns string + */ +function f(x: boolean) { return x * 2; } // Should error +// Should fail, because it takes a boolean and returns a number +f(1); f(true).length; + +// @type has no effect either. +/** @type {{ x?: number }} */ +const z = {}; +z.x = 1; //// [jsdocInTypeScript.js] @@ -17,3 +38,16 @@ var T = (function () { return T; }()); x.prop; +// @param type has no effect. +/** + * @param {number} x + * @returns string + */ +function f(x) { return x * 2; } // Should error +// Should fail, because it takes a boolean and returns a number +f(1); +f(true).length; +// @type has no effect either. +/** @type {{ x?: number }} */ +var z = {}; +z.x = 1; diff --git a/tests/baselines/reference/jsdocInTypeScript.symbols b/tests/baselines/reference/jsdocInTypeScript.symbols deleted file mode 100644 index 62b6ad3c539..00000000000 --- a/tests/baselines/reference/jsdocInTypeScript.symbols +++ /dev/null @@ -1,19 +0,0 @@ -=== tests/cases/compiler/jsdocInTypeScript.ts === -// JSDoc typedef tags are not bound TypeScript files. -/** @typedef {function} T */ -declare const x: T; ->x : Symbol(x, Decl(jsdocInTypeScript.ts, 2, 13)) ->T : Symbol(T, Decl(jsdocInTypeScript.ts, 2, 19)) - -class T { ->T : Symbol(T, Decl(jsdocInTypeScript.ts, 2, 19)) - - prop: number; ->prop : Symbol(T.prop, Decl(jsdocInTypeScript.ts, 4, 9)) -} - -x.prop; ->x.prop : Symbol(T.prop, Decl(jsdocInTypeScript.ts, 4, 9)) ->x : Symbol(x, Decl(jsdocInTypeScript.ts, 2, 13)) ->prop : Symbol(T.prop, Decl(jsdocInTypeScript.ts, 4, 9)) - diff --git a/tests/baselines/reference/jsdocInTypeScript.types b/tests/baselines/reference/jsdocInTypeScript.types deleted file mode 100644 index 03ff2929e0a..00000000000 --- a/tests/baselines/reference/jsdocInTypeScript.types +++ /dev/null @@ -1,19 +0,0 @@ -=== tests/cases/compiler/jsdocInTypeScript.ts === -// JSDoc typedef tags are not bound TypeScript files. -/** @typedef {function} T */ -declare const x: T; ->x : T ->T : T - -class T { ->T : T - - prop: number; ->prop : number -} - -x.prop; ->x.prop : number ->x : T ->prop : number - diff --git a/tests/cases/compiler/jsdocInTypeScript.ts b/tests/cases/compiler/jsdocInTypeScript.ts index ba9e8dbcbff..08cfb6d5af5 100644 --- a/tests/cases/compiler/jsdocInTypeScript.ts +++ b/tests/cases/compiler/jsdocInTypeScript.ts @@ -7,3 +7,24 @@ class T { } x.prop; + +// Just to be sure that @property has no impact either. +/** + * @typedef {Object} MyType + * @property {string} yes + */ +declare const myType: MyType; // should error, no such type + +// @param type has no effect. +/** + * @param {number} x + * @returns string + */ +function f(x: boolean) { return x * 2; } // Should error +// Should fail, because it takes a boolean and returns a number +f(1); f(true).length; + +// @type has no effect either. +/** @type {{ x?: number }} */ +const z = {}; +z.x = 1;