mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
fix(29648): Error message related to JSDoc for non-JSDoc syntax error (#50793)
* fix(29648): improve diagnostics of non-JSDoc syntax errors * fix lint errors * update tests * change diagnostic type suggestion. fix QF for jsdoc nullable type * move error handling from the parser to the checker * change diagnostic message. remove speculative parsing * update baseline
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
// @strict: true
|
||||
|
||||
function f1(a: string): a is string! {
|
||||
return true;
|
||||
}
|
||||
|
||||
function f2(a: string): a is !string {
|
||||
return true;
|
||||
}
|
||||
|
||||
function f3(a: string!) {}
|
||||
function f4(a: number!) {}
|
||||
|
||||
function f5(a: !string) {}
|
||||
function f6(a: !number) {}
|
||||
|
||||
function f7(): string! {}
|
||||
function f8(): !string {}
|
||||
|
||||
const a = 1 as any!;
|
||||
const b: number! = 1;
|
||||
|
||||
const c = 1 as !any;
|
||||
const d: !number = 1;
|
||||
@@ -0,0 +1,26 @@
|
||||
// @strict: true
|
||||
|
||||
function f1(a: string): a is ?string {
|
||||
return true;
|
||||
}
|
||||
|
||||
function f2(a: string?) {}
|
||||
function f3(a: number?) {}
|
||||
|
||||
function f4(a: ?string) {}
|
||||
function f5(a: ?number) {}
|
||||
|
||||
function f6(a: string): ?string {
|
||||
return true;
|
||||
}
|
||||
|
||||
const a = 1 as any?;
|
||||
const b: number? = 1;
|
||||
|
||||
const c = 1 as ?any;
|
||||
const d: ?number = 1;
|
||||
|
||||
let e: unknown?;
|
||||
let f: never?;
|
||||
let g: void?;
|
||||
let h: undefined?;
|
||||
@@ -4,8 +4,8 @@
|
||||
//// }
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'number?' to 'number | null'",
|
||||
errorCode: 8020,
|
||||
description: "Change 'number?' to 'number | undefined'",
|
||||
errorCode: 17019,
|
||||
index: 0,
|
||||
newRangeContent: "number | null",
|
||||
newRangeContent: "number | undefined",
|
||||
});
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
//// }
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'string?' to 'string | null | undefined'",
|
||||
errorCode: 8020,
|
||||
description: "Change 'string?' to 'string | undefined'",
|
||||
errorCode: 17019,
|
||||
index: 1,
|
||||
newRangeContent: "string | null | undefined",
|
||||
newRangeContent: "string | undefined",
|
||||
});
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
//// var x = 12 as [|number?|];
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'number?' to 'number | null'",
|
||||
errorCode: 8020,
|
||||
description: "Change 'number?' to 'number | undefined'",
|
||||
errorCode: 17019,
|
||||
index: 0,
|
||||
newRangeContent: "number | null",
|
||||
newRangeContent: "number | undefined",
|
||||
});
|
||||
|
||||
@@ -2,8 +2,16 @@
|
||||
//// var f = <[|function(number?): number|]>(x => x);
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'function(number?): number' to '(arg0: number) => number'",
|
||||
description: "Change 'number?' to 'number'",
|
||||
errorCode: 17019,
|
||||
index: 0,
|
||||
newRangeContent: "function(number): number",
|
||||
applyChanges: true
|
||||
});
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'function(number): number' to '(arg0: number) => number'",
|
||||
errorCode: 8020,
|
||||
index: 0,
|
||||
newRangeContent: "(arg0: number | null) => number",
|
||||
newRangeContent: "(arg0: number) => number",
|
||||
});
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// @strict: true
|
||||
/// <reference path='fourslash.ts' />
|
||||
//// function f(x: [|never?|]) {
|
||||
//// }
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'never?' to 'never'",
|
||||
errorCode: 17019,
|
||||
index: 0,
|
||||
newRangeContent: "never",
|
||||
});
|
||||
@@ -0,0 +1,11 @@
|
||||
// @strict: true
|
||||
/// <reference path='fourslash.ts' />
|
||||
//// function f(x: [|void?|]) {
|
||||
//// }
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'void?' to 'void'",
|
||||
errorCode: 17019,
|
||||
index: 0,
|
||||
newRangeContent: "void",
|
||||
});
|
||||
@@ -3,8 +3,8 @@
|
||||
//// var x: [|?number|] = 12;
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change '?number' to 'number | null'",
|
||||
errorCode: 8020,
|
||||
description: "Change '?number' to 'number | null | undefined'",
|
||||
errorCode: 17020,
|
||||
index: 0,
|
||||
newRangeContent: "number | null",
|
||||
newRangeContent: "number | null | undefined",
|
||||
});
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//// var x: [|number?|] = 12;
|
||||
|
||||
verify.codeFix({
|
||||
description: "Change 'number?' to 'number | null | undefined'",
|
||||
description: "Change 'number?' to 'number | undefined'",
|
||||
index: 1,
|
||||
newRangeContent: "number | null | undefined",
|
||||
newRangeContent: "number | undefined",
|
||||
});
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
verify.codeFixAll({
|
||||
fixId: "fixJSDocTypes_plain",
|
||||
fixAllDescription: "Change all jsdoc-style types to TypeScript",
|
||||
newFileContent: "function f(a: number | null, b: string) {}",
|
||||
newFileContent: "function f(a: number | null | undefined, b: string) {}",
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user