Check JSDocPropetyTag (#37544)

Fixes #37040
This commit is contained in:
Sheetal Nandi
2020-03-23 17:20:35 -07:00
committed by GitHub
parent 38e717a244
commit 11043b0951
5 changed files with 81 additions and 0 deletions
+6
View File
@@ -30833,6 +30833,10 @@ namespace ts {
}
}
function checkJSDocPropertyTag(node: JSDocPropertyTag) {
checkSourceElement(node.typeExpression);
}
function checkJSDocFunctionType(node: JSDocFunctionType): void {
if (produceDiagnostics && !node.type && !isJSDocConstructSignature(node)) {
reportImplicitAny(node, anyType);
@@ -34362,6 +34366,8 @@ namespace ts {
return checkJSDocTypeTag(node as JSDocTypeTag);
case SyntaxKind.JSDocParameterTag:
return checkJSDocParameterTag(node as JSDocParameterTag);
case SyntaxKind.JSDocPropertyTag:
return checkJSDocPropertyTag(node as JSDocPropertyTag);
case SyntaxKind.JSDocFunctionType:
checkJSDocFunctionType(node as JSDocFunctionType);
// falls through
@@ -0,0 +1,18 @@
/a.js(3,15): error TS2304: Cannot find name 'sting'.
==== /a.js (1 errors) ====
/**
* @typedef MyType
* @property {sting} [x]
~~~~~
!!! error TS2304: Cannot find name 'sting'.
*/
/** @param {MyType} p */
export function f(p) { }
==== /b.js (0 errors) ====
import { f } from "./a.js"
f({ x: 42 })
@@ -0,0 +1,19 @@
=== /a.js ===
/**
* @typedef MyType
* @property {sting} [x]
*/
/** @param {MyType} p */
export function f(p) { }
>f : Symbol(f, Decl(a.js, 0, 0))
>p : Symbol(p, Decl(a.js, 6, 18))
=== /b.js ===
import { f } from "./a.js"
>f : Symbol(f, Decl(b.js, 0, 8))
f({ x: 42 })
>f : Symbol(f, Decl(b.js, 0, 8))
>x : Symbol(x, Decl(b.js, 1, 3))
@@ -0,0 +1,22 @@
=== /a.js ===
/**
* @typedef MyType
* @property {sting} [x]
*/
/** @param {MyType} p */
export function f(p) { }
>f : (p: MyType) => void
>p : MyType
=== /b.js ===
import { f } from "./a.js"
>f : (p: import("/a").MyType) => void
f({ x: 42 })
>f({ x: 42 }) : void
>f : (p: import("/a").MyType) => void
>{ x: 42 } : { x: number; }
>x : number
>42 : 42
@@ -0,0 +1,16 @@
// @allowJs: true
// @checkJs: true
// @noEmit: true
// @Filename: /a.js
/**
* @typedef MyType
* @property {sting} [x]
*/
/** @param {MyType} p */
export function f(p) { }
// @Filename: /b.js
import { f } from "./a.js"
f({ x: 42 })