Skip to content

Commit cf5aadb

Browse files
author
Yui T
committed
Address code review
1 parent fb2c502 commit cf5aadb

5 files changed

+20
-25
lines changed

src/compiler/checker.ts

+2-7
Original file line numberDiff line numberDiff line change
@@ -4856,7 +4856,7 @@ module ts {
48564856
// To avoid that we will give an error to users if they use arguments objects in arrow function so that they
48574857
// can explicitly bound arguments objects
48584858
if (symbol === argumentsSymbol && getContainingFunction(node).kind === SyntaxKind.ArrowFunction) {
4859-
error(node, Diagnostics.An_argument_object_has_different_behaviour_across_Javascript_versions_Use_function_expression_or_rest_parameters_instead);
4859+
error(node, Diagnostics.The_argument_object_has_different_behaviour_across_Javascript_versions_Use_function_expression_or_rest_parameters_instead);
48604860
}
48614861

48624862
if (symbol.flags & SymbolFlags.Import) {
@@ -4915,12 +4915,7 @@ module ts {
49154915
container = getThisContainer(container, /* includeArrowFunctions */ false);
49164916

49174917
// When targeting es6, arrow function lexically bind "this" so we do not need to do the work of binding "this" in emitted code
4918-
if (compilerOptions.target >= ScriptTarget.ES6) {
4919-
needToCaptureLexicalThis = false;
4920-
}
4921-
else {
4922-
needToCaptureLexicalThis = true;
4923-
}
4918+
needToCaptureLexicalThis = !(compilerOptions.target >= ScriptTarget.ES6);
49244919
}
49254920

49264921
switch (container.kind) {

src/compiler/diagnosticInformationMap.generated.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,6 @@ module ts {
452452
You_cannot_rename_this_element: { code: 8000, category: DiagnosticCategory.Error, key: "You cannot rename this element." },
453453
yield_expressions_are_not_currently_supported: { code: 9000, category: DiagnosticCategory.Error, key: "'yield' expressions are not currently supported.", isEarly: true },
454454
Generators_are_not_currently_supported: { code: 9001, category: DiagnosticCategory.Error, key: "Generators are not currently supported.", isEarly: true },
455-
An_argument_object_has_different_behaviour_across_Javascript_versions_Use_function_expression_or_rest_parameters_instead: { code: 9002, category: DiagnosticCategory.Error, key: "An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead" },
455+
The_argument_object_has_different_behaviour_across_Javascript_versions_Use_function_expression_or_rest_parameters_instead: { code: 9002, category: DiagnosticCategory.Error, key: "The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead" },
456456
};
457457
}

src/compiler/diagnosticMessages.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1909,7 +1909,7 @@
19091909
"code": 9001,
19101910
"isEarly": true
19111911
},
1912-
"An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead": {
1912+
"The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead": {
19131913
"category": "Error",
19141914
"code": 9002
19151915
}

tests/baselines/reference/emitArrowFunctionWhenUsingArguments.errors.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
1-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(2,15): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
2-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(7,19): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
3-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(13,13): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
4-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(19,15): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
1+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(2,15): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
2+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(7,19): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
3+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(13,13): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
4+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(19,15): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
55

66

77
==== tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts (4 errors) ====
88
var a = () => {
99
var arg = arguments[0]; // error
1010
~~~~~~~~~
11-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
11+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
1212
}
1313

1414
var b = function () {
1515
var a = () => {
1616
var arg = arguments[0]; // error
1717
~~~~~~~~~
18-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
18+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
1919
}
2020
}
2121

2222
function baz() {
2323
() => {
2424
var arg = arguments[0];
2525
~~~~~~~~~
26-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
26+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
2727
}
2828
}
2929

3030
function foo(inputFunc: () => void) { }
3131
foo(() => {
3232
var arg = arguments[0]; // error
3333
~~~~~~~~~
34-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
34+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
3535
});
3636

3737
function bar() {

tests/baselines/reference/emitArrowFunctionWhenUsingArgumentsES6.errors.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
1-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(2,15): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
2-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(7,19): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
3-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(13,13): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
4-
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(19,15): error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
1+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(2,15): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
2+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(7,19): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
3+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(13,13): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
4+
tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(19,15): error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
55

66

77
==== tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts (4 errors) ====
88
var a = () => {
99
var arg = arguments[0]; // error
1010
~~~~~~~~~
11-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
11+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
1212
}
1313

1414
var b = function () {
1515
var a = () => {
1616
var arg = arguments[0]; // error
1717
~~~~~~~~~
18-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
18+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
1919
}
2020
}
2121

2222
function baz() {
2323
() => {
2424
var arg = arguments[0];
2525
~~~~~~~~~
26-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
26+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
2727
}
2828
}
2929

3030
function foo(inputFunc: () => void) { }
3131
foo(() => {
3232
var arg = arguments[0]; // error
3333
~~~~~~~~~
34-
!!! error TS9002: An argument object has different behaviour across Javascript versions. Use function expression or rest parameters instead
34+
!!! error TS9002: The 'argument' object has different behaviour across Javascript versions. Use function expression or rest parameters instead
3535
});
3636

3737
function bar() {

0 commit comments

Comments
 (0)