mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 08:11:30 -06:00
Respect //@ts-nocheck in TS files (#33383)
This commit is contained in:
parent
a34fdb203e
commit
8d7fd2e691
@ -1726,9 +1726,10 @@ namespace ts {
|
||||
Debug.assert(!!sourceFile.bindDiagnostics);
|
||||
|
||||
const isCheckJs = isCheckJsEnabledForFile(sourceFile, options);
|
||||
const isTsNoCheck = !!sourceFile.checkJsDirective && sourceFile.checkJsDirective.enabled === false;
|
||||
// By default, only type-check .ts, .tsx, 'Deferred' and 'External' files (external files are added by plugins)
|
||||
const includeBindAndCheckDiagnostics = sourceFile.scriptKind === ScriptKind.TS || sourceFile.scriptKind === ScriptKind.TSX ||
|
||||
sourceFile.scriptKind === ScriptKind.External || isCheckJs || sourceFile.scriptKind === ScriptKind.Deferred;
|
||||
const includeBindAndCheckDiagnostics = !isTsNoCheck && (sourceFile.scriptKind === ScriptKind.TS || sourceFile.scriptKind === ScriptKind.TSX ||
|
||||
sourceFile.scriptKind === ScriptKind.External || isCheckJs || sourceFile.scriptKind === ScriptKind.Deferred);
|
||||
const bindDiagnostics: readonly Diagnostic[] = includeBindAndCheckDiagnostics ? sourceFile.bindDiagnostics : emptyArray;
|
||||
const checkDiagnostics = includeBindAndCheckDiagnostics ? typeChecker.getDiagnostics(sourceFile, cancellationToken) : emptyArray;
|
||||
const fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName);
|
||||
|
||||
57
tests/baselines/reference/tsNoCheckForTypescript.js
Normal file
57
tests/baselines/reference/tsNoCheckForTypescript.js
Normal file
@ -0,0 +1,57 @@
|
||||
//// [file.ts]
|
||||
// @ts-nocheck
|
||||
|
||||
export const a = 1 + {}; // This is an error, ofc, `Operator '+' cannot be applied to types '1' and '{}'`, which will be suppressed by the `nocheck` comment
|
||||
|
||||
export interface Aleph {
|
||||
q: number;
|
||||
}
|
||||
|
||||
export class Bet implements Aleph {
|
||||
q: string = "lol" // And so will this implements error
|
||||
}
|
||||
|
||||
|
||||
//// [file.js]
|
||||
"use strict";
|
||||
// @ts-nocheck
|
||||
exports.__esModule = true;
|
||||
exports.a = 1 + {}; // This is an error, ofc, `Operator '+' cannot be applied to types '1' and '{}'`, which will be suppressed by the `nocheck` comment
|
||||
var Bet = /** @class */ (function () {
|
||||
function Bet() {
|
||||
this.q = "lol"; // And so will this implements error
|
||||
}
|
||||
return Bet;
|
||||
}());
|
||||
exports.Bet = Bet;
|
||||
|
||||
|
||||
//// [file.d.ts]
|
||||
export declare const a: any;
|
||||
export interface Aleph {
|
||||
q: number;
|
||||
}
|
||||
export declare class Bet implements Aleph {
|
||||
q: string;
|
||||
}
|
||||
|
||||
|
||||
//// [DtsFileErrors]
|
||||
|
||||
|
||||
tests/cases/conformance/jsdoc/file.d.ts(6,5): error TS2416: Property 'q' in type 'Bet' is not assignable to the same property in base type 'Aleph'.
|
||||
Type 'string' is not assignable to type 'number'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/jsdoc/file.d.ts (1 errors) ====
|
||||
export declare const a: any;
|
||||
export interface Aleph {
|
||||
q: number;
|
||||
}
|
||||
export declare class Bet implements Aleph {
|
||||
q: string;
|
||||
~
|
||||
!!! error TS2416: Property 'q' in type 'Bet' is not assignable to the same property in base type 'Aleph'.
|
||||
!!! error TS2416: Type 'string' is not assignable to type 'number'.
|
||||
}
|
||||
|
||||
21
tests/baselines/reference/tsNoCheckForTypescript.symbols
Normal file
21
tests/baselines/reference/tsNoCheckForTypescript.symbols
Normal file
@ -0,0 +1,21 @@
|
||||
=== tests/cases/conformance/jsdoc/file.ts ===
|
||||
// @ts-nocheck
|
||||
|
||||
export const a = 1 + {}; // This is an error, ofc, `Operator '+' cannot be applied to types '1' and '{}'`, which will be suppressed by the `nocheck` comment
|
||||
>a : Symbol(a, Decl(file.ts, 2, 12))
|
||||
|
||||
export interface Aleph {
|
||||
>Aleph : Symbol(Aleph, Decl(file.ts, 2, 24))
|
||||
|
||||
q: number;
|
||||
>q : Symbol(Aleph.q, Decl(file.ts, 4, 24))
|
||||
}
|
||||
|
||||
export class Bet implements Aleph {
|
||||
>Bet : Symbol(Bet, Decl(file.ts, 6, 1))
|
||||
>Aleph : Symbol(Aleph, Decl(file.ts, 2, 24))
|
||||
|
||||
q: string = "lol" // And so will this implements error
|
||||
>q : Symbol(Bet.q, Decl(file.ts, 8, 35))
|
||||
}
|
||||
|
||||
22
tests/baselines/reference/tsNoCheckForTypescript.types
Normal file
22
tests/baselines/reference/tsNoCheckForTypescript.types
Normal file
@ -0,0 +1,22 @@
|
||||
=== tests/cases/conformance/jsdoc/file.ts ===
|
||||
// @ts-nocheck
|
||||
|
||||
export const a = 1 + {}; // This is an error, ofc, `Operator '+' cannot be applied to types '1' and '{}'`, which will be suppressed by the `nocheck` comment
|
||||
>a : any
|
||||
>1 + {} : any
|
||||
>1 : 1
|
||||
>{} : {}
|
||||
|
||||
export interface Aleph {
|
||||
q: number;
|
||||
>q : number
|
||||
}
|
||||
|
||||
export class Bet implements Aleph {
|
||||
>Bet : Bet
|
||||
|
||||
q: string = "lol" // And so will this implements error
|
||||
>q : string
|
||||
>"lol" : "lol"
|
||||
}
|
||||
|
||||
14
tests/cases/conformance/jsdoc/tsNoCheckForTypescript.ts
Normal file
14
tests/cases/conformance/jsdoc/tsNoCheckForTypescript.ts
Normal file
@ -0,0 +1,14 @@
|
||||
// @declaration: true
|
||||
// @filename: file.ts
|
||||
|
||||
// @ts-nocheck
|
||||
|
||||
export const a = 1 + {}; // This is an error, ofc, `Operator '+' cannot be applied to types '1' and '{}'`, which will be suppressed by the `nocheck` comment
|
||||
|
||||
export interface Aleph {
|
||||
q: number;
|
||||
}
|
||||
|
||||
export class Bet implements Aleph {
|
||||
q: string = "lol" // And so will this implements error
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user