diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 0971adfc098..347e6e97ebd 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -908,6 +908,13 @@ namespace ts { function getSemanticDiagnosticsForFileNoCache(sourceFile: SourceFile, cancellationToken: CancellationToken): Diagnostic[] { return runWithCancellationToken(() => { + // If skipLibCheck is enabled, skip reporting errors if file is a declaration file. + // If skipDefaultLibCheck is enabled, skip reporting errors if file contains a + // '/// ' directive. + if (options.skipLibCheck && sourceFile.isDeclarationFile || options.skipDefaultLibCheck && sourceFile.hasNoDefaultLib) { + return emptyArray; + } + const typeChecker = getDiagnosticsProducingTypeChecker(); Debug.assert(!!sourceFile.bindDiagnostics); diff --git a/tests/cases/compiler/noDefaultLib.ts b/tests/cases/compiler/noDefaultLib.ts index 92c8a63fc64..fa1230e4cfe 100644 --- a/tests/cases/compiler/noDefaultLib.ts +++ b/tests/cases/compiler/noDefaultLib.ts @@ -1,3 +1,4 @@ +// @skipDefaultLibCheck: false /// var x; diff --git a/tests/cases/compiler/variableDeclarationInStrictMode1.ts b/tests/cases/compiler/variableDeclarationInStrictMode1.ts index 266e5af44ae..5785beb32aa 100644 --- a/tests/cases/compiler/variableDeclarationInStrictMode1.ts +++ b/tests/cases/compiler/variableDeclarationInStrictMode1.ts @@ -1,2 +1,3 @@ +// @skipDefaultLibCheck: false "use strict"; var eval; \ No newline at end of file