diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.errors.txt b/tests/baselines/reference/arrowFunctionErrorSpan.errors.txt index 0cc9ee2b6a98f..30265c6d53456 100644 --- a/tests/baselines/reference/arrowFunctionErrorSpan.errors.txt +++ b/tests/baselines/reference/arrowFunctionErrorSpan.errors.txt @@ -19,9 +19,11 @@ arrowFunctionErrorSpan.ts(43,5): error TS2345: Argument of type '() => void' is Type 'void' is not assignable to type 'number'. arrowFunctionErrorSpan.ts(52,3): error TS2345: Argument of type '(_: any) => number' is not assignable to parameter of type '() => number'. Target signature provides too few arguments. Expected 1 or more, but got 0. +arrowFunctionErrorSpan.ts(55,7): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. +arrowFunctionErrorSpan.ts(57,17): error TS2322: Type 'string' is not assignable to type 'number'. -==== arrowFunctionErrorSpan.ts (11 errors) ==== +==== arrowFunctionErrorSpan.ts (13 errors) ==== function f(a: () => number) { } // oneliner @@ -112,4 +114,12 @@ arrowFunctionErrorSpan.ts(52,3): error TS2345: Argument of type '(_: any) => num ~~~~~ !!! error TS2345: Argument of type '(_: any) => number' is not assignable to parameter of type '() => number'. !!! error TS2345: Target signature provides too few arguments. Expected 1 or more, but got 0. + + f((): number => { }); + ~~~~~~ +!!! error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. + + f((): number => ''); + ~~ +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.js b/tests/baselines/reference/arrowFunctionErrorSpan.js index b9dd81a62ea09..085c04a7d3f9d 100644 --- a/tests/baselines/reference/arrowFunctionErrorSpan.js +++ b/tests/baselines/reference/arrowFunctionErrorSpan.js @@ -54,6 +54,10 @@ f( // comment 1 // body is not a block f(_ => 1 + 2); + +f((): number => { }); + +f((): number => ''); //// [arrowFunctionErrorSpan.js] @@ -91,3 +95,5 @@ function () { // body is not a block f(function (_) { return 1 + 2; }); +f(function () { }); +f(function () { return ''; }); diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.symbols b/tests/baselines/reference/arrowFunctionErrorSpan.symbols index d1c0ff14d50b5..cc602f755ca67 100644 --- a/tests/baselines/reference/arrowFunctionErrorSpan.symbols +++ b/tests/baselines/reference/arrowFunctionErrorSpan.symbols @@ -81,3 +81,9 @@ f(_ => 1 + 2); +f((): number => { }); +>f : Symbol(f, Decl(arrowFunctionErrorSpan.ts, 0, 0)) + +f((): number => ''); +>f : Symbol(f, Decl(arrowFunctionErrorSpan.ts, 0, 0)) + diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.types b/tests/baselines/reference/arrowFunctionErrorSpan.types index 9b125e6961a6b..0818380bc914f 100644 --- a/tests/baselines/reference/arrowFunctionErrorSpan.types +++ b/tests/baselines/reference/arrowFunctionErrorSpan.types @@ -145,3 +145,21 @@ f(_ => 1 + >2 : 2 > : ^ +f((): number => { }); +>f((): number => { }) : void +> : ^^^^ +>f : (a: () => number) => void +> : ^ ^^ ^^^^^^^^^ +>(): number => { } : () => number +> : ^^^^^^ + +f((): number => ''); +>f((): number => '') : void +> : ^^^^ +>f : (a: () => number) => void +> : ^ ^^ ^^^^^^^^^ +>(): number => '' : () => number +> : ^^^^^^ +>'' : "" +> : ^^ + diff --git a/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.errors.txt b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.errors.txt new file mode 100644 index 0000000000000..e3caa4fb54dc5 --- /dev/null +++ b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.errors.txt @@ -0,0 +1,41 @@ +arrowFunctionReturnTypeErrorSpan.ts(2,7): error TS2451: Cannot redeclare block-scoped variable 'a'. +arrowFunctionReturnTypeErrorSpan.ts(3,3): error TS2322: Type 'string' is not assignable to type 'number'. +arrowFunctionReturnTypeErrorSpan.ts(6,7): error TS2451: Cannot redeclare block-scoped variable 'a'. +arrowFunctionReturnTypeErrorSpan.ts(7,10): error TS2304: Cannot find name 'missing'. +arrowFunctionReturnTypeErrorSpan.ts(11,25): error TS2322: Type 'string' is not assignable to type 'number'. +arrowFunctionReturnTypeErrorSpan.ts(14,28): error TS2322: Type 'string' is not assignable to type 'number'. +arrowFunctionReturnTypeErrorSpan.ts(16,25): error TS2304: Cannot find name 'missing'. + + +==== arrowFunctionReturnTypeErrorSpan.ts (7 errors) ==== + // block body + const a = (): number => { + ~ +!!! error TS2451: Cannot redeclare block-scoped variable 'a'. + return "foo"; + ~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type 'number'. + }; + + const a = (): number => { + ~ +!!! error TS2451: Cannot redeclare block-scoped variable 'a'. + return missing; + ~~~~~~~ +!!! error TS2304: Cannot find name 'missing'. + }; + + // expression body + const b = (): number => "foo"; + ~~~~~ +!!! error TS2322: Type 'string' is not assignable to type 'number'. + + type F = T; + const c = (): F => "foo"; + ~~~~~ +!!! error TS2322: Type 'string' is not assignable to type 'number'. + + const d = (): number => missing; + ~~~~~~~ +!!! error TS2304: Cannot find name 'missing'. + \ No newline at end of file diff --git a/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.js b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.js new file mode 100644 index 0000000000000..f5ead91daa775 --- /dev/null +++ b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.js @@ -0,0 +1,33 @@ +//// [tests/cases/compiler/arrowFunctionReturnTypeErrorSpan.ts] //// + +//// [arrowFunctionReturnTypeErrorSpan.ts] +// block body +const a = (): number => { + return "foo"; +}; + +const a = (): number => { + return missing; +}; + +// expression body +const b = (): number => "foo"; + +type F = T; +const c = (): F => "foo"; + +const d = (): number => missing; + + +//// [arrowFunctionReturnTypeErrorSpan.js] +// block body +var a = function () { + return "foo"; +}; +var a = function () { + return missing; +}; +// expression body +var b = function () { return "foo"; }; +var c = function () { return "foo"; }; +var d = function () { return missing; }; diff --git a/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.symbols b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.symbols new file mode 100644 index 0000000000000..cede2d742170e --- /dev/null +++ b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.symbols @@ -0,0 +1,32 @@ +//// [tests/cases/compiler/arrowFunctionReturnTypeErrorSpan.ts] //// + +=== arrowFunctionReturnTypeErrorSpan.ts === +// block body +const a = (): number => { +>a : Symbol(a, Decl(arrowFunctionReturnTypeErrorSpan.ts, 1, 5)) + + return "foo"; +}; + +const a = (): number => { +>a : Symbol(a, Decl(arrowFunctionReturnTypeErrorSpan.ts, 5, 5)) + + return missing; +}; + +// expression body +const b = (): number => "foo"; +>b : Symbol(b, Decl(arrowFunctionReturnTypeErrorSpan.ts, 10, 5)) + +type F = T; +>F : Symbol(F, Decl(arrowFunctionReturnTypeErrorSpan.ts, 10, 30)) +>T : Symbol(T, Decl(arrowFunctionReturnTypeErrorSpan.ts, 12, 7)) +>T : Symbol(T, Decl(arrowFunctionReturnTypeErrorSpan.ts, 12, 7)) + +const c = (): F => "foo"; +>c : Symbol(c, Decl(arrowFunctionReturnTypeErrorSpan.ts, 13, 5)) +>F : Symbol(F, Decl(arrowFunctionReturnTypeErrorSpan.ts, 10, 30)) + +const d = (): number => missing; +>d : Symbol(d, Decl(arrowFunctionReturnTypeErrorSpan.ts, 15, 5)) + diff --git a/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.types b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.types new file mode 100644 index 0000000000000..a7487c88853ee --- /dev/null +++ b/tests/baselines/reference/arrowFunctionReturnTypeErrorSpan.types @@ -0,0 +1,57 @@ +//// [tests/cases/compiler/arrowFunctionReturnTypeErrorSpan.ts] //// + +=== arrowFunctionReturnTypeErrorSpan.ts === +// block body +const a = (): number => { +>a : () => number +> : ^^^^^^ +>(): number => { return "foo";} : () => number +> : ^^^^^^ + + return "foo"; +>"foo" : "foo" +> : ^^^^^ + +}; + +const a = (): number => { +>a : () => number +> : ^^^^^^ +>(): number => { return missing;} : () => number +> : ^^^^^^ + + return missing; +>missing : any +> : ^^^ + +}; + +// expression body +const b = (): number => "foo"; +>b : () => number +> : ^^^^^^ +>(): number => "foo" : () => number +> : ^^^^^^ +>"foo" : "foo" +> : ^^^^^ + +type F = T; +>F : T +> : ^ + +const c = (): F => "foo"; +>c : () => F +> : ^^^^^^ +>(): F => "foo" : () => F +> : ^^^^^^ +>"foo" : "foo" +> : ^^^^^ + +const d = (): number => missing; +>d : () => number +> : ^^^^^^ +>(): number => missing : () => number +> : ^^^^^^ +>missing : any +> : ^^^ + diff --git a/tests/cases/compiler/arrowFunctionErrorSpan.ts b/tests/cases/compiler/arrowFunctionErrorSpan.ts index 4c7fff88a9394..b91ccd5991710 100644 --- a/tests/cases/compiler/arrowFunctionErrorSpan.ts +++ b/tests/cases/compiler/arrowFunctionErrorSpan.ts @@ -51,3 +51,7 @@ f( // comment 1 // body is not a block f(_ => 1 + 2); + +f((): number => { }); + +f((): number => ''); diff --git a/tests/cases/compiler/arrowFunctionReturnTypeErrorSpan.ts b/tests/cases/compiler/arrowFunctionReturnTypeErrorSpan.ts new file mode 100644 index 0000000000000..bfc2b5a0af8b5 --- /dev/null +++ b/tests/cases/compiler/arrowFunctionReturnTypeErrorSpan.ts @@ -0,0 +1,16 @@ +// block body +const a = (): number => { + return "foo"; +}; + +const a = (): number => { + return missing; +}; + +// expression body +const b = (): number => "foo"; + +type F = T; +const c = (): F => "foo"; + +const d = (): number => missing;