diff --git a/crates/oxc_linter/src/rules/early_error/javascript.rs b/crates/oxc_linter/src/rules/early_error/javascript.rs index 82775b5e0..57353a098 100644 --- a/crates/oxc_linter/src/rules/early_error/javascript.rs +++ b/crates/oxc_linter/src/rules/early_error/javascript.rs @@ -1,5 +1,9 @@ #[allow(clippy::wildcard_imports)] -use oxc_ast::{ast::*, syntax_directed_operations::PropName, AstKind, Atom, ModuleKind, Span}; +use oxc_ast::{ + ast::*, + syntax_directed_operations::{BoundNames, IsSimpleParameterList, PropName}, + AstKind, Atom, ModuleKind, Span, +}; use oxc_diagnostics::{ miette::{self, Diagnostic}, thiserror::{self, Error}, @@ -44,6 +48,8 @@ impl Rule for EarlyErrorJavaScript { AstKind::Super(sup) => check_super(sup, node, ctx), AstKind::Property(prop) => check_property(prop, ctx), + AstKind::FormalParameters(params) => check_formal_parameters(params, node, ctx), + AstKind::ObjectExpression(expr) => check_object_expression(expr, ctx), AstKind::BinaryExpression(expr) => check_binary_expression(expr, ctx), AstKind::LogicalExpression(expr) => check_logical_expression(expr, ctx), @@ -688,6 +694,34 @@ fn check_property(prop: &Property, ctx: &LintContext) { } } +fn check_formal_parameters<'a>( + params: &FormalParameters, + node: &AstNode<'a>, + ctx: &LintContext<'a>, +) { + if params.is_empty() { + return; + } + + // Note: all other cases forbid duplicate parameter names. + if params.kind == FormalParameterKind::FormalParameter + && !ctx.strict_mode(node) + && params.is_simple_parameter_list() + { + return; + } + + // bound_names are usually small, a simple loop should be more performant checking with a hashmap + let mut idents = params.bound_names(); + idents.sort_unstable_by_key(|ident| ident.name.as_str()); + for i in 1..idents.len() { + let ident = &idents[i - 1]; + if let Some(found) = idents[i..].iter().find(|i| i.name == ident.name) { + ctx.diagnostic(Redeclaration(ident.name.clone(), ident.span, found.span)); + } + } +} + fn check_object_expression(obj_expr: &ObjectExpression, ctx: &LintContext) { // ObjectLiteral : { PropertyDefinitionList } // It is a Syntax Error if PropertyNameList of PropertyDefinitionList contains any duplicate entries for "__proto__" diff --git a/tasks/coverage/babel.snap b/tasks/coverage/babel.snap index 70cf29e49..54671d1c7 100644 --- a/tasks/coverage/babel.snap +++ b/tasks/coverage/babel.snap @@ -1,7 +1,7 @@ Babel Summary: AST Parsed : 2051/2069 (99.13%) Positive Passed: 2051/2069 (99.13%) -Negative Passed: 1095/1502 (72.90%) +Negative Passed: 1108/1502 (73.77%) Expect Syntax Error: "annex-b/disabled/1.1-html-comments-close/input.js" Expect Syntax Error: "annex-b/disabled/3.1-sloppy-labeled-functions-if-body/input.js" Expect Syntax Error: "annex-b/disabled/3.1-sloppy-labeled-functions-multiple-labels/input.js" @@ -89,7 +89,6 @@ Expect Syntax Error: "core/uncategorised/544/input.js" Expect Syntax Error: "core/uncategorised/550/input.js" Expect Syntax Error: "core/uncategorised/552/input.js" Expect Syntax Error: "es2015/class-methods/direct-super-in-object-method/input.js" -Expect Syntax Error: "es2015/class-methods/disallow-duplicate-method-params/input.js" Expect Syntax Error: "es2015/destructuring/binding-arguments-strict/input.js" Expect Syntax Error: "es2015/destructuring/binding-eval/input.js" Expect Syntax Error: "es2015/destructuring/error-operator-for-default/input.js" @@ -112,7 +111,6 @@ Expect Syntax Error: "es2015/statements/label-invalid-func-strict/input.js" Expect Syntax Error: "es2015/uncategorised/.191/input.js" Expect Syntax Error: "es2015/uncategorised/.335/input.js" Expect Syntax Error: "es2015/uncategorised/.343/input.js" -Expect Syntax Error: "es2015/uncategorised/166/input.js" Expect Syntax Error: "es2015/uncategorised/220/input.js" Expect Syntax Error: "es2015/uncategorised/227/input.js" Expect Syntax Error: "es2015/uncategorised/228/input.js" @@ -124,10 +122,7 @@ Expect Syntax Error: "es2015/uncategorised/244/input.js" Expect Syntax Error: "es2015/uncategorised/245/input.js" Expect Syntax Error: "es2015/uncategorised/246/input.js" Expect Syntax Error: "es2015/uncategorised/247/input.js" -Expect Syntax Error: "es2015/uncategorised/248/input.js" Expect Syntax Error: "es2015/uncategorised/249/input.js" -Expect Syntax Error: "es2015/uncategorised/280/input.js" -Expect Syntax Error: "es2015/uncategorised/281/input.js" Expect Syntax Error: "es2015/uncategorised/289/input.js" Expect Syntax Error: "es2015/uncategorised/296/input.js" Expect Syntax Error: "es2015/uncategorised/297/input.js" @@ -166,12 +161,6 @@ Expect Syntax Error: "es2020/dynamic-import/invalid-trailing-comma/input.js" Expect Syntax Error: "es2020/import-meta/error-in-script/input.js" Expect Syntax Error: "es2020/import-meta/no-other-prop-names/input.js" Expect Syntax Error: "esprima/declaration-function/dupe-param/input.js" -Expect Syntax Error: "esprima/es2015-array-binding-pattern/invalid-dup-param/input.js" -Expect Syntax Error: "esprima/es2015-array-pattern/dupe-param-1/input.js" -Expect Syntax Error: "esprima/es2015-array-pattern/dupe-param-2/input.js" -Expect Syntax Error: "esprima/es2015-array-pattern/dupe-param-3/input.js" -Expect Syntax Error: "esprima/es2015-arrow-function/complex-rest-in-arrow-not-allowed/input.js" -Expect Syntax Error: "esprima/es2015-arrow-function/invalid-duplicated-params/input.js" Expect Syntax Error: "esprima/es2015-arrow-function/invalid-param-strict-mode/input.js" Expect Syntax Error: "esprima/es2015-export-declaration/invalid-export-named-default/input.js" Expect Syntax Error: "esprima/es2015-generator/.generator-parameter-binding-property-reserved/input.js" @@ -208,8 +197,6 @@ Expect Syntax Error: "esprima/invalid-syntax/migrated_0088/input.js" Expect Syntax Error: "esprima/invalid-syntax/migrated_0089/input.js" Expect Syntax Error: "esprima/invalid-syntax/migrated_0090/input.js" Expect Syntax Error: "esprima/invalid-syntax/migrated_0091/input.js" -Expect Syntax Error: "esprima/invalid-syntax/migrated_0092/input.js" -Expect Syntax Error: "esprima/invalid-syntax/migrated_0093/input.js" Expect Syntax Error: "esprima/invalid-syntax/migrated_0094/input.js" Expect Syntax Error: "esprima/invalid-syntax/migrated_0100/input.js" Expect Syntax Error: "esprima/invalid-syntax/migrated_0101/input.js" @@ -2165,6 +2152,16 @@ Expect to Parse: "typescript/types/const-type-parameters/input.ts" ╰──── help: Try insert a semicolon here + × Identifier `a` has already been declared + ╭─[es2015/class-methods/disallow-duplicate-method-params/input.js:1:1] + 1 │ class Foo { + 2 │ bar(a, a) {} + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + 3 │ } + ╰──── + × Automatic Semicolon Insertion ╭─[es2015/class-methods/disallow-literal-async/input.js:1:1] 1 │ class A { @@ -2954,6 +2951,14 @@ Expect to Parse: "typescript/types/const-type-parameters/input.ts" · ─ ╰──── + × Identifier `a` has already been declared + ╭─[es2015/uncategorised/166/input.js:1:1] + 1 │ function x(a, { a }){} + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Unexpected end of file ╭─[es2015/uncategorised/198/input.js:1:1] 1 │ 0o @@ -3202,6 +3207,14 @@ Expect to Parse: "typescript/types/const-type-parameters/input.ts" · ─── ╰──── + × Identifier `a` has already been declared + ╭─[es2015/uncategorised/248/input.js:1:1] + 1 │ "use strict"; (a, a) => 42 + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Empty parenthesized expression ╭─[es2015/uncategorised/250/input.js:1:1] 1 │ () <= 42 @@ -3310,6 +3323,22 @@ Expect to Parse: "typescript/types/const-type-parameters/input.ts" · ─ ╰──── + × Identifier `a` has already been declared + ╭─[es2015/uncategorised/280/input.js:1:1] + 1 │ "use strict"; function x(a, { a }){} + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + + × Identifier `a` has already been declared + ╭─[es2015/uncategorised/281/input.js:1:1] + 1 │ "use strict"; function x({ b: { a } }, [{ b: { a } }]){} + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Rest element must be last element ╭─[es2015/uncategorised/283/input.js:1:1] 1 │ (...a, b) => {} @@ -6204,6 +6233,41 @@ Expect to Parse: "typescript/types/const-type-parameters/input.ts" · ╰── Unexpected trailing comma after rest element ╰──── + × Identifier `b` has already been declared + ╭─[esprima/es2015-array-binding-pattern/invalid-dup-param/input.js:1:1] + 1 │ ([a,[b],...b])=>0; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `b` has already been declared here + ╰──── + + × Identifier `a` has already been declared + ╭─[esprima/es2015-array-pattern/dupe-param-1/input.js:1:1] + 1 │ "use strict"; + 2 │ function a([a,a]){ } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + + × Identifier `a` has already been declared + ╭─[esprima/es2015-array-pattern/dupe-param-2/input.js:1:1] + 1 │ "use strict"; + 2 │ function a([a,...a]){ } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + + × Identifier `a` has already been declared + ╭─[esprima/es2015-array-pattern/dupe-param-3/input.js:1:1] + 1 │ "use strict"; + 2 │ function a([{a},...a]){ } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Expect token ╭─[esprima/es2015-array-pattern/with-default-catch-param-fail/input.js:1:1] 1 │ try { } catch ([a] = []) { } @@ -6225,6 +6289,22 @@ Expect to Parse: "typescript/types/const-type-parameters/input.ts" · ╰── Rest element must be last element ╰──── + × Identifier `a` has already been declared + ╭─[esprima/es2015-arrow-function/complex-rest-in-arrow-not-allowed/input.js:1:1] + 1 │ (a,...[a]) => 0; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[esprima/es2015-arrow-function/invalid-duplicated-params/input.js:1:1] + 1 │ (x, x) => y; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + × Line terminator not permitted before arrow ╭─[esprima/es2015-arrow-function/invalid-line-terminator-arrow/input.js:1:1] 1 │ () @@ -7655,6 +7735,22 @@ Expect to Parse: "typescript/types/const-type-parameters/input.ts" · ╰── Expect `}` here, but found `EOF` ╰──── + × Identifier `a` has already been declared + ╭─[esprima/invalid-syntax/migrated_0092/input.js:1:1] + 1 │ (a, a) => 42 + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + + × Identifier `a` has already been declared + ╭─[esprima/invalid-syntax/migrated_0093/input.js:1:1] + 1 │ "use strict"; (a, a) => 42 + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Empty parenthesized expression ╭─[esprima/invalid-syntax/migrated_0095/input.js:1:1] 1 │ () <= 42 diff --git a/tasks/coverage/test262.snap b/tasks/coverage/test262.snap index 49575d9f9..9c00266ef 100644 --- a/tasks/coverage/test262.snap +++ b/tasks/coverage/test262.snap @@ -1,7 +1,7 @@ Test262 Summary: AST Parsed : 44015/44034 (99.96%) Positive Passed: 44015/44034 (99.96%) -Negative Passed: 3331/3917 (85.04%) +Negative Passed: 3389/3917 (86.52%) Expect Syntax Error: "language/block-scope/syntax/function-declarations/in-statement-position-do-statement-while-expression.js" Expect Syntax Error: "language/block-scope/syntax/function-declarations/in-statement-position-for-statement.js" Expect Syntax Error: "language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement-else-statement.js" @@ -19,7 +19,6 @@ Expect Syntax Error: "language/directive-prologue/func-expr-inside-func-decl-par Expect Syntax Error: "language/directive-prologue/func-expr-no-semi-parse.js" Expect Syntax Error: "language/directive-prologue/func-expr-parse.js" Expect Syntax Error: "language/expressions/arrow-function/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/arrow-function/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/arrow-function/dflt-params-rest.js" Expect Syntax Error: "language/expressions/arrow-function/dstr/ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/expressions/arrow-function/dstr/ary-ptrn-rest-init-id.js" @@ -28,40 +27,23 @@ Expect Syntax Error: "language/expressions/arrow-function/dstr/dflt-ary-ptrn-res Expect Syntax Error: "language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-init-id.js" Expect Syntax Error: "language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-init-obj.js" Expect Syntax Error: "language/expressions/arrow-function/object-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/arrow-function/params-duplicate.js" Expect Syntax Error: "language/expressions/arrow-function/rest-param-strict-body.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-1.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-2.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-3.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-1.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-2.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-3.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-4.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-5.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-6.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-rest.js" -Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates.js" Expect Syntax Error: "language/expressions/arrow-function/syntax/early-errors/use-strict-with-non-simple-param.js" Expect Syntax Error: "language/expressions/async-arrow-function/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/async-arrow-function/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/async-arrow-function/dflt-params-rest.js" Expect Syntax Error: "language/expressions/async-arrow-function/early-errors-arrow-NSPL-with-USD.js" -Expect Syntax Error: "language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js" Expect Syntax Error: "language/expressions/async-arrow-function/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/async-arrow-function/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/async-function/early-errors-expression-NSPL-with-USD.js" Expect Syntax Error: "language/expressions/async-function/named-array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/async-function/named-dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/async-function/named-dflt-params-rest.js" Expect Syntax Error: "language/expressions/async-function/named-object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/async-function/named-rest-param-strict-body.js" Expect Syntax Error: "language/expressions/async-function/nameless-array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/async-function/nameless-dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/async-function/nameless-dflt-params-rest.js" Expect Syntax Error: "language/expressions/async-function/nameless-object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/async-function/nameless-rest-param-strict-body.js" Expect Syntax Error: "language/expressions/async-generator/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/async-generator/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/async-generator/dflt-params-rest.js" Expect Syntax Error: "language/expressions/async-generator/dstr/ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/expressions/async-generator/dstr/ary-ptrn-rest-init-id.js" @@ -78,7 +60,6 @@ Expect Syntax Error: "language/expressions/async-generator/dstr/named-dflt-ary-p Expect Syntax Error: "language/expressions/async-generator/early-errors-expression-NSPL-with-USD.js" Expect Syntax Error: "language/expressions/async-generator/early-errors-expression-await-as-function-binding-identifier.js" Expect Syntax Error: "language/expressions/async-generator/named-array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/async-generator/named-dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/async-generator/named-dflt-params-rest.js" Expect Syntax Error: "language/expressions/async-generator/named-object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/async-generator/named-rest-param-strict-body.js" @@ -86,22 +67,18 @@ Expect Syntax Error: "language/expressions/async-generator/object-destructuring- Expect Syntax Error: "language/expressions/async-generator/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/await/await-BindingIdentifier-nested.js" Expect Syntax Error: "language/expressions/class/async-gen-method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/async-gen-method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/async-gen-method-static/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/async-gen-method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/async-gen-method-static/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/class/async-gen-method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/async-gen-method/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/async-gen-method/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/async-gen-method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/async-gen-method/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/class/async-method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/async-method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/async-method-static/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/async-method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/async-method-static/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/class/async-method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/async-method/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/async-method/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/async-method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/async-method/rest-param-strict-body.js" @@ -178,27 +155,22 @@ Expect Syntax Error: "language/expressions/class/dstr/private-meth-static-dflt-a Expect Syntax Error: "language/expressions/class/dstr/private-meth-static-dflt-ary-ptrn-rest-init-id.js" Expect Syntax Error: "language/expressions/class/dstr/private-meth-static-dflt-ary-ptrn-rest-init-obj.js" Expect Syntax Error: "language/expressions/class/gen-method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/gen-method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/gen-method-static/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/gen-method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/gen-method-static/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/class/gen-method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/gen-method/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/gen-method/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/gen-method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/gen-method/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/class/method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/method-static/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/method-static/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/class/method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/class/method/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/class/method/dflt-params-rest.js" Expect Syntax Error: "language/expressions/class/method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/class/method/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/function/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/function/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/function/dflt-params-rest.js" Expect Syntax Error: "language/expressions/function/dstr/ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/expressions/function/dstr/ary-ptrn-rest-init-id.js" @@ -209,9 +181,6 @@ Expect Syntax Error: "language/expressions/function/dstr/dflt-ary-ptrn-rest-init Expect Syntax Error: "language/expressions/function/name-arguments-strict-body.js" Expect Syntax Error: "language/expressions/function/name-eval-strict-body.js" Expect Syntax Error: "language/expressions/function/object-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/function/param-duplicated-strict-1.js" -Expect Syntax Error: "language/expressions/function/param-duplicated-strict-2.js" -Expect Syntax Error: "language/expressions/function/param-duplicated-strict-3.js" Expect Syntax Error: "language/expressions/function/param-duplicated-strict-body-1.js" Expect Syntax Error: "language/expressions/function/param-duplicated-strict-body-2.js" Expect Syntax Error: "language/expressions/function/param-duplicated-strict-body-3.js" @@ -219,7 +188,6 @@ Expect Syntax Error: "language/expressions/function/param-eval-strict-body.js" Expect Syntax Error: "language/expressions/function/rest-param-strict-body.js" Expect Syntax Error: "language/expressions/function/use-strict-with-non-simple-param.js" Expect Syntax Error: "language/expressions/generators/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/generators/dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/generators/dflt-params-rest.js" Expect Syntax Error: "language/expressions/generators/dstr/ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/expressions/generators/dstr/ary-ptrn-rest-init-id.js" @@ -261,26 +229,20 @@ Expect Syntax Error: "language/expressions/object/identifier-shorthand-public-in Expect Syntax Error: "language/expressions/object/identifier-shorthand-static-invalid-strict-mode.js" Expect Syntax Error: "language/expressions/object/identifier-shorthand-yield-invalid-strict-mode.js" Expect Syntax Error: "language/expressions/object/method-definition/async-gen-meth-array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/object/method-definition/async-gen-meth-dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/object/method-definition/async-gen-meth-dflt-params-rest.js" Expect Syntax Error: "language/expressions/object/method-definition/async-gen-meth-object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/object/method-definition/async-gen-meth-rest-param-strict-body.js" Expect Syntax Error: "language/expressions/object/method-definition/async-meth-array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/object/method-definition/async-meth-dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/object/method-definition/async-meth-dflt-params-rest.js" Expect Syntax Error: "language/expressions/object/method-definition/async-meth-object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/object/method-definition/async-meth-rest-param-strict-body.js" -Expect Syntax Error: "language/expressions/object/method-definition/early-errors-object-async-method-duplicate-parameters.js" Expect Syntax Error: "language/expressions/object/method-definition/early-errors-object-method-NSPL-with-USD.js" -Expect Syntax Error: "language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js" Expect Syntax Error: "language/expressions/object/method-definition/gen-meth-array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/object/method-definition/gen-meth-dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/object/method-definition/gen-meth-dflt-params-rest.js" Expect Syntax Error: "language/expressions/object/method-definition/gen-meth-object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/object/method-definition/gen-meth-rest-param-strict-body.js" Expect Syntax Error: "language/expressions/object/method-definition/generator-use-strict-with-non-simple-param.js" Expect Syntax Error: "language/expressions/object/method-definition/meth-array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/expressions/object/method-definition/meth-dflt-params-duplicates.js" Expect Syntax Error: "language/expressions/object/method-definition/meth-dflt-params-rest.js" Expect Syntax Error: "language/expressions/object/method-definition/meth-object-destructuring-param-strict-body.js" Expect Syntax Error: "language/expressions/object/method-definition/meth-rest-param-strict-body.js" @@ -314,14 +276,11 @@ Expect Syntax Error: "language/module-code/early-export-global.js" Expect Syntax Error: "language/module-code/early-export-unresolvable.js" Expect Syntax Error: "language/module-code/early-new-target.js" Expect Syntax Error: "language/statements/async-function/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/async-function/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/async-function/dflt-params-rest.js" Expect Syntax Error: "language/statements/async-function/early-errors-declaration-NSPL-with-USD.js" -Expect Syntax Error: "language/statements/async-function/early-errors-declaration-duplicate-parameters.js" Expect Syntax Error: "language/statements/async-function/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/async-function/rest-param-strict-body.js" Expect Syntax Error: "language/statements/async-generator/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/async-generator/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/async-generator/dflt-params-rest.js" Expect Syntax Error: "language/statements/async-generator/dstr/ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/statements/async-generator/dstr/ary-ptrn-rest-init-id.js" @@ -332,28 +291,22 @@ Expect Syntax Error: "language/statements/async-generator/dstr/dflt-ary-ptrn-res Expect Syntax Error: "language/statements/async-generator/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/async-generator/rest-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-gen-method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/async-gen-method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/async-gen-method-static/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/async-gen-method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-gen-method-static/rest-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-gen-method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/async-gen-method/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/async-gen-method/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/async-gen-method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-gen-method/rest-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/async-method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/async-method-static/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/async-method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-method-static/rest-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/async-method/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/async-method/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/async-method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/async-method/rest-param-strict-body.js" -Expect Syntax Error: "language/statements/class/definition/early-errors-class-async-method-duplicate-parameters.js" Expect Syntax Error: "language/statements/class/definition/early-errors-class-method-NSPL-with-USD.js" -Expect Syntax Error: "language/statements/class/definition/early-errors-class-method-duplicate-parameters.js" Expect Syntax Error: "language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-init-id.js" Expect Syntax Error: "language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-init-obj.js" @@ -427,22 +380,18 @@ Expect Syntax Error: "language/statements/class/dstr/private-meth-static-dflt-ar Expect Syntax Error: "language/statements/class/dstr/private-meth-static-dflt-ary-ptrn-rest-init-id.js" Expect Syntax Error: "language/statements/class/dstr/private-meth-static-dflt-ary-ptrn-rest-init-obj.js" Expect Syntax Error: "language/statements/class/gen-method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/gen-method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/gen-method-static/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/gen-method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/gen-method-static/rest-param-strict-body.js" Expect Syntax Error: "language/statements/class/gen-method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/gen-method/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/gen-method/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/gen-method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/gen-method/rest-param-strict-body.js" Expect Syntax Error: "language/statements/class/method-static/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/method-static/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/method-static/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/method-static/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/method-static/rest-param-strict-body.js" Expect Syntax Error: "language/statements/class/method/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/class/method/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/class/method/dflt-params-rest.js" Expect Syntax Error: "language/statements/class/method/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/class/method/rest-param-strict-body.js" @@ -521,10 +470,7 @@ Expect Syntax Error: "language/statements/for/labelled-fn-stmt-const.js" Expect Syntax Error: "language/statements/for/labelled-fn-stmt-expr.js" Expect Syntax Error: "language/statements/for/labelled-fn-stmt-let.js" Expect Syntax Error: "language/statements/for/labelled-fn-stmt-var.js" -Expect Syntax Error: "language/statements/function/13.1-5gs.js" -Expect Syntax Error: "language/statements/function/13.1-8gs.js" Expect Syntax Error: "language/statements/function/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/function/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/function/dflt-params-rest.js" Expect Syntax Error: "language/statements/function/dstr/ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/statements/function/dstr/ary-ptrn-rest-init-id.js" @@ -538,9 +484,6 @@ Expect Syntax Error: "language/statements/function/name-arguments-strict-body.js Expect Syntax Error: "language/statements/function/name-eval-strict-body.js" Expect Syntax Error: "language/statements/function/object-destructuring-param-strict-body.js" Expect Syntax Error: "language/statements/function/param-arguments-strict-body.js" -Expect Syntax Error: "language/statements/function/param-duplicated-strict-1.js" -Expect Syntax Error: "language/statements/function/param-duplicated-strict-2.js" -Expect Syntax Error: "language/statements/function/param-duplicated-strict-3.js" Expect Syntax Error: "language/statements/function/param-duplicated-strict-body-1.js" Expect Syntax Error: "language/statements/function/param-duplicated-strict-body-2.js" Expect Syntax Error: "language/statements/function/param-duplicated-strict-body-3.js" @@ -549,7 +492,6 @@ Expect Syntax Error: "language/statements/function/rest-param-strict-body.js" Expect Syntax Error: "language/statements/function/static-init-await-binding-invalid.js" Expect Syntax Error: "language/statements/function/use-strict-with-non-simple-param.js" Expect Syntax Error: "language/statements/generators/array-destructuring-param-strict-body.js" -Expect Syntax Error: "language/statements/generators/dflt-params-duplicates.js" Expect Syntax Error: "language/statements/generators/dflt-params-rest.js" Expect Syntax Error: "language/statements/generators/dstr/ary-ptrn-rest-init-ary.js" Expect Syntax Error: "language/statements/generators/dstr/ary-ptrn-rest-init-id.js" @@ -2357,6 +2299,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ╰── keyword cannot contain escape characters ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/dflt-params-duplicates.js:57:1] + 57 │ + 58 │ 0, (x = 0, x) => { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 59 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/arrow-function/dstr/ary-ptrn-rest-not-final-ary.js:51:1] 51 │ var f; @@ -2742,6 +2694,15 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ───── ╰──── + × Identifier `a` has already been declared + ╭─[language/expressions/arrow-function/params-duplicate.js:32:1] + 32 │ + 33 │ 0, (a, a) => { }; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Rest element must be last element ╭─[language/expressions/arrow-function/rest-params-trailing-comma-early-error.js:53:1] 53 │ @@ -2823,6 +2784,105 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ───────── ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-1.js:24:1] + 24 │ $DONOTEVALUATE(); + 25 │ var af = (x, [x]) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-2.js:24:1] + 24 │ $DONOTEVALUATE(); + 25 │ var af = ([x, x]) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-3.js:26:1] + 26 │ $DONOTEVALUATE(); + 27 │ var af = ([x], ...x) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-1.js:24:1] + 24 │ $DONOTEVALUATE(); + 25 │ var af = (x, {x}) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-2.js:26:1] + 26 │ $DONOTEVALUATE(); + 27 │ var af = (x, {y: x}) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-3.js:26:1] + 26 │ $DONOTEVALUATE(); + 27 │ var af = ({x}, {y: x}) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-4.js:28:1] + 28 │ $DONOTEVALUATE(); + 29 │ var af = ({x}, ...x) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-5.js:28:1] + 28 │ $DONOTEVALUATE(); + 29 │ var af = ({y: x}, ...x) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-6.js:26:1] + 26 │ $DONOTEVALUATE(); + 27 │ var af = ({y: x, x}) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-rest.js:22:1] + 22 │ $DONOTEVALUATE(); + 23 │ var af = (x, ...x) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + + × Identifier `x` has already been declared + ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates.js:22:1] + 22 │ $DONOTEVALUATE(); + 23 │ var af = (x, x) => 1; + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + ╰──── + × Cannot assign to 'eval' in strict mode ╭─[language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-eval.js:23:1] 23 │ $DONOTEVALUATE(); @@ -6050,6 +6110,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ───── ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/async-arrow-function/dflt-params-duplicates.js:49:1] + 49 │ + 50 │ (async (x = 0, x) => { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 51 │ + ╰──── + × Cannot assign to 'arguments' in strict mode ╭─[language/expressions/async-arrow-function/early-errors-arrow-arguments-in-formal-parameters.js:15:1] 15 │ @@ -6090,6 +6160,15 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ───── ╰──── + × Identifier `a` has already been declared + ╭─[language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js:34:1] + 34 │ + 35 │ async(a, a) => { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Cannot assign to 'eval' in strict mode ╭─[language/expressions/async-arrow-function/early-errors-arrow-eval-in-formal-parameters.js:15:1] 15 │ @@ -6360,6 +6439,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 30 │ }; ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/async-function/named-dflt-params-duplicates.js:35:1] + 35 │ + 36 │ (async function f(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 37 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/async-function/named-rest-params-trailing-comma-early-error.js:32:1] 32 │ @@ -6369,6 +6458,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 34 │ ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/async-function/nameless-dflt-params-duplicates.js:35:1] + 35 │ + 36 │ (async function(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 37 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/async-function/nameless-rest-params-trailing-comma-early-error.js:32:1] 32 │ @@ -6444,6 +6543,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 31 │ }; ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/async-generator/dflt-params-duplicates.js:38:1] + 38 │ + 39 │ 0, async function*(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 40 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/async-generator/dstr/ary-ptrn-rest-not-final-ary.js:32:1] 32 │ var f; @@ -6782,6 +6891,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 31 │ }; ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/async-generator/named-dflt-params-duplicates.js:38:1] + 38 │ + 39 │ 0, async function* g(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 40 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/async-generator/named-rest-params-trailing-comma-early-error.js:35:1] 35 │ @@ -7108,6 +7227,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 36 │ }}; ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/async-gen-method-static/dflt-params-duplicates.js:62:1] + 62 │ 0, class { + 63 │ static async *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 64 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/async-gen-method-static/rest-params-trailing-comma-early-error.js:59:1] 59 │ 0, class { @@ -7292,6 +7421,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 36 │ }}; ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/async-gen-method/dflt-params-duplicates.js:62:1] + 62 │ 0, class { + 63 │ async *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 64 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/async-gen-method/rest-params-trailing-comma-early-error.js:59:1] 59 │ 0, class { @@ -7476,6 +7615,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 37 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/async-method-static/dflt-params-duplicates.js:60:1] + 60 │ var C = class { + 61 │ static async method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 62 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/async-method-static/rest-params-trailing-comma-early-error.js:56:1] 56 │ var C = class { @@ -7551,6 +7700,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 37 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/async-method/dflt-params-duplicates.js:60:1] + 60 │ var C = class { + 61 │ static async method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 62 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/async-method/rest-params-trailing-comma-early-error.js:56:1] 56 │ var C = class { @@ -12180,6 +12339,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 27 │ }; ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/gen-method-static/dflt-params-duplicates.js:83:1] + 83 │ 0, class { + 84 │ static *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 85 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/gen-method-static/rest-params-trailing-comma-early-error.js:80:1] 80 │ 0, class { @@ -12298,6 +12467,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 33 │ throw new Test262Error(); ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/gen-method/dflt-params-duplicates.js:83:1] + 83 │ 0, class { + 84 │ *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 85 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/gen-method/rest-params-trailing-comma-early-error.js:80:1] 80 │ 0, class { @@ -12432,6 +12611,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 22 │ }; ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/method-static/dflt-params-duplicates.js:79:1] + 79 │ 0, class { + 80 │ static method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 81 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/method-static/rest-params-trailing-comma-early-error.js:75:1] 75 │ 0, class { @@ -12441,6 +12630,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 77 │ ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/class/method/dflt-params-duplicates.js:79:1] + 79 │ 0, class { + 80 │ method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 81 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/class/method/rest-params-trailing-comma-early-error.js:75:1] 75 │ 0, class { @@ -13687,6 +13886,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" ╰──── help: Wrap unary expression in parentheses to enforce operator precedence + × Identifier `x` has already been declared + ╭─[language/expressions/function/dflt-params-duplicates.js:58:1] + 58 │ + 59 │ 0, function(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 60 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/function/dstr/ary-ptrn-rest-not-final-ary.js:52:1] 52 │ var f; @@ -13825,6 +14034,42 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 23 │ paramValue = x; ╰──── + × Identifier `param` has already been declared + ╭─[language/expressions/function/param-duplicated-strict-1.js:21:1] + 21 │ + 22 │ (function (param, param) { }); + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + + × Identifier `param1` has already been declared + ╭─[language/expressions/function/param-duplicated-strict-2.js:22:1] + 22 │ + 23 │ (function (param1, param2, param1) { }); + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `param1` has already been declared here + ╰──── + + × Identifier `param` has already been declared + ╭─[language/expressions/function/param-duplicated-strict-3.js:21:1] + 21 │ + 22 │ (function (param, param, param) { }); + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + + × Identifier `param` has already been declared + ╭─[language/expressions/function/param-duplicated-strict-3.js:21:1] + 21 │ + 22 │ (function (param, param, param) { }); + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + × Rest element must be last element ╭─[language/expressions/function/rest-params-trailing-comma-early-error.js:54:1] 54 │ @@ -13834,6 +14079,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 56 │ ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/generators/dflt-params-duplicates.js:59:1] + 59 │ + 60 │ 0, function*(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 61 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/generators/dstr/ary-ptrn-rest-not-final-ary.js:52:1] 52 │ var f; @@ -14805,6 +15060,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 30 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/object/method-definition/async-gen-meth-dflt-params-duplicates.js:43:1] + 43 │ 0, { + 44 │ async *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 45 │ + ╰──── + × Keywords cannot contain escape characters ╭─[language/expressions/object/method-definition/async-gen-meth-escaped-async.js:24:1] 24 │ ({ @@ -14932,6 +15197,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 28 │ throw new Test262Error(); ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/object/method-definition/async-meth-dflt-params-duplicates.js:36:1] + 36 │ ({ + 37 │ async *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 38 │ + ╰──── + × Keywords cannot contain escape characters ╭─[language/expressions/object/method-definition/async-meth-escaped-async.js:24:1] 24 │ ({ @@ -14950,6 +15225,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 35 │ ╰──── + × Identifier `a` has already been declared + ╭─[language/expressions/object/method-definition/early-errors-object-async-method-duplicate-parameters.js:26:1] + 26 │ ({ + 27 │ async foo(a, a) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + 28 │ }) + ╰──── + × Cannot assign to 'arguments' in strict mode ╭─[language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js:16:1] 16 │ ({ @@ -14992,6 +15277,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 17 │ }) ╰──── + × Identifier `a` has already been declared + ╭─[language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js:25:1] + 25 │ ({ + 26 │ foo(a, a) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + 27 │ }) + ╰──── + × Cannot assign to 'eval' in strict mode ╭─[language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js:16:1] 16 │ ({ @@ -15090,6 +15385,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 25 │ }); ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/object/method-definition/gen-meth-dflt-params-duplicates.js:65:1] + 65 │ 0, { + 66 │ *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 67 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/object/method-definition/gen-meth-rest-params-trailing-comma-early-error.js:62:1] 62 │ 0, { @@ -15267,6 +15572,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 21 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/expressions/object/method-definition/meth-dflt-params-duplicates.js:61:1] + 61 │ 0, { + 62 │ method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 63 │ + ╰──── + × Rest element must be last element ╭─[language/expressions/object/method-definition/meth-rest-params-trailing-comma-early-error.js:57:1] 57 │ 0, { @@ -20158,6 +20473,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 30 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/async-function/dflt-params-duplicates.js:35:1] + 35 │ + 36 │ async function f(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 37 │ + ╰──── + × Cannot assign to 'arguments' in strict mode ╭─[language/statements/async-function/early-errors-declaration-arguments-in-formal-parameters.js:15:1] 15 │ @@ -20211,6 +20536,15 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ───── ╰──── + × Identifier `a` has already been declared + ╭─[language/statements/async-function/early-errors-declaration-duplicate-parameters.js:16:1] + 16 │ + 17 │ async function foo(a, a) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + ╰──── + × Cannot assign to 'eval' in strict mode ╭─[language/statements/async-function/early-errors-declaration-eval-in-formal-parameters.js:15:1] 15 │ @@ -20344,6 +20678,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 31 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/async-generator/dflt-params-duplicates.js:38:1] + 38 │ + 39 │ async function* f(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 40 │ + ╰──── + × Rest element must be last element ╭─[language/statements/async-generator/dstr/ary-ptrn-rest-not-final-ary.js:31:1] 31 │ var callCount = 0; @@ -20830,6 +21174,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 36 │ }} ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/async-gen-method-static/dflt-params-duplicates.js:62:1] + 62 │ class C { + 63 │ static async *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 64 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/async-gen-method-static/rest-params-trailing-comma-early-error.js:59:1] 59 │ class C { @@ -21014,6 +21368,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 36 │ }} ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/async-gen-method/dflt-params-duplicates.js:61:1] + 61 │ class C { + 62 │ async *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 63 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/async-gen-method/rest-params-trailing-comma-early-error.js:58:1] 58 │ class C { @@ -21207,6 +21571,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 37 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/async-method-static/dflt-params-duplicates.js:59:1] + 59 │ class C { + 60 │ static async method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 61 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/async-method-static/rest-params-trailing-comma-early-error.js:55:1] 55 │ class C { @@ -21282,6 +21656,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 37 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/async-method/dflt-params-duplicates.js:60:1] + 60 │ class C { + 61 │ async method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 62 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/async-method/rest-params-trailing-comma-early-error.js:56:1] 56 │ class C { @@ -21361,6 +21745,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ───── ╰──── + × Identifier `a` has already been declared + ╭─[language/statements/class/definition/early-errors-class-async-method-duplicate-parameters.js:27:1] + 27 │ class Foo { + 28 │ async foo(a, a) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + 29 │ } + ╰──── + × Cannot assign to 'arguments' in strict mode ╭─[language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js:14:1] 14 │ class Foo { @@ -21394,6 +21788,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 16 │ } ╰──── + × Identifier `a` has already been declared + ╭─[language/statements/class/definition/early-errors-class-method-duplicate-parameters.js:26:1] + 26 │ class Foo { + 27 │ foo(a, a) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `a` has already been declared here + 28 │ } + ╰──── + × Cannot assign to 'eval' in strict mode ╭─[language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js:14:1] 14 │ class Foo { @@ -26097,6 +26501,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 27 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/gen-method-static/dflt-params-duplicates.js:81:1] + 81 │ class C { + 82 │ static *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 83 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/gen-method-static/rest-params-trailing-comma-early-error.js:78:1] 78 │ class C { @@ -26215,6 +26629,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 33 │ throw new Test262Error(); ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/gen-method/dflt-params-duplicates.js:81:1] + 81 │ class C { + 82 │ *method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 83 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/gen-method/rest-params-trailing-comma-early-error.js:78:1] 78 │ class C { @@ -26349,6 +26773,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 22 │ } ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/method-static/dflt-params-duplicates.js:78:1] + 78 │ class C { + 79 │ static method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 80 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/method-static/rest-params-trailing-comma-early-error.js:74:1] 74 │ class C { @@ -26358,6 +26792,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 76 │ ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/class/method/dflt-params-duplicates.js:78:1] + 78 │ class C { + 79 │ method(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 80 │ + ╰──── + × Rest element must be last element ╭─[language/statements/class/method/rest-params-trailing-comma-early-error.js:74:1] 74 │ class C { @@ -28925,6 +29369,24 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ───────── ╰──── + × Identifier `param` has already been declared + ╭─[language/statements/function/13.1-5gs.js:16:1] + 16 │ + 17 │ function _13_1_5_fun(param, param) { } + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + + × Identifier `param` has already been declared + ╭─[language/statements/function/13.1-8gs.js:16:1] + 16 │ + 17 │ var _13_1_8_fun = function (param, param) { }; + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + × Invalid Unicode escape sequence ╭─[language/statements/function/S13_A7_T3.js:14:1] 14 │ @@ -28949,6 +29411,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" · ╰── Invalid Unicode escape sequence ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/function/dflt-params-duplicates.js:59:1] + 59 │ + 60 │ function f(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 61 │ + ╰──── + × Rest element must be last element ╭─[language/statements/function/dstr/ary-ptrn-rest-not-final-ary.js:52:1] 52 │ var callCount = 0; @@ -29157,6 +29629,42 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 23 │ paramValue = x; ╰──── + × Identifier `param` has already been declared + ╭─[language/statements/function/param-duplicated-strict-1.js:21:1] + 21 │ + 22 │ function _13_1_5_fun(param, param) { } + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + + × Identifier `param1` has already been declared + ╭─[language/statements/function/param-duplicated-strict-2.js:22:1] + 22 │ + 23 │ function _13_1_6_fun(param1, param2, param1) { } + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `param1` has already been declared here + ╰──── + + × Identifier `param` has already been declared + ╭─[language/statements/function/param-duplicated-strict-3.js:21:1] + 21 │ + 22 │ function _13_1_7_fun(param, param, param) { } + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + + × Identifier `param` has already been declared + ╭─[language/statements/function/param-duplicated-strict-3.js:21:1] + 21 │ + 22 │ function _13_1_7_fun(param, param, param) { } + · ──┬── ──┬── + · │ ╰── It can not be redeclared here + · ╰── `param` has already been declared here + ╰──── + × Cannot assign to 'eval' in strict mode ╭─[language/statements/function/param-eval-strict.js:21:1] 21 │ @@ -29173,6 +29681,16 @@ Expect to Parse: "language/statements/function/S14_A5_T2.js" 57 │ ╰──── + × Identifier `x` has already been declared + ╭─[language/statements/generators/dflt-params-duplicates.js:59:1] + 59 │ + 60 │ function* f(x = 0, x) { + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 61 │ + ╰──── + × Rest element must be last element ╭─[language/statements/generators/dstr/ary-ptrn-rest-not-final-ary.js:51:1] 51 │ var callCount = 0; diff --git a/tasks/coverage/typescript.snap b/tasks/coverage/typescript.snap index 97540509f..bbd6ba823 100644 --- a/tasks/coverage/typescript.snap +++ b/tasks/coverage/typescript.snap @@ -1,7 +1,7 @@ TypeScript Summary: AST Parsed : 2305/2338 (98.59%) Positive Passed: 2305/2338 (98.59%) -Negative Passed: 655/2532 (25.87%) +Negative Passed: 657/2532 (25.95%) Expect Syntax Error: "Symbols/ES5SymbolProperty2.ts" Expect Syntax Error: "Symbols/ES5SymbolProperty6.ts" Expect Syntax Error: "additionalChecks/noPropertyAccessFromIndexSignature1.ts" @@ -472,7 +472,6 @@ Expect Syntax Error: "es6/destructuring/destructuringInFunctionType.ts" Expect Syntax Error: "es6/destructuring/destructuringObjectBindingPatternAndAssignment4.ts" Expect Syntax Error: "es6/destructuring/destructuringParameterDeclaration1ES5.ts" Expect Syntax Error: "es6/destructuring/destructuringParameterDeclaration1ES5iterable.ts" -Expect Syntax Error: "es6/destructuring/destructuringParameterDeclaration1ES6.ts" Expect Syntax Error: "es6/destructuring/destructuringParameterDeclaration3ES5.ts" Expect Syntax Error: "es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts" Expect Syntax Error: "es6/destructuring/destructuringParameterDeclaration3ES6.ts" @@ -1608,7 +1607,6 @@ Expect Syntax Error: "types/nonPrimitive/nonPrimitiveStrictNull.ts" Expect Syntax Error: "types/nonPrimitive/nonPrimitiveUnionIntersection.ts" Expect Syntax Error: "types/objectTypeLiteral/callSignatures/callSignatureWithOptionalParameterAndInitializer.ts" Expect Syntax Error: "types/objectTypeLiteral/callSignatures/callSignaturesThatDifferOnlyByReturnType2.ts" -Expect Syntax Error: "types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts" Expect Syntax Error: "types/objectTypeLiteral/callSignatures/callSignaturesWithParameterInitializers.ts" Expect Syntax Error: "types/objectTypeLiteral/callSignatures/constructSignatureWithAccessibilityModifiersOnParameters.ts" Expect Syntax Error: "types/objectTypeLiteral/callSignatures/constructSignatureWithAccessibilityModifiersOnParameters2.ts" @@ -4800,6 +4798,26 @@ Expect to Parse: "salsa/privateIdentifierExpando.ts" 3 │ var {i}: string | number = { i: 2 }; ╰──── + × Identifier `number` has already been declared + ╭─[es6/destructuring/destructuringParameterDeclaration1ES6.ts:96:1] + 96 │ + 97 │ function e6({x: [number, number, number]}) { } // error, duplicate identifier; + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `number` has already been declared here + 98 │ + ╰──── + + × Identifier `number` has already been declared + ╭─[es6/destructuring/destructuringParameterDeclaration1ES6.ts:96:1] + 96 │ + 97 │ function e6({x: [number, number, number]}) { } // error, duplicate identifier; + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `number` has already been declared here + 98 │ + ╰──── + × Expect token ╭─[es6/destructuring/destructuringParameterDeclaration2.ts:6:1] 6 │ function a0([a, b, [[c]]]: [number, number, string[][]]) { } @@ -11400,6 +11418,146 @@ Expect to Parse: "salsa/privateIdentifierExpando.ts" 13 │ var f8 = (private x: T, public y: T) => { } ╰──── + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:5:1] + 5 │ var f2 = function (x, x) { } + 6 │ var f3 = (x, x) => { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 7 │ var f4 = (x: T, x: T) => { } + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:6:1] + 6 │ var f3 = (x, x) => { } + 7 │ var f4 = (x: T, x: T) => { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 8 │ + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:11:1] + 11 │ var f6 = function (x: string, x: number) { } + 12 │ var f7 = (x: string, x: number) => { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 13 │ var f8 = (x: T, y: T) => { } + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:15:1] + 15 │ class C { + 16 │ foo(x, x) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 17 │ foo2(x: number, x: string) { } + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:16:1] + 16 │ foo(x, x) { } + 17 │ foo2(x: number, x: string) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 18 │ foo3(x: T, x: T) { } + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:17:1] + 17 │ foo2(x: number, x: string) { } + 18 │ foo3(x: T, x: T) { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 19 │ } + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:21:1] + 21 │ interface I { + 22 │ (x, x); + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 23 │ (x: string, x: number); + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:22:1] + 22 │ (x, x); + 23 │ (x: string, x: number); + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 24 │ foo(x, x); + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:23:1] + 23 │ (x: string, x: number); + 24 │ foo(x, x); + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 25 │ foo(x: number, x: string); + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:24:1] + 24 │ foo(x, x); + 25 │ foo(x: number, x: string); + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 26 │ foo3(x: T, x: T); + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:25:1] + 25 │ foo(x: number, x: string); + 26 │ foo3(x: T, x: T); + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 27 │ } + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:29:1] + 29 │ var a: { + 30 │ foo(x, x); + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 31 │ foo2(x: number, x: string); + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:30:1] + 30 │ foo(x, x); + 31 │ foo2(x: number, x: string); + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 32 │ }; + ╰──── + + × Identifier `x` has already been declared + ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts:36:1] + 36 │ a: function foo(x: number, x: string) { }, + 37 │ b: (x: T, x: T) => { } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `x` has already been declared here + 38 │ } + ╰──── + × Automatic Semicolon Insertion ╭─[types/objectTypeLiteral/callSignatures/callSignaturesWithParameterInitializers2.ts:19:1] 19 │ var b = {