improve error message and update testcase

This commit is contained in:
王文璐 2018-08-01 10:21:50 +08:00
parent 813f28a4f8
commit 02f5365e08
11 changed files with 172 additions and 97 deletions

View File

@ -28717,16 +28717,7 @@ namespace ts {
}
function getNonSimpleParameters(parameters: ReadonlyArray<ParameterDeclaration>): ReadonlyArray<ParameterDeclaration> {
// ECMA-262 14.1.13
if (parameters.length === 0) return [];
const last = lastOrUndefined(parameters);
if (last && isRestParameter(last)) return [last];
return filter(parameters, parameter => {
// ECMA-262 13.3.3.4
return !!parameter.initializer || isBindingPattern(parameter.name);
});
return filter(parameters, parameter => !!parameter.initializer || isBindingPattern(parameter.name) || isRestParameter(parameter));
}
function checkGrammarForUseStrictSimpleParameterList(node: FunctionLikeDeclaration): boolean {
@ -28738,12 +28729,12 @@ namespace ts {
forEach(nonSimpleParameters, parameter => {
addRelatedInfo(
error(parameter, Diagnostics.This_parameter_is_not_allowed_with_use_strict_directive),
createDiagnosticForNode(useStrictDirective, Diagnostics._0_is_here, "use strict directive")
createDiagnosticForNode(useStrictDirective, Diagnostics.use_strict_directive_used_here)
);
});
const diagnostics = nonSimpleParameters.map((parameter, index) => (
index === 0 ? createDiagnosticForNode(parameter, Diagnostics._0_is_here, "parameter") : createDiagnosticForNode(parameter, Diagnostics.and_here)
index === 0 ? createDiagnosticForNode(parameter, Diagnostics.Non_simple_parameter_declared_here) : createDiagnosticForNode(parameter, Diagnostics.and_here)
)) as [DiagnosticWithLocation, ...DiagnosticWithLocation[]];
addRelatedInfo(error(useStrictDirective, Diagnostics.use_strict_directive_cannot_be_used_with_non_simple_parameter_list), ...diagnostics);
return true;

View File

@ -991,14 +991,18 @@
"category": "Error",
"code": 1345
},
"'use strict' directive cannot be used with non simple parameter list.": {
"'use strict' directive cannot be used with non-simple parameter list.": {
"category": "Error",
"code": 1346
},
"{0} is here.": {
"Non-simple parameter declared here.": {
"category": "Error",
"code": 1347
},
"'use strict' directive used here.": {
"category": "Error",
"code": 1348
},
"Duplicate identifier '{0}'.": {
"category": "Error",

View File

@ -17,6 +17,10 @@ function rest(...args: any[]) {
'use strict';
}
function rest1(a = 1, ...args) {
'use strict';
}
function paramDefault(param = 1) {
'use strict';
}
@ -69,6 +73,14 @@ function rest() {
args[_i] = arguments[_i];
}
}
function rest1(a) {
'use strict';
if (a === void 0) { a = 1; }
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
}
function paramDefault(param) {
'use strict';
if (param === void 0) { param = 1; }

View File

@ -31,52 +31,60 @@ function rest(...args: any[]) {
'use strict';
}
function rest1(a = 1, ...args) {
>rest1 : Symbol(rest1, Decl(functionWithUseStrictAndSimpleParameterList.ts, 16, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList.ts, 18, 15))
>args : Symbol(args, Decl(functionWithUseStrictAndSimpleParameterList.ts, 18, 21))
'use strict';
}
function paramDefault(param = 1) {
>paramDefault : Symbol(paramDefault, Decl(functionWithUseStrictAndSimpleParameterList.ts, 16, 1))
>param : Symbol(param, Decl(functionWithUseStrictAndSimpleParameterList.ts, 18, 22))
>paramDefault : Symbol(paramDefault, Decl(functionWithUseStrictAndSimpleParameterList.ts, 20, 1))
>param : Symbol(param, Decl(functionWithUseStrictAndSimpleParameterList.ts, 22, 22))
'use strict';
}
function objectBindingPattern({foo}: any) {
>objectBindingPattern : Symbol(objectBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList.ts, 20, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList.ts, 22, 31))
>objectBindingPattern : Symbol(objectBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList.ts, 24, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList.ts, 26, 31))
'use strict';
}
function arrayBindingPattern([foo]: any[]) {
>arrayBindingPattern : Symbol(arrayBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList.ts, 24, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList.ts, 26, 30))
>arrayBindingPattern : Symbol(arrayBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList.ts, 28, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList.ts, 30, 30))
'use strict';
}
function manyParameter(a = 10, b = 20) {
>manyParameter : Symbol(manyParameter, Decl(functionWithUseStrictAndSimpleParameterList.ts, 28, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList.ts, 30, 23))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList.ts, 30, 30))
>manyParameter : Symbol(manyParameter, Decl(functionWithUseStrictAndSimpleParameterList.ts, 32, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList.ts, 34, 23))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList.ts, 34, 30))
"use strict";
}
function manyPrologue(a = 10, b = 20) {
>manyPrologue : Symbol(manyPrologue, Decl(functionWithUseStrictAndSimpleParameterList.ts, 32, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList.ts, 34, 22))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList.ts, 34, 29))
>manyPrologue : Symbol(manyPrologue, Decl(functionWithUseStrictAndSimpleParameterList.ts, 36, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList.ts, 38, 22))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList.ts, 38, 29))
"foo";
"use strict";
}
function invalidPrologue(a = 10, b = 20) {
>invalidPrologue : Symbol(invalidPrologue, Decl(functionWithUseStrictAndSimpleParameterList.ts, 37, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList.ts, 39, 25))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList.ts, 39, 32))
>invalidPrologue : Symbol(invalidPrologue, Decl(functionWithUseStrictAndSimpleParameterList.ts, 41, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList.ts, 43, 25))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList.ts, 43, 32))
"foo";
const c = 1;
>c : Symbol(c, Decl(functionWithUseStrictAndSimpleParameterList.ts, 41, 9))
>c : Symbol(c, Decl(functionWithUseStrictAndSimpleParameterList.ts, 45, 9))
"use strict";
}

