From 2dd6627022c3d54b73d0d415971a451b14e2d8a1 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 30 May 2017 13:32:46 -0700 Subject: [PATCH] Report jsdoc syntax errors when checkJs is on --- src/compiler/parser.ts | 6 ++++++ src/compiler/program.ts | 3 +++ src/compiler/types.ts | 13 ++++++++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 2d0a4b66a1a..51c9375c291 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6322,6 +6322,12 @@ namespace ts { comment.parent = parent; } + if (isInJavaScriptFile(parent)) { + if (!sourceFile.jsDocDiagnostics) { + sourceFile.jsDocDiagnostics = []; + } + sourceFile.jsDocDiagnostics.push(...parseDiagnostics); + } currentToken = saveToken; parseDiagnostics.length = saveParseDiagnosticsLength; parseErrorBeforeNextFinishedNode = saveParseErrorBeforeNextFinishedNode; diff --git a/src/compiler/program.ts b/src/compiler/program.ts index dd293727b4a..e69a89cc618 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1021,6 +1021,9 @@ namespace ts { if (isSourceFileJavaScript(sourceFile)) { if (!sourceFile.additionalSyntacticDiagnostics) { sourceFile.additionalSyntacticDiagnostics = getJavaScriptSyntacticDiagnosticsForFile(sourceFile); + if (isCheckJsEnabledForFile(sourceFile, options)) { + sourceFile.additionalSyntacticDiagnostics = concatenate(sourceFile.additionalSyntacticDiagnostics, sourceFile.jsDocDiagnostics); + } } return concatenate(sourceFile.additionalSyntacticDiagnostics, sourceFile.parseDiagnostics); } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 6f602ff23af..aaa790b6d13 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2312,16 +2312,19 @@ namespace ts { /* @internal */ identifierCount: number; /* @internal */ symbolCount: number; - // File level diagnostics reported by the parser (includes diagnostics about /// references + // File-level diagnostics reported by the parser (includes diagnostics about /// references // as well as code diagnostics). /* @internal */ parseDiagnostics: Diagnostic[]; - // Stores additional file level diagnostics reported by the program - /* @internal */ additionalSyntacticDiagnostics?: Diagnostic[]; - - // File level diagnostics reported by the binder. + // File-level diagnostics reported by the binder. /* @internal */ bindDiagnostics: Diagnostic[]; + // File-level JSDoc diagnostics reported by the JSDoc parser + /* @internal */ jsDocDiagnostics?: Diagnostic[]; + + // Stores additional file-level diagnostics reported by the program + /* @internal */ additionalSyntacticDiagnostics?: Diagnostic[]; + // Stores a line map for the file. // This field should never be used directly to obtain line map, use getLineMap function instead. /* @internal */ lineMap: number[];