diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts
index 3965665ba19e1..193ebe0f72cca 100644
--- a/src/compiler/checker.ts
+++ b/src/compiler/checker.ts
@@ -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;
             }
 
@@ -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;
                 }
             }
@@ -7392,7 +7392,7 @@ namespace ts {
 
         function getTypeForThisExpressionFromJSDoc(node: Node) {
             const typeTag = getJSDocTypeTag(node);
-            if (typeTag && typeTag.typeExpression.type.kind === SyntaxKind.JSDocFunctionType) {
+            if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === SyntaxKind.JSDocFunctionType) {
                 const jsDocFunctionType = <JSDocFunctionType>typeTag.typeExpression.type;
                 if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === SyntaxKind.JSDocThisType) {
                     return getTypeFromTypeNode(jsDocFunctionType.parameters[0].type);
diff --git a/src/harness/harness.ts b/src/harness/harness.ts
index 7fd819731721a..57643e548f942 100644
--- a/src/harness/harness.ts
+++ b/src/harness/harness.ts
@@ -904,7 +904,8 @@ namespace Harness {
             { name: "includeBuiltFile", type: "string" },
             { name: "fileName", type: "string" },
             { name: "libFiles", type: "string" },
-            { name: "noErrorTruncation", type: "boolean" }
+            { name: "noErrorTruncation", type: "boolean" },
+            { name: "suppressOutputPathCheck", type: "boolean" }
         ];
 
         let optionsIndex: ts.Map<ts.CommandLineOption>;
diff --git a/tests/baselines/reference/malformedTags.js b/tests/baselines/reference/malformedTags.js
new file mode 100644
index 0000000000000..33b2c1e6f4179
--- /dev/null
+++ b/tests/baselines/reference/malformedTags.js
@@ -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;
diff --git a/tests/baselines/reference/malformedTags.symbols b/tests/baselines/reference/malformedTags.symbols
new file mode 100644
index 0000000000000..df953a8249735
--- /dev/null
+++ b/tests/baselines/reference/malformedTags.symbols
@@ -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, --, --))
+
diff --git a/tests/baselines/reference/malformedTags.types b/tests/baselines/reference/malformedTags.types
new file mode 100644
index 0000000000000..acf442f7cba09
--- /dev/null
+++ b/tests/baselines/reference/malformedTags.types
@@ -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[]
+
diff --git a/tests/cases/conformance/salsa/malformedTags.ts b/tests/cases/conformance/salsa/malformedTags.ts
new file mode 100644
index 0000000000000..1128ce73f1547
--- /dev/null
+++ b/tests/cases/conformance/salsa/malformedTags.ts
@@ -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;