View File

@ -39,6 +39,16 @@ function rest(...args: any[]) {
>'use strict' : "use strict"
}
function rest1(a = 1, ...args) {
>rest1 : (a?: number, ...args: any[]) => void
>a : number
>1 : 1
>args : any[]
'use strict';
>'use strict' : "use strict"
}
function paramDefault(param = 1) {
>paramDefault : (param?: number) => void
>param : number

View File

@ -1,30 +1,33 @@
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(1,12): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(2,5): error TS1345: 'use strict' directive cannot be used with non simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(15,15): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(16,5): error TS1345: 'use strict' directive cannot be used with non simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(19,23): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(20,5): error TS1345: 'use strict' directive cannot be used with non simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(23,31): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(24,5): error TS1345: 'use strict' directive cannot be used with non simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(27,30): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(28,5): error TS1345: 'use strict' directive cannot be used with non simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(31,24): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(31,32): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(32,5): error TS1345: 'use strict' directive cannot be used with non simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(35,23): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(35,31): error TS1344: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(37,5): error TS1345: 'use strict' directive cannot be used with non simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(1,12): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(2,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(15,15): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(16,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(19,16): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(19,23): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(20,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(23,23): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(24,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(27,31): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(28,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(31,30): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(32,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(35,24): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(35,32): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(36,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(39,23): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(39,31): error TS1345: This parameter is not allowed with 'use strict' directive.
tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts(41,5): error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
==== tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts (16 errors) ====
==== tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts (19 errors) ====
function a(a = 10) {
~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:2:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:2:5: 'use strict' directive used here.
"use strict";
~~~~~~~~~~~~~
!!! error TS1345: 'use strict' directive cannot be used with non simple parameter list.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:1:12: parameter is here.
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:1:12: Non-simple parameter declared here.
}
export var foo = 10;
@ -39,71 +42,85 @@ tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es
function rest(...args: any[]) {
~~~~~~~~~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:16:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:16:5: 'use strict' directive used here.
'use strict';
~~~~~~~~~~~~~
!!! error TS1345: 'use strict' directive cannot be used with non simple parameter list.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:15:15: parameter is here.
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:15:15: Non-simple parameter declared here.
}
function rest1(a = 1, ...args) {
~~~~~
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:20:5: 'use strict' directive used here.
~~~~~~~
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:20:5: 'use strict' directive used here.
'use strict';
~~~~~~~~~~~~~
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:19:16: Non-simple parameter declared here.
!!! related TS6204 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:19:23: and here.
}
function paramDefault(param = 1) {
~~~~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:20:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:24:5: 'use strict' directive used here.
'use strict';
~~~~~~~~~~~~~
!!! error TS1345: 'use strict' directive cannot be used with non simple parameter list.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:19:23: parameter is here.
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:23:23: Non-simple parameter declared here.
}
function objectBindingPattern({foo}: any) {
~~~~~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:24:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:28:5: 'use strict' directive used here.
'use strict';
~~~~~~~~~~~~~
!!! error TS1345: 'use strict' directive cannot be used with non simple parameter list.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:23:31: parameter is here.
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:27:31: Non-simple parameter declared here.
}
function arrayBindingPattern([foo]: any[]) {
~~~~~~~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:28:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:32:5: 'use strict' directive used here.
'use strict';
~~~~~~~~~~~~~
!!! error TS1345: 'use strict' directive cannot be used with non simple parameter list.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:27:30: parameter is here.
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:31:30: Non-simple parameter declared here.
}
function manyParameter(a = 10, b = 20) {
~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:32:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:36:5: 'use strict' directive used here.
~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:32:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:36:5: 'use strict' directive used here.
"use strict";
~~~~~~~~~~~~~
!!! error TS1345: 'use strict' directive cannot be used with non simple parameter list.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:31:24: parameter is here.
!!! related TS6204 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:31:32: and here.
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:35:24: Non-simple parameter declared here.
!!! related TS6204 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:35:32: and here.
}
function manyPrologue(a = 10, b = 20) {
~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:37:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:41:5: 'use strict' directive used here.
~~~~~~
!!! error TS1344: This parameter is not allowed with 'use strict' directive.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:37:5: use strict directive is here.
!!! error TS1345: This parameter is not allowed with 'use strict' directive.
!!! related TS1348 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:41:5: 'use strict' directive used here.
"foo";
"use strict";
~~~~~~~~~~~~~
!!! error TS1345: 'use strict' directive cannot be used with non simple parameter list.
!!! related TS1346 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:35:23: parameter is here.
!!! related TS6204 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:35:31: and here.
!!! error TS1346: 'use strict' directive cannot be used with non-simple parameter list.
!!! related TS1347 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:39:23: Non-simple parameter declared here.
!!! related TS6204 tests/cases/conformance/functions/functionWithUseStrictAndSimpleParameterList_es2016.ts:39:31: and here.
}
function invalidPrologue(a = 10, b = 20) {

View File

@ -17,6 +17,10 @@ function rest(...args: any[]) {
'use strict';
}
function rest1(a = 1, ...args) {
'use strict';
}
function paramDefault(param = 1) {
'use strict';
}
@ -60,6 +64,9 @@ function container() {
function rest(...args) {
'use strict';
}
function rest1(a = 1, ...args) {
'use strict';
}
function paramDefault(param = 1) {
'use strict';
}

View File

@ -31,52 +31,60 @@ function rest(...args: any[]) {
'use strict';
}
function rest1(a = 1, ...args) {
>rest1 : Symbol(rest1, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 16, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 18, 15))
>args : Symbol(args, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 18, 21))
'use strict';
}
function paramDefault(param = 1) {
>paramDefault : Symbol(paramDefault, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 16, 1))
>param : Symbol(param, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 18, 22))
>paramDefault : Symbol(paramDefault, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 20, 1))
>param : Symbol(param, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 22, 22))
'use strict';
}
function objectBindingPattern({foo}: any) {
>objectBindingPattern : Symbol(objectBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 20, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 22, 31))
>objectBindingPattern : Symbol(objectBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 24, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 26, 31))
'use strict';
}
function arrayBindingPattern([foo]: any[]) {
>arrayBindingPattern : Symbol(arrayBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 24, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 26, 30))
>arrayBindingPattern : Symbol(arrayBindingPattern, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 28, 1))
>foo : Symbol(foo, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 30, 30))
'use strict';
}
function manyParameter(a = 10, b = 20) {
>manyParameter : Symbol(manyParameter, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 28, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 30, 23))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 30, 30))
>manyParameter : Symbol(manyParameter, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 32, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 34, 23))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 34, 30))
"use strict";
}
function manyPrologue(a = 10, b = 20) {
>manyPrologue : Symbol(manyPrologue, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 32, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 34, 22))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 34, 29))
>manyPrologue : Symbol(manyPrologue, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 36, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 38, 22))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 38, 29))
"foo";
"use strict";
}
function invalidPrologue(a = 10, b = 20) {
>invalidPrologue : Symbol(invalidPrologue, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 37, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 39, 25))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 39, 32))
>invalidPrologue : Symbol(invalidPrologue, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 41, 1))
>a : Symbol(a, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 43, 25))
>b : Symbol(b, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 43, 32))
"foo";
const c = 1;
>c : Symbol(c, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 41, 9))
>c : Symbol(c, Decl(functionWithUseStrictAndSimpleParameterList_es2016.ts, 45, 9))
"use strict";
}

View File

@ -39,6 +39,16 @@ function rest(...args: any[]) {
>'use strict' : "use strict"
}
function rest1(a = 1, ...args) {
>rest1 : (a?: number, ...args: any[]) => void
>a : number
>1 : 1
>args : any[]
'use strict';
>'use strict' : "use strict"
}
function paramDefault(param = 1) {
>paramDefault : (param?: number) => void
>param : number

View File

@ -16,6 +16,10 @@ function rest(...args: any[]) {
'use strict';
}
function rest1(a = 1, ...args) {
'use strict';
}
function paramDefault(param = 1) {
'use strict';
}

View File

@ -18,6 +18,10 @@ function rest(...args: any[]) {
'use strict';
}
function rest1(a = 1, ...args) {
'use strict';
}
function paramDefault(param = 1) {
'use strict';
}