Expand tests that jsdoc does not affect typescript code
This commit is contained in:
parent
dc40f5d6b9
commit
76955ce792
5 changed files with 104 additions and 38 deletions
49
tests/baselines/reference/jsdocInTypeScript.errors.txt
Normal file
49
tests/baselines/reference/jsdocInTypeScript.errors.txt
Normal 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 '{}'.
|
||||
|
|
@ -9,6 +9,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]
|
||||
var T = (function () {
|
||||
|
@ -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;
|
||||
|
|
|
@ -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))
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue