Skip to content

Commit

Permalink
Add undefined checks for malformed type tags
Browse files Browse the repository at this point in the history
  • Loading branch information
RyanCavanaugh committed Feb 11, 2016
1 parent 1256352 commit 5af2c47
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2621,7 +2621,7 @@ namespace ts {
function getJSDocTypeForVariableLikeDeclarationFromJSDocComment(declaration: VariableLikeDeclaration): JSDocType {
// First, see if this node has an @type annotation on it directly.
const typeTag = getJSDocTypeTag(declaration);
if (typeTag) {
if (typeTag && typeTag.typeExpression) {
return typeTag.typeExpression.type;
}

Expand All @@ -2631,7 +2631,7 @@ namespace ts {

// @type annotation might have been on the variable statement, try that instead.
const annotation = getJSDocTypeTag(declaration.parent.parent);
if (annotation) {
if (annotation && annotation.typeExpression) {
return annotation.typeExpression.type;
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/harness/harness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -947,6 +947,9 @@ namespace Harness {
}
}
}
else if (name === 'suppressOutputPathCheck') {
options.suppressOutputPathCheck = true;
}
else {
throw new Error(`Unknown compiler option '${name}'.`);
}
Expand Down
17 changes: 17 additions & 0 deletions tests/baselines/reference/malformedTags.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//// [myFile02.js]

/**
* Checks if `value` is classified as an `Array` object.
*
* @type Function
*/
var isArray = Array.isArray;


//// [myFile02.js]
/**
* Checks if `value` is classified as an `Array` object.
*
* @type Function
*/
var isArray = Array.isArray;
13 changes: 13 additions & 0 deletions tests/baselines/reference/malformedTags.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== tests/cases/conformance/salsa/myFile02.js ===

/**
* Checks if `value` is classified as an `Array` object.
*
* @type Function
*/
var isArray = Array.isArray;
>isArray : Symbol(isArray, Decl(myFile02.js, 6, 3))
>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.d.ts, --, --))
>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.d.ts, --, --))

13 changes: 13 additions & 0 deletions tests/baselines/reference/malformedTags.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== tests/cases/conformance/salsa/myFile02.js ===

/**
* Checks if `value` is classified as an `Array` object.
*
* @type Function
*/
var isArray = Array.isArray;
>isArray : (arg: any) => arg is any[]
>Array.isArray : (arg: any) => arg is any[]
>Array : ArrayConstructor
>isArray : (arg: any) => arg is any[]

10 changes: 10 additions & 0 deletions tests/cases/conformance/salsa/malformedTags.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// @allowJS: true
// @suppressOutputPathCheck: true

// @filename: myFile02.js
/**
* Checks if `value` is classified as an `Array` object.
*
* @type Function
*/
var isArray = Array.isArray;

0 comments on commit 5af2c47

Please sign in to comment.