Expand tests that jsdoc does not affect typescript code

This commit is contained in:
Andy Hanson 2017-05-17 07:27:08 -07:00
parent dc40f5d6b9
commit 76955ce792
5 changed files with 104 additions and 38 deletions

View file

@ -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 '{}'.

View file

@ -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;

View file

@ -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))

View file

@ -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

View file

@ -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;