From 635780db073d1f411b4e746648631efe1dbd430a Mon Sep 17 00:00:00 2001 From: Klaus Meinhardt Date: Tue, 20 Nov 2018 23:07:01 +0100 Subject: [PATCH] ArrowFunction has no own 'arguments' Fixes: #28621 --- src/compiler/checker.ts | 8 +++- .../baselines/reference/arguments.errors.txt | 18 ++++++--- tests/baselines/reference/arguments.js | 5 +++ tests/baselines/reference/arguments.symbols | 23 ++++++----- tests/baselines/reference/arguments.types | 12 ++++++ ...unctionWhenUsingArguments01_ES6.errors.txt | 40 +++++++++++++++++++ ...owFunctionWhenUsingArguments01_ES6.symbols | 2 - ...rrowFunctionWhenUsingArguments01_ES6.types | 4 +- ...unctionWhenUsingArguments02_ES6.errors.txt | 7 ++++ ...owFunctionWhenUsingArguments02_ES6.symbols | 1 - ...rrowFunctionWhenUsingArguments02_ES6.types | 6 +-- ...owFunctionWhenUsingArguments03_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments03_ES6.types | 6 +-- ...owFunctionWhenUsingArguments04_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments04_ES6.types | 6 +-- ...owFunctionWhenUsingArguments05_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments05_ES6.types | 6 +-- ...owFunctionWhenUsingArguments06_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments06_ES6.types | 8 ++-- ...owFunctionWhenUsingArguments07_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments07_ES6.types | 8 ++-- ...owFunctionWhenUsingArguments11_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments11_ES6.types | 8 ++-- ...owFunctionWhenUsingArguments12_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments12_ES6.types | 6 +-- ...owFunctionWhenUsingArguments14_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments14_ES6.types | 6 +-- ...owFunctionWhenUsingArguments15_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments15_ES6.types | 6 +-- ...owFunctionWhenUsingArguments16_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments16_ES6.types | 8 ++-- ...owFunctionWhenUsingArguments17_ES6.symbols | 2 +- ...rrowFunctionWhenUsingArguments17_ES6.types | 8 ++-- tests/cases/compiler/arguments.ts | 4 ++ 34 files changed, 155 insertions(+), 73 deletions(-) create mode 100644 tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.errors.txt create mode 100644 tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5e2c5d87690..9b7b099aa45 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1419,12 +1419,18 @@ namespace ts { } } break; + case SyntaxKind.ArrowFunction: + // when targeting ES6 or higher there is no 'arguments' in an arrow function + // for lower compile targets the resolved symbol is used to emit an error + if (compilerOptions.target! >= ScriptTarget.ES2015) { + break; + } + // falls through case SyntaxKind.MethodDeclaration: case SyntaxKind.Constructor: case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: case SyntaxKind.FunctionDeclaration: - case SyntaxKind.ArrowFunction: if (meaning & SymbolFlags.Variable && name === "arguments") { result = argumentsSymbol; break loop; diff --git a/tests/baselines/reference/arguments.errors.txt b/tests/baselines/reference/arguments.errors.txt index de6aa35333f..882477aaac9 100644 --- a/tests/baselines/reference/arguments.errors.txt +++ b/tests/baselines/reference/arguments.errors.txt @@ -1,15 +1,21 @@ -tests/cases/compiler/arguments.ts(6,25): error TS2304: Cannot find name 'arguments'. -tests/cases/compiler/arguments.ts(7,23): error TS2304: Cannot find name 'arguments'. -tests/cases/compiler/arguments.ts(8,19): error TS2304: Cannot find name 'arguments'. -tests/cases/compiler/arguments.ts(9,23): error TS2304: Cannot find name 'arguments'. -tests/cases/compiler/arguments.ts(10,34): error TS2304: Cannot find name 'arguments'. +tests/cases/compiler/arguments.ts(6,8): error TS2304: Cannot find name 'arguments'. +tests/cases/compiler/arguments.ts(9,25): error TS2304: Cannot find name 'arguments'. +tests/cases/compiler/arguments.ts(10,23): error TS2304: Cannot find name 'arguments'. +tests/cases/compiler/arguments.ts(11,19): error TS2304: Cannot find name 'arguments'. +tests/cases/compiler/arguments.ts(12,23): error TS2304: Cannot find name 'arguments'. +tests/cases/compiler/arguments.ts(13,34): error TS2304: Cannot find name 'arguments'. -==== tests/cases/compiler/arguments.ts (5 errors) ==== +==== tests/cases/compiler/arguments.ts (6 errors) ==== function f() { var x=arguments[12]; + (() => arguments)(); } + (() => arguments)(); + ~~~~~~~~~ +!!! error TS2304: Cannot find name 'arguments'. + interface I { method(args: typeof arguments): void; ~~~~~~~~~ diff --git a/tests/baselines/reference/arguments.js b/tests/baselines/reference/arguments.js index 8622c084503..3dd362506c6 100644 --- a/tests/baselines/reference/arguments.js +++ b/tests/baselines/reference/arguments.js @@ -1,8 +1,11 @@ //// [arguments.ts] function f() { var x=arguments[12]; + (() => arguments)(); } +(() => arguments)(); + interface I { method(args: typeof arguments): void; fn: (args: typeof arguments) => void; @@ -14,4 +17,6 @@ interface I { //// [arguments.js] function f() { var x = arguments[12]; + (() => arguments)(); } +(() => arguments)(); diff --git a/tests/baselines/reference/arguments.symbols b/tests/baselines/reference/arguments.symbols index c8be643332c..770077a90b2 100644 --- a/tests/baselines/reference/arguments.symbols +++ b/tests/baselines/reference/arguments.symbols @@ -4,27 +4,32 @@ function f() { var x=arguments[12]; >x : Symbol(x, Decl(arguments.ts, 1, 7)) +>arguments : Symbol(arguments) + + (() => arguments)(); >arguments : Symbol(arguments) } +(() => arguments)(); + interface I { ->I : Symbol(I, Decl(arguments.ts, 2, 1)) +>I : Symbol(I, Decl(arguments.ts, 5, 20)) method(args: typeof arguments): void; ->method : Symbol(I.method, Decl(arguments.ts, 4, 13)) ->args : Symbol(args, Decl(arguments.ts, 5, 11)) +>method : Symbol(I.method, Decl(arguments.ts, 7, 13)) +>args : Symbol(args, Decl(arguments.ts, 8, 11)) fn: (args: typeof arguments) => void; ->fn : Symbol(I.fn, Decl(arguments.ts, 5, 41)) ->args : Symbol(args, Decl(arguments.ts, 6, 9)) +>fn : Symbol(I.fn, Decl(arguments.ts, 8, 41)) +>args : Symbol(args, Decl(arguments.ts, 9, 9)) (args: typeof arguments): void; ->args : Symbol(args, Decl(arguments.ts, 7, 5)) +>args : Symbol(args, Decl(arguments.ts, 10, 5)) new (args: typeof arguments): void; ->args : Symbol(args, Decl(arguments.ts, 8, 9)) +>args : Symbol(args, Decl(arguments.ts, 11, 9)) construct: new (args: typeof arguments) => void; ->construct : Symbol(I.construct, Decl(arguments.ts, 8, 39)) ->args : Symbol(args, Decl(arguments.ts, 9, 20)) +>construct : Symbol(I.construct, Decl(arguments.ts, 11, 39)) +>args : Symbol(args, Decl(arguments.ts, 12, 20)) } diff --git a/tests/baselines/reference/arguments.types b/tests/baselines/reference/arguments.types index 655f6182c6f..a46f4b3015e 100644 --- a/tests/baselines/reference/arguments.types +++ b/tests/baselines/reference/arguments.types @@ -7,8 +7,20 @@ function f() { >arguments[12] : any >arguments : IArguments >12 : 12 + + (() => arguments)(); +>(() => arguments)() : IArguments +>(() => arguments) : () => IArguments +>() => arguments : () => IArguments +>arguments : IArguments } +(() => arguments)(); +>(() => arguments)() : any +>(() => arguments) : () => any +>() => arguments : () => any +>arguments : any + interface I { method(args: typeof arguments): void; >method : (args: any) => void diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.errors.txt b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.errors.txt new file mode 100644 index 00000000000..5f1a0525fd8 --- /dev/null +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.errors.txt @@ -0,0 +1,40 @@ +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments01_ES6.ts(2,15): error TS2304: Cannot find name 'arguments'. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments01_ES6.ts(19,15): error TS2304: Cannot find name 'arguments'. + + +==== tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments01_ES6.ts (2 errors) ==== + var a = () => { + var arg = arguments[0]; // error + ~~~~~~~~~ +!!! error TS2304: Cannot find name 'arguments'. + } + + var b = function () { + var a = () => { + var arg = arguments[0]; // error + } + } + + function baz() { + () => { + var arg = arguments[0]; + } + } + + function foo(inputFunc: () => void) { } + foo(() => { + var arg = arguments[0]; // error + ~~~~~~~~~ +!!! error TS2304: Cannot find name 'arguments'. + }); + + function bar() { + var arg = arguments[0]; // no error + } + + + () => { + function foo() { + var arg = arguments[0]; // no error + } + } \ No newline at end of file diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.symbols index 698b32da7ad..9298998fb74 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.symbols @@ -4,7 +4,6 @@ var a = () => { var arg = arguments[0]; // error >arg : Symbol(arg, Decl(emitArrowFunctionWhenUsingArguments01_ES6.ts, 1, 7)) ->arguments : Symbol(arguments) } var b = function () { @@ -38,7 +37,6 @@ foo(() => { var arg = arguments[0]; // error >arg : Symbol(arg, Decl(emitArrowFunctionWhenUsingArguments01_ES6.ts, 18, 7)) ->arguments : Symbol(arguments) }); diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types index 6da6a224a6c..2e47d402986 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types @@ -6,7 +6,7 @@ var a = () => { var arg = arguments[0]; // error >arg : any >arguments[0] : any ->arguments : IArguments +>arguments : any >0 : 0 } @@ -52,7 +52,7 @@ foo(() => { var arg = arguments[0]; // error >arg : any >arguments[0] : any ->arguments : IArguments +>arguments : any >0 : 0 }); diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.errors.txt b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.errors.txt new file mode 100644 index 00000000000..653ed55592e --- /dev/null +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments02_ES6.ts(1,15): error TS2304: Cannot find name 'arguments'. + + +==== tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments02_ES6.ts (1 errors) ==== + var a = () => arguments; + ~~~~~~~~~ +!!! error TS2304: Cannot find name 'arguments'. \ No newline at end of file diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.symbols index 4843562aaec..87bafa16224 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.symbols @@ -1,5 +1,4 @@ === tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments02_ES6.ts === var a = () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments02_ES6.ts, 0, 3)) ->arguments : Symbol(arguments) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types index 40859c33cc3..541105ac689 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments02_ES6.ts === var a = () => arguments; ->a : () => IArguments ->() => arguments : () => IArguments ->arguments : IArguments +>a : () => any +>() => arguments : () => any +>arguments : any diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.symbols index 71518083b1f..22a6602c178 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.symbols @@ -4,5 +4,5 @@ var arguments; var a = () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments03_ES6.ts, 1, 3)) ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments03_ES6.ts, 0, 3)) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types index ad46bec71b6..f4dab85c46d 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types @@ -3,7 +3,7 @@ var arguments; >arguments : any var a = () => arguments; ->a : () => IArguments ->() => arguments : () => IArguments ->arguments : IArguments +>a : () => any +>() => arguments : () => any +>arguments : any diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.symbols index d42db50fa3b..80848c3536a 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.symbols @@ -7,5 +7,5 @@ function f() { var a = () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments04_ES6.ts, 2, 7)) ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments04_ES6.ts, 1, 7)) } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types index e371862ee4d..8eb25aa52cc 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types @@ -6,7 +6,7 @@ function f() { >arguments : any var a = () => arguments; ->a : () => IArguments ->() => arguments : () => IArguments ->arguments : IArguments +>a : () => any +>() => arguments : () => any +>arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.symbols index cfa539d1948..9b380c12aca 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.symbols @@ -5,5 +5,5 @@ function f(arguments) { var a = () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments05_ES6.ts, 1, 7)) ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments05_ES6.ts, 0, 11)) } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types index bcb452f0940..dc6b35bf6ab 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types @@ -4,7 +4,7 @@ function f(arguments) { >arguments : any var a = () => arguments; ->a : () => IArguments ->() => arguments : () => IArguments ->arguments : IArguments +>a : () => any +>() => arguments : () => any +>arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.symbols index 0aef2f06c45..6152d5f0bc0 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.symbols @@ -5,5 +5,5 @@ function f(arguments) { var a = () => () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments06_ES6.ts, 1, 7)) ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments06_ES6.ts, 0, 11)) } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types index f29eb52f32b..98370e538b1 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types @@ -4,8 +4,8 @@ function f(arguments) { >arguments : any var a = () => () => arguments; ->a : () => () => IArguments ->() => () => arguments : () => () => IArguments ->() => arguments : () => IArguments ->arguments : IArguments +>a : () => () => any +>() => () => arguments : () => () => any +>() => arguments : () => any +>arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.symbols index 4fdce2cccb1..d5bd8c1afba 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.symbols @@ -6,5 +6,5 @@ function f(arguments) { var a = (arguments) => () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments07_ES6.ts, 1, 7)) >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments07_ES6.ts, 1, 13)) ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments07_ES6.ts, 1, 13)) } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types index 168ffac3c5e..eb7f40e6a05 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types @@ -4,9 +4,9 @@ function f(arguments) { >arguments : any var a = (arguments) => () => arguments; ->a : (arguments: any) => () => IArguments ->(arguments) => () => arguments : (arguments: any) => () => IArguments +>a : (arguments: any) => () => any +>(arguments) => () => arguments : (arguments: any) => () => any +>arguments : any +>() => arguments : () => any >arguments : any ->() => arguments : () => IArguments ->arguments : IArguments } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.symbols index 1af084727be..d307681a7d2 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.symbols @@ -8,5 +8,5 @@ function f(arguments) { var a = () => () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments11_ES6.ts, 2, 7)) ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments11_ES6.ts, 0, 11)) } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types index fa19fe7b9b1..12ae41331db 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types @@ -8,8 +8,8 @@ function f(arguments) { >10 : 10 var a = () => () => arguments; ->a : () => () => IArguments ->() => () => arguments : () => () => IArguments ->() => arguments : () => IArguments ->arguments : IArguments +>a : () => () => any +>() => () => arguments : () => () => any +>() => arguments : () => any +>arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.symbols index 4824a8fbbc3..62e950ecfe6 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.symbols @@ -8,6 +8,6 @@ class C { var a = () => arguments; >a : Symbol(a, Decl(emitArrowFunctionWhenUsingArguments12_ES6.ts, 2, 11)) ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments12_ES6.ts, 1, 6)) } } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types index b41dda95439..42bed2b7089 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types @@ -7,8 +7,8 @@ class C { >arguments : any var a = () => arguments; ->a : () => IArguments ->() => arguments : () => IArguments ->arguments : IArguments +>a : () => any +>() => arguments : () => any +>arguments : any } } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols index b984e697d02..fdb8e605cc6 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols @@ -11,6 +11,6 @@ function f() { >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments14_ES6.ts, 2, 11)) return () => arguments; ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments14_ES6.ts, 2, 11)) } } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.types index 19526febab3..e5a6188c449 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments14_ES6.ts === function f() { ->f : () => () => IArguments +>f : () => () => number if (Math.random()) { >Math.random() : number @@ -13,7 +13,7 @@ function f() { >100 : 100 return () => arguments; ->() => arguments : () => IArguments ->arguments : IArguments +>() => arguments : () => number +>arguments : number } } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols index 95693995e7f..05c53206e5f 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols @@ -14,6 +14,6 @@ function f() { >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments15_ES6.ts, 3, 13)) return () => arguments; ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments15_ES6.ts, 3, 13)) } } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.types index 69b1e795071..adf53c18826 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments15_ES6.ts === function f() { ->f : () => () => IArguments +>f : () => () => number var arguments = "hello"; >arguments : string @@ -17,7 +17,7 @@ function f() { >100 : 100 return () => arguments; ->() => arguments : () => IArguments ->arguments : IArguments +>() => arguments : () => number +>arguments : 100 } } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols index accf6365cd4..356a3841ea1 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols @@ -11,7 +11,7 @@ function f() { >random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) return () => arguments[0]; ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments16_ES6.ts, 1, 7), Decl(emitArrowFunctionWhenUsingArguments16_ES6.ts, 5, 7)) } var arguments = "world"; >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments16_ES6.ts, 1, 7), Decl(emitArrowFunctionWhenUsingArguments16_ES6.ts, 5, 7)) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.types index 50c619035ac..7c9495808ad 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments16_ES6.ts === function f() { ->f : () => () => any +>f : () => () => string var arguments = "hello"; >arguments : string @@ -13,9 +13,9 @@ function f() { >random : () => number return () => arguments[0]; ->() => arguments[0] : () => any ->arguments[0] : any ->arguments : IArguments +>() => arguments[0] : () => string +>arguments[0] : string +>arguments : string >0 : 0 } var arguments = "world"; diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols index 7cfb86db049..c889a9ada61 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols @@ -12,7 +12,7 @@ function f() { >random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) return () => arguments[0]; ->arguments : Symbol(arguments) +>arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments17_ES6.ts, 1, 9), Decl(emitArrowFunctionWhenUsingArguments17_ES6.ts, 5, 7)) } var arguments = "world"; >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments17_ES6.ts, 1, 9), Decl(emitArrowFunctionWhenUsingArguments17_ES6.ts, 5, 7)) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.types index e0ea34ba0fe..30facb027e4 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments17_ES6.ts === function f() { ->f : () => () => any +>f : () => () => string var { arguments } = { arguments: "hello" }; >arguments : string @@ -15,9 +15,9 @@ function f() { >random : () => number return () => arguments[0]; ->() => arguments[0] : () => any ->arguments[0] : any ->arguments : IArguments +>() => arguments[0] : () => string +>arguments[0] : string +>arguments : string >0 : 0 } var arguments = "world"; diff --git a/tests/cases/compiler/arguments.ts b/tests/cases/compiler/arguments.ts index b486d5eed95..9e91e898776 100644 --- a/tests/cases/compiler/arguments.ts +++ b/tests/cases/compiler/arguments.ts @@ -1,7 +1,11 @@ +// @target: ES6 function f() { var x=arguments[12]; + (() => arguments)(); } +(() => arguments)(); + interface I { method(args: typeof arguments): void; fn: (args: typeof arguments) => void;