diff --git a/apps/oxlint/fixtures/import/test.js b/apps/oxlint/fixtures/import/test.js index 68f0e20a25e7e..02fe705715a2c 100644 --- a/apps/oxlint/fixtures/import/test.js +++ b/apps/oxlint/fixtures/import/test.js @@ -4,6 +4,6 @@ import * as foo from './foo'; console.log(foo); // import/no-default-export -export default function foo() {} +export default function () { } diff --git a/apps/oxlint/src/snapshots/fixtures__import_-c .oxlintrc.json test.js -c .oxlintrc-import-x.json test.js@oxlint.snap b/apps/oxlint/src/snapshots/fixtures__import_-c .oxlintrc.json test.js -c .oxlintrc-import-x.json test.js@oxlint.snap index 6a2cf10d55a2f..87ba223b2ac19 100644 --- a/apps/oxlint/src/snapshots/fixtures__import_-c .oxlintrc.json test.js -c .oxlintrc-import-x.json test.js@oxlint.snap +++ b/apps/oxlint/src/snapshots/fixtures__import_-c .oxlintrc.json test.js -c .oxlintrc-import-x.json test.js@oxlint.snap @@ -9,7 +9,7 @@ working directory: fixtures/import x ]8;;https://oxc.rs/docs/guide/usage/linter/rules/import/no-default-export.html\eslint-plugin-import(no-default-export)]8;;\: Prefer named exports ,-[test.js:7:8] 6 | // import/no-default-export - 7 | export default function foo() {} + 7 | export default function () { } : ^^^^^^^ 8 | `---- @@ -28,7 +28,7 @@ working directory: fixtures/import x ]8;;https://oxc.rs/docs/guide/usage/linter/rules/import/no-default-export.html\eslint-plugin-import(no-default-export)]8;;\: Prefer named exports ,-[test.js:7:8] 6 | // import/no-default-export - 7 | export default function foo() {} + 7 | export default function () { } : ^^^^^^^ 8 | `---- diff --git a/crates/oxc_semantic/src/builder.rs b/crates/oxc_semantic/src/builder.rs index e4f00a2c4d18f..e24c5ab76d2e6 100644 --- a/crates/oxc_semantic/src/builder.rs +++ b/crates/oxc_semantic/src/builder.rs @@ -25,7 +25,7 @@ use oxc_syntax::{ use crate::{ JSDocFinder, Semantic, - binder::{Binder, is_function_redeclared_not_allowed}, + binder::Binder, checker, class::ClassTableBuilder, diagnostics::redeclaration, @@ -443,38 +443,14 @@ impl<'a> SemanticBuilder<'a> { } if report_error { - self.check_and_report_redeclaration(name, span, symbol_id, excludes); + let flags = self.scoping.symbol_flags(symbol_id); + if flags.intersects(excludes) { + let symbol_span = self.scoping.symbol_span(symbol_id); + self.error(redeclaration(name, symbol_span, span)); + } } - Some(symbol_id) - } - - /// Check if a symbol with the same name has already been declared but - /// it actually is not allowed to be redeclared. - fn check_and_report_redeclaration( - &self, - name: &str, - span: Span, - symbol_id: SymbolId, - excludes: SymbolFlags, - ) { - let flags = self.scoping.symbol_flags(symbol_id); - let function_kind = if flags.is_function() { - self.nodes.kind(self.scoping.symbol_declaration(symbol_id)).as_function() - } else { - None - }; - if flags.intersects(excludes) - // Needs to further check if the previous declaration is a function and the function - // is not allowed to be redeclared. - // For example: `async function goo(); var goo;` - // ^^^ Redeclare - || (excludes == SymbolFlags::FunctionScopedVariableExcludes && - function_kind.is_some_and(|func| is_function_redeclared_not_allowed(func, self))) - { - let symbol_span = self.scoping.symbol_span(symbol_id); - self.error(redeclaration(name, symbol_span, span)); - } + Some(symbol_id) } /// Declare an unresolved reference in the current scope. diff --git a/crates/oxc_semantic/src/checker/javascript.rs b/crates/oxc_semantic/src/checker/javascript.rs index c6c7df864930e..ca730cd12b320 100644 --- a/crates/oxc_semantic/src/checker/javascript.rs +++ b/crates/oxc_semantic/src/checker/javascript.rs @@ -3,12 +3,13 @@ use rustc_hash::FxHashMap; use oxc_ast::{AstKind, ast::*}; use oxc_diagnostics::{LabeledSpan, OxcDiagnostic}; -use oxc_ecmascript::{IsSimpleParameterList, PropName}; +use oxc_ecmascript::{BoundNames, IsSimpleParameterList, PropName}; use oxc_span::{GetSpan, ModuleKind, Span}; use oxc_syntax::{ number::NumberBase, operator::{AssignmentOperator, BinaryOperator, LogicalOperator, UnaryOperator}, scope::ScopeFlags, + symbol::SymbolFlags, }; use crate::{AstNode, builder::SemanticBuilder, diagnostics::redeclaration}; @@ -431,6 +432,66 @@ pub fn check_function_declaration<'a>( }; } +// It is a Syntax Error if any element of the LexicallyDeclaredNames of +// StatementList also occurs in the VarDeclaredNames of StatementList. +pub fn check_variable_declarator_redeclaration( + decl: &VariableDeclarator, + ctx: &SemanticBuilder<'_>, +) { + if decl.kind != VariableDeclarationKind::Var || ctx.current_scope_flags().is_top() { + return; + } + + decl.id.bound_names(&mut |ident| { + let redeclarations = ctx.scoping.symbol_redeclarations(ident.symbol_id()); + let Some(rd) = redeclarations.iter().nth_back(1) else { return }; + + // `{ function f() {}; var f; }` is invalid in both strict and non-strict mode + if rd.flags.is_function() { + ctx.error(redeclaration(&ident.name, rd.span, decl.span)); + } + }); +} + +// It is a Syntax Error if the LexicallyDeclaredNames of StatementList contains any duplicate entries, +// unless the source text matched by this production is not strict mode code +// and the duplicate entries are only bound by FunctionDeclarations. +// https://tc39.es/ecma262/#sec-block-level-function-declarations-web-legacy-compatibility-semantics +pub fn check_function_redeclaration(func: &Function, ctx: &SemanticBuilder<'_>) { + let Some(id) = &func.id else { return }; + let symbol_id = id.symbol_id(); + + let redeclarations = ctx.scoping.symbol_redeclarations(symbol_id); + let Some(prev) = redeclarations.iter().nth_back(1) else { + // No redeclarations + return; + }; + + // Already checked in `check_redelcaration`, because it is also not allowed in TypeScript + // `let a; function a() {}` is invalid in both strict and non-strict mode + if prev.flags.contains(SymbolFlags::BlockScopedVariable) { + return; + } + + let current_scope_flags = ctx.current_scope_flags(); + if !current_scope_flags.is_strict_mode() { + if current_scope_flags.intersects(ScopeFlags::Top | ScopeFlags::Function) + && prev.flags.intersects(SymbolFlags::FunctionScopedVariable | SymbolFlags::Function) + { + // `function a() {}; function a() {}` and `var a; function a() {}` is invalid in non-strict mode + return; + } else if !(func.r#async || func.generator) { + // `{ var a; function a() {} }` is invalid in both strict and non-strict mode + let prev_function = ctx.nodes.kind(prev.declaration).as_function(); + if prev_function.is_some_and(|func| !(func.r#async || func.generator)) { + return; + } + } + } + + ctx.error(redeclaration(&id.name, prev.span, id.span)); +} + fn reg_exp_flag_u_and_v(span: Span) -> OxcDiagnostic { OxcDiagnostic::error( "The 'u' and 'v' regular expression flags cannot be enabled at the same time", diff --git a/crates/oxc_semantic/src/checker/mod.rs b/crates/oxc_semantic/src/checker/mod.rs index 2f147e8798bbd..ee22e6705df17 100644 --- a/crates/oxc_semantic/src/checker/mod.rs +++ b/crates/oxc_semantic/src/checker/mod.rs @@ -16,6 +16,8 @@ use crate::{AstNode, builder::SemanticBuilder}; pub fn check<'a>(node: &AstNode<'a>, ctx: &SemanticBuilder<'a>) { let kind = node.kind(); + let is_typescript = ctx.source_type.is_typescript(); + match kind { AstKind::Program(_) => { js::check_duplicate_class_elements(ctx); @@ -76,6 +78,9 @@ pub fn check<'a>(node: &AstNode<'a>, ctx: &SemanticBuilder<'a>) { js::check_class(class, node, ctx); ts::check_class(class, ctx); } + AstKind::Function(func) if !is_typescript => { + js::check_function_redeclaration(func, ctx); + } AstKind::MethodDefinition(method) => { js::check_method_definition(method, ctx); ts::check_method_definition(method, ctx); @@ -105,7 +110,12 @@ pub fn check<'a>(node: &AstNode<'a>, ctx: &SemanticBuilder<'a>) { AstKind::UnaryExpression(expr) => js::check_unary_expression(expr, ctx), AstKind::YieldExpression(expr) => js::check_yield_expression(expr, node, ctx), AstKind::VariableDeclaration(decl) => ts::check_variable_declaration(decl, ctx), - AstKind::VariableDeclarator(decl) => ts::check_variable_declarator(decl, ctx), + AstKind::VariableDeclarator(decl) => { + if !is_typescript { + js::check_variable_declarator_redeclaration(decl, ctx); + } + ts::check_variable_declarator(decl, ctx); + } AstKind::SimpleAssignmentTarget(target) => ts::check_simple_assignment_target(target, ctx), AstKind::TSInterfaceDeclaration(decl) => ts::check_ts_interface_declaration(decl, ctx), AstKind::TSTypeAnnotation(annot) => ts::check_ts_type_annotation(annot, ctx), diff --git a/tasks/coverage/snapshots/parser_babel.snap b/tasks/coverage/snapshots/parser_babel.snap index c1ecaadb28c5b..205c66a520d76 100644 --- a/tasks/coverage/snapshots/parser_babel.snap +++ b/tasks/coverage/snapshots/parser_babel.snap @@ -3,15 +3,13 @@ commit: 578ac4df parser_babel Summary: AST Parsed : 2303/2322 (99.18%) Positive Passed: 2282/2322 (98.28%) -Negative Passed: 1549/1673 (92.59%) +Negative Passed: 1551/1673 (92.71%) Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/annex-b/enabled/3.1-sloppy-labeled-functions-if-body/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/core/categorized/invalid-fn-decl-labeled-inside-if/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/core/categorized/invalid-fn-decl-labeled-inside-loop/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/core/categorized/invalid-startindex-and-startline-specified-without-startcolumn/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/core/categorized/startline-and-startcolumn-specified/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/core/categorized/startline-specified/input.js -Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-catch-func/input.js -Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-func-var-sloppy/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/es2015/class-methods/direct-super-in-object-method/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/es2015/destructuring/error-operator-for-default/input.js Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/es2015/for-of/invalid-let-as-identifier/input.js @@ -275,6 +273,18 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/es2022 × Identifier `x` has already been declared ╭─[babel/packages/babel-parser/test/fixtures/es2022/class-static-block/duplicate-function-var-name/input.js:3:11] 2 │ static { + 3 │ var x; + · ┬ + · ╰── `x` has already been declared here + 4 │ function x() {} + · ┬ + · ╰── It can not be redeclared here + 5 │ } + ╰──── + + × Identifier `x` has already been declared + ╭─[babel/packages/babel-parser/test/fixtures/es2022/class-static-block/duplicate-function-var-name/input.js:3:11] + 2 │ static { 3 │ var x; · ┬ · ╰── `x` has already been declared here @@ -1247,6 +1257,18 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc · ╰── `foo` has already been declared here ╰──── + × Identifier `foo` has already been declared + ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-catch-func/input.js:2:10] + 1 │ try { + 2 │ } catch (foo) { + · ─┬─ + · ╰── `foo` has already been declared here + 3 │ function foo() {} + · ─┬─ + · ╰── It can not be redeclared here + 4 │ } + ╰──── + × Identifier `foo` has already been declared ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-catch-let/input.js:2:10] 1 │ try { @@ -1323,6 +1345,16 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc · ╰── It can not be redeclared here ╰──── + × Identifier `foo` has already been declared + ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-class-func/input.js:1:7] + 1 │ class foo {}; + · ─┬─ + · ╰── `foo` has already been declared here + 2 │ function foo () {}; + · ─┬─ + · ╰── It can not be redeclared here + ╰──── + × Identifier `foo` has already been declared ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-class-let/input.js:1:7] 1 │ class foo {}; @@ -1359,6 +1391,24 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-func-gen/input.js:1:12] + 1 │ { function f() {} function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `foo` has already been declared + ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-func-module/input.js:1:10] + 1 │ function foo() {} + · ─┬─ + · ╰── `foo` has already been declared here + 2 │ function foo() {} + · ─┬─ + · ╰── It can not be redeclared here + ╰──── + × Identifier `foo` has already been declared ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-func-module/input.js:1:10] 1 │ function foo() {} @@ -1377,6 +1427,26 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc · ╰── `foo` has already been declared here ╰──── + × Identifier `foo` has already been declared + ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-func-module-sloppy/input.js:1:12] + 1 │ { function foo() {} function foo() {} } + · ─┬─ ─┬─ + · │ ╰── It can not be redeclared here + · ╰── `foo` has already been declared here + ╰──── + + × Identifier `foo` has already been declared + ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-func-var-sloppy/input.js:2:12] + 1 │ { + 2 │ function foo() {} + · ─┬─ + · ╰── `foo` has already been declared here + 3 │ var foo = 1; + · ───┬─── + · ╰── It can not be redeclared here + 4 │ } + ╰──── + × Identifier `f` has already been declared ╭─[babel/packages/babel-parser/test/fixtures/core/scope/dupl-bind-gen-func/input.js:1:13] 1 │ { function* f() {} function f() {} } diff --git a/tasks/coverage/snapshots/parser_test262.snap b/tasks/coverage/snapshots/parser_test262.snap index e7b1a8ec20e71..8c82d59a9ab49 100644 --- a/tasks/coverage/snapshots/parser_test262.snap +++ b/tasks/coverage/snapshots/parser_test262.snap @@ -2,8 +2,878 @@ commit: bc5c1417 parser_test262 Summary: AST Parsed : 44293/44293 (100.00%) -Positive Passed: 44293/44293 (100.00%) +Positive Passed: 44223/44293 (99.84%) Negative Passed: 4519/4519 (100.00%) +Expect to Parse: tasks/coverage/test262/test/built-ins/JSON/parse/reviver-forward-modifies-object.js + + × Identifier `assertOnlyOwnProperties` has already been declared + ╭─[test262/test/built-ins/JSON/parse/reviver-forward-modifies-object.js:13:10] + 12 │ + 13 │ function assertOnlyOwnProperties(object, props, message) { + · ───────────┬─────────── + · ╰── `assertOnlyOwnProperties` has already been declared here + 14 │ assert.compareArray(Object.getOwnPropertyNames(object), props, `${message}: object should have no other properties than expected`); + ╰──── + ╭─[test262/test/built-ins/JSON/parse/reviver-forward-modifies-object.js:49:10] + 48 │ + 49 │ function assertOnlyOwnProperties(object, props, message) { + · ───────────┬─────────── + · ╰── It can not be redeclared here + 50 │ assert.compareArray(Object.getOwnPropertyNames(object), props, `${message}: object should have no other properties than expected`); + ╰──── +Expect to Parse: tasks/coverage/test262/test/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T9.js + + × Identifier `__string` has already been declared + ╭─[test262/test/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T9.js:13:5] + 12 │ + 13 │ var __string; + · ────┬─── + · ╰── `__string` has already been declared here + 14 │ + 15 │ var __re = /1|12/; + 16 │ assert.sameValue(__re.exec(__string), null, '__re.exec() must return null'); + 17 │ + 18 │ function __string(){} + · ────┬─── + · ╰── It can not be redeclared here + ╰──── +Expect to Parse: tasks/coverage/test262/test/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T9.js + + × Identifier `__string` has already been declared + ╭─[test262/test/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T9.js:11:5] + 10 │ + 11 │ var __string; + · ────┬─── + · ╰── `__string` has already been declared here + 12 │ var __re = /1|12/; + 13 │ + 14 │ assert.sameValue( + 15 │ __re.test(__string), + 16 │ __re.exec(__string) !== null, + 17 │ '__re.test() must return __re.exec(__string) !== null' + 18 │ ); + 19 │ + 20 │ function __string(){} + · ────┬─── + · ╰── It can not be redeclared here + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/block-scope/syntax/redeclaration-global/allowed-to-redeclare-var-with-function-declaration.js + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration-global/allowed-to-redeclare-var-with-function-declaration.js:10:5] + 9 │ ---*/ + 10 │ var f; function f() {} + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + 11 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/destructuring/binding/syntax/recursive-array-and-object-patterns.js + + × Identifier `fn4` has already been declared + ╭─[test262/test/language/destructuring/binding/syntax/recursive-array-and-object-patterns.js:24:10] + 23 │ + 24 │ function fn4([], [[]], [[[[[[[[[x]]]]]]]]]) {} + · ─┬─ + · ╰── `fn4` has already been declared here + 25 │ + 26 │ function fn4([[x, y, ...z]]) {} + · ─┬─ + · ╰── It can not be redeclared here + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-do-while-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-do-while-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-do-while-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-do-while-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-return-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-return-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-return-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-return-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-while-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-while-import-source-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/nested-while-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/nested-while-script-code-valid.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/top-level-import-source-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/top-level-import-source-script-code-valid.js:17:5] + 16 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 17 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 18 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/syntax/valid/top-level-script-code-valid.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/syntax/valid/top-level-script-code-valid.js:17:5] + 16 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 17 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 18 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code.js + + × Identifier `smoosh` has already been declared + ╭─[test262/test/language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code.js:27:5] + 26 │ // https://tc39.github.io/ecma262/#sec-scripts-static-semantics-lexicallydeclarednames + 27 │ var smoosh; function smoosh() {} + · ───┬── ───┬── + · │ ╰── It can not be redeclared here + · ╰── `smoosh` has already been declared here + 28 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/function-code/S10.2.1_A4_T2.js + + × Identifier `x` has already been declared + ╭─[test262/test/language/function-code/S10.2.1_A4_T2.js:17:7] + 16 │ function f1(){ + 17 │ var x; + · ┬ + · ╰── `x` has already been declared here + 18 │ + 19 │ return x; + 20 │ + 21 │ function x(){ + · ┬ + · ╰── It can not be redeclared here + 22 │ return 7; + ╰──── + + × Identifier `x` has already been declared + ╭─[test262/test/language/function-code/S10.2.1_A4_T2.js:30:7] + 29 │ function f2(){ + 30 │ var x; + · ┬ + · ╰── `x` has already been declared here + 31 │ + 32 │ return typeof x; + 33 │ + 34 │ function x(){ + · ┬ + · ╰── It can not be redeclared here + 35 │ return 7; + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/global-code/decl-func-dup.js + + × Identifier `f` has already been declared + ╭─[test262/test/language/global-code/decl-func-dup.js:10:10] + 9 │ ---*/ + 10 │ function f() { return 1; } function f() { return 2; } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + 11 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/statements/function/S13.2.1_A6_T3.js + + × Identifier `__func` has already been declared + ╭─[test262/test/language/statements/function/S13.2.1_A6_T3.js:11:5] + 10 │ + 11 │ var __func, y, b; + · ───┬── + · ╰── `__func` has already been declared here + 12 │ + 13 │ function __func(arg1, arg2){ + · ───┬── + · ╰── It can not be redeclared here + 14 │ arg1++; + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/statements/function/S13_A19_T1.js + + × Identifier `__decl` has already been declared + ╭─[test262/test/language/statements/function/S13_A19_T1.js:22:5] + 21 │ + 22 │ var __decl = 1; + · ───┬── + · ╰── `__decl` has already been declared here + 23 │ + 24 │ //since statement was evaluted __decl turns to 1 from function + 25 │ ////////////////////////////////////////////////////////////////////////////// + 26 │ //CHECK#2 + 27 │ if (__decl !== 1) { + 28 │ throw new Test262Error('#2: __decl === 1. Actual: __decl ==='+__decl); + 29 │ } + 30 │ // + 31 │ ////////////////////////////////////////////////////////////////////////////// + 32 │ + 33 │ function __decl(){return 1;} + · ───┬── + · ╰── It can not be redeclared here + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/statements/function/S13_A19_T2.js + + × Identifier `__decl` has already been declared + ╭─[test262/test/language/statements/function/S13_A19_T2.js:24:9] + 23 │ + 24 │ var __decl = 1; + · ───┬── + · ╰── `__decl` has already been declared here + 25 │ + 26 │ //since statement was evaluted __decl turns to 1 from function + 27 │ ////////////////////////////////////////////////////////////////////////////// + 28 │ //CHECK#2 + 29 │ if (__decl !== 1) { + 30 │ throw new Test262Error('#2: __decl === 1. Actual: __decl ==='+__decl); + 31 │ } + 32 │ // + 33 │ ////////////////////////////////////////////////////////////////////////////// + 34 │ + 35 │ function __decl(){return 1;} + · ───┬── + · ╰── It can not be redeclared here + 36 │ })(); + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/statements/function/S13_A6_T1.js + + × Identifier `__func` has already been declared + ╭─[test262/test/language/statements/function/S13_A6_T1.js:13:10] + 12 │ + 13 │ function __func(){return 1}; + · ───┬── + · ╰── `__func` has already been declared here + 14 │ + 15 │ var __store__func = __func; + 16 │ + 17 │ var __1 = __func(); + 18 │ + 19 │ function __func(){return 'A'}; + · ───┬── + · ╰── It can not be redeclared here + 20 │ + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/statements/function/S13_A6_T2.js + + × Identifier `__func` has already been declared + ╭─[test262/test/language/statements/function/S13_A6_T2.js:26:10] + 25 │ + 26 │ function __func(){return "FIRST";}; + · ───┬── + · ╰── `__func` has already been declared here + 27 │ + 28 │ ////////////////////////////////////////////////////////////////////////////// + 29 │ //CHECK#2 + 30 │ __result = __func(); + 31 │ if (__result !== "SECOND") { + 32 │ throw new Test262Error('#2: __result === "SECOND". Actual: __result ==='+__result); + 33 │ } + 34 │ // + 35 │ ////////////////////////////////////////////////////////////////////////////// + 36 │ + 37 │ function __func(){return "SECOND";}; + · ───┬── + · ╰── It can not be redeclared here + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/statements/function/S14_A5_T1.js + + × Identifier `__func` has already been declared + ╭─[test262/test/language/statements/function/S14_A5_T1.js:23:10] + 22 │ + 23 │ function __func(){return "ascii"}; + · ───┬── + · ╰── `__func` has already been declared here + 24 │ function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"};//__func in unicode + · ──────────────────┬───────────────── + · ╰── It can not be redeclared here + 25 │ function __\u0066\u0075\u006e\u0063(){return "both"};//__func in unicode + ╰──── + + × Identifier `__func` has already been declared + ╭─[test262/test/language/statements/function/S14_A5_T1.js:24:10] + 23 │ function __func(){return "ascii"}; + 24 │ function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"};//__func in unicode + · ──────────────────┬───────────────── + · ╰── `__func` has already been declared here + 25 │ function __\u0066\u0075\u006e\u0063(){return "both"};//__func in unicode + · ─────────────┬──────────── + · ╰── It can not be redeclared here + ╰──── +Expect to Parse: tasks/coverage/test262/test/language/statements/function/S14_A5_T2.js + + × Identifier `__func` has already been declared + ╭─[test262/test/language/statements/function/S14_A5_T2.js:23:10] + 22 │ + 23 │ function __func(){return "ascii"}; + · ───┬── + · ╰── `__func` has already been declared here + 24 │ function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"};//__func in unicode + · ──────────────────┬───────────────── + · ╰── It can not be redeclared here + ╰──── × '0'-prefixed octal literals and octal escape sequences are deprecated ╭─[test262/test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-strict.js:19:4] @@ -1803,6 +2673,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-function.js:24:18] 23 │ + 24 │ { async function f() {} async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-function.js:24:18] + 23 │ 24 │ { async function f() {} async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -1812,6 +2691,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-generator.js:24:18] 23 │ + 24 │ { async function f() {} async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-generator.js:24:18] + 23 │ 24 │ { async function f() {} async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -1839,6 +2727,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-function.js:24:18] 23 │ + 24 │ { async function f() {} function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-function.js:24:18] + 23 │ 24 │ { async function f() {} function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -1848,6 +2745,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-generator.js:24:18] 23 │ + 24 │ { async function f() {} function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-function-name-redeclaration-attempt-with-generator.js:24:18] + 23 │ 24 │ { async function f() {} function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -1881,6 +2787,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-function.js:24:19] + 23 │ + 24 │ { async function* f() {} async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-generator.js:24:19] + 23 │ + 24 │ { async function* f() {} async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-generator.js:24:19] 23 │ @@ -1917,6 +2841,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-function.js:24:19] + 23 │ + 24 │ { async function* f() {} function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-generator.js:24:19] + 23 │ + 24 │ { async function* f() {} function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-generator.js:24:19] 23 │ @@ -1947,6 +2889,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/class-name-redeclaration-attempt-with-async-function.js:24:9] 23 │ + 24 │ { class f {} async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/class-name-redeclaration-attempt-with-async-function.js:24:9] + 23 │ 24 │ { class f {} async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -1956,6 +2907,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/class-name-redeclaration-attempt-with-async-generator.js:24:9] 23 │ + 24 │ { class f {} async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/class-name-redeclaration-attempt-with-async-generator.js:24:9] + 23 │ 24 │ { class f {} async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -1989,6 +2949,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/class-name-redeclaration-attempt-with-function.js:23:9] + 22 │ + 23 │ { class f {} function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/class-name-redeclaration-attempt-with-generator.js:24:9] + 23 │ + 24 │ { class f {} function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/class-name-redeclaration-attempt-with-generator.js:24:9] 23 │ @@ -2176,6 +3154,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-async-function.js:24:12] 23 │ + 24 │ { function f() {} async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-async-function.js:24:12] + 23 │ 24 │ { function f() {} async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -2185,6 +3172,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-async-generator.js:24:12] 23 │ + 24 │ { function f() {} async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-async-generator.js:24:12] + 23 │ 24 │ { function f() {} async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -2218,6 +3214,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-function.js:23:12] + 22 │ + 23 │ { function f() {} function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-generator.js:24:12] + 23 │ + 24 │ { function f() {} function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-generator.js:24:12] 23 │ @@ -2254,6 +3268,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-function.js:24:13] + 23 │ + 24 │ { function* f() {} async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-generator.js:24:13] + 23 │ + 24 │ { function* f() {} async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-generator.js:24:13] 23 │ @@ -2290,6 +3322,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/generator-name-redeclaration-attempt-with-function.js:24:13] + 23 │ + 24 │ { function* f() {} function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/generator-name-redeclaration-attempt-with-generator.js:24:13] + 23 │ + 24 │ { function* f() {} function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/generator-name-redeclaration-attempt-with-generator.js:24:13] 23 │ @@ -2326,6 +3376,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/inner-block-var-name-redeclaration-attempt-with-async-function.js:40:9] + 39 │ + 40 │ { { var f; } async function f() {}; } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/inner-block-var-name-redeclaration-attempt-with-async-generator.js:40:9] + 39 │ + 40 │ { { var f; } async function* f() {}; } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/inner-block-var-name-redeclaration-attempt-with-async-generator.js:40:9] 39 │ @@ -2356,6 +3424,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/inner-block-var-name-redeclaration-attempt-with-function.js:39:9] 38 │ + 39 │ { { var f; } function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/inner-block-var-name-redeclaration-attempt-with-function.js:39:9] + 38 │ 39 │ { { var f; } function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -2365,6 +3442,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/inner-block-var-name-redeclaration-attempt-with-generator.js:40:9] 39 │ + 40 │ { { var f; } function* f() {}; } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/inner-block-var-name-redeclaration-attempt-with-generator.js:40:9] + 39 │ 40 │ { { var f; } function* f() {}; } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -2518,6 +3604,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-async-function.js:24:7] 23 │ + 24 │ { var f; async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-async-function.js:24:7] + 23 │ 24 │ { var f; async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -2527,6 +3622,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-async-generator.js:24:7] 23 │ + 24 │ { var f; async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-async-generator.js:24:7] + 23 │ 24 │ { var f; async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -2554,6 +3658,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-function.js:23:7] 22 │ + 23 │ { var f; function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-function.js:23:7] + 22 │ 23 │ { var f; function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -2563,6 +3676,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-generator.js:24:7] 23 │ + 24 │ { var f; function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/block-scope/syntax/redeclaration/var-name-redeclaration-attempt-with-generator.js:24:7] + 23 │ 24 │ { var f; function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -23751,6 +24873,17 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/module-code/early-dup-export-decl.js:17:17] 16 │ + 17 │ export function f() {} + · ┬ + · ╰── `f` has already been declared here + 18 │ export function *f() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/module-code/early-dup-export-decl.js:17:17] + 16 │ 17 │ export function f() {} · ┬ · ╰── `f` has already been declared here @@ -23841,6 +24974,28 @@ Negative Passed: 4519/4519 (100.00%) · ╰── It can not be redeclared here ╰──── + × Identifier `x` has already been declared + ╭─[test262/test/language/module-code/early-dup-top-function-async-generator.js:19:10] + 18 │ + 19 │ function x() {} + · ┬ + · ╰── `x` has already been declared here + 20 │ async function* x() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `x` has already been declared + ╭─[test262/test/language/module-code/early-dup-top-function-async.js:19:10] + 18 │ + 19 │ function x() {} + · ┬ + · ╰── `x` has already been declared here + 20 │ async function x() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + × Identifier `x` has already been declared ╭─[test262/test/language/module-code/early-dup-top-function-async.js:19:10] 18 │ @@ -23855,6 +25010,17 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `x` has already been declared ╭─[test262/test/language/module-code/early-dup-top-function-generator.js:19:10] 18 │ + 19 │ function x() {} + · ┬ + · ╰── `x` has already been declared here + 20 │ function* x() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `x` has already been declared + ╭─[test262/test/language/module-code/early-dup-top-function-generator.js:19:10] + 18 │ 19 │ function x() {} · ┬ · ╰── `x` has already been declared here @@ -23866,6 +25032,17 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `x` has already been declared ╭─[test262/test/language/module-code/early-dup-top-function.js:19:10] 18 │ + 19 │ function x() {} + · ┬ + · ╰── `x` has already been declared here + 20 │ function x() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `x` has already been declared + ╭─[test262/test/language/module-code/early-dup-top-function.js:19:10] + 18 │ 19 │ function x() {} · ┬ · ╰── `x` has already been declared here @@ -24020,6 +25197,28 @@ Negative Passed: 4519/4519 (100.00%) · ╰── It can not be redeclared here ╰──── + × Identifier `A` has already been declared + ╭─[test262/test/language/module-code/export-default-asyncfunction-declaration-binding-exists.js:22:7] + 21 │ + 22 │ class A {}; + · ┬ + · ╰── `A` has already been declared here + 23 │ export default async function A() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `AG` has already been declared + ╭─[test262/test/language/module-code/export-default-asyncgenerator-declaration-binding-exists.js:22:7] + 21 │ + 22 │ class AG {} + · ─┬ + · ╰── `AG` has already been declared here + 23 │ export default async function * AG() {} + · ─┬ + · ╰── It can not be redeclared here + ╰──── + × Identifier `AG` has already been declared ╭─[test262/test/language/module-code/export-default-asyncgenerator-declaration-binding-exists.js:22:7] 21 │ @@ -24034,6 +25233,18 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `F` has already been declared ╭─[test262/test/language/module-code/export-default-function-declaration-binding-exists.js:22:7] 21 │ + 22 │ class F {} + · ┬ + · ╰── `F` has already been declared here + 23 │ export default function F() {} + · ┬ + · ╰── It can not be redeclared here + 24 │ + ╰──── + + × Identifier `F` has already been declared + ╭─[test262/test/language/module-code/export-default-function-declaration-binding-exists.js:22:7] + 21 │ 22 │ class F {} · ┬ · ╰── `F` has already been declared here @@ -24046,6 +25257,17 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `G` has already been declared ╭─[test262/test/language/module-code/export-default-generator-declaration-binding-exists.js:22:7] 21 │ + 22 │ class G {} + · ┬ + · ╰── `G` has already been declared here + 23 │ export default function * G() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `G` has already been declared + ╭─[test262/test/language/module-code/export-default-generator-declaration-binding-exists.js:22:7] + 21 │ 22 │ class G {} · ┬ · ╰── `G` has already been declared here @@ -24806,6 +26028,17 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/module-code/parse-err-hoist-lex-fun.js:24:5] 23 │ + 24 │ var f; + · ┬ + · ╰── `f` has already been declared here + 25 │ function f() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/module-code/parse-err-hoist-lex-fun.js:24:5] + 23 │ 24 │ var f; · ┬ · ╰── `f` has already been declared here @@ -24817,6 +26050,17 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `g` has already been declared ╭─[test262/test/language/module-code/parse-err-hoist-lex-gen.js:26:5] 25 │ + 26 │ var g; + · ┬ + · ╰── `g` has already been declared here + 27 │ function* g() {} + · ┬ + · ╰── It can not be redeclared here + ╰──── + + × Identifier `g` has already been declared + ╭─[test262/test/language/module-code/parse-err-hoist-lex-gen.js:26:5] + 25 │ 26 │ var g; · ┬ · ╰── `g` has already been declared here @@ -37364,6 +38608,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-function.js:24:37] 23 │ + 24 │ switch (0) { case 1: async function f() {} default: async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-function.js:24:37] + 23 │ 24 │ switch (0) { case 1: async function f() {} default: async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37373,6 +38626,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-generator.js:24:37] 23 │ + 24 │ switch (0) { case 1: async function f() {} default: async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-generator.js:24:37] + 23 │ 24 │ switch (0) { case 1: async function f() {} default: async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37400,6 +38662,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-function.js:24:37] 23 │ + 24 │ switch (0) { case 1: async function f() {} default: function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-function.js:24:37] + 23 │ 24 │ switch (0) { case 1: async function f() {} default: function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37409,6 +38680,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-generator.js:24:37] 23 │ + 24 │ switch (0) { case 1: async function f() {} default: function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-generator.js:24:37] + 23 │ 24 │ switch (0) { case 1: async function f() {} default: function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37436,6 +38716,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-function.js:24:38] 23 │ + 24 │ switch (0) { case 1: async function* f() {} default: async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-function.js:24:38] + 23 │ 24 │ switch (0) { case 1: async function* f() {} default: async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37445,6 +38734,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-generator.js:24:38] 23 │ + 24 │ switch (0) { case 1: async function* f() {} default: async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-generator.js:24:38] + 23 │ 24 │ switch (0) { case 1: async function* f() {} default: async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37472,6 +38770,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-function.js:24:38] 23 │ + 24 │ switch (0) { case 1: async function* f() {} default: function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-function.js:24:38] + 23 │ 24 │ switch (0) { case 1: async function* f() {} default: function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37481,6 +38788,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-generator.js:24:38] 23 │ + 24 │ switch (0) { case 1: async function* f() {} default: function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-generator.js:24:38] + 23 │ 24 │ switch (0) { case 1: async function* f() {} default: function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37508,6 +38824,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/class-name-redeclaration-attempt-with-async-function.js:24:28] 23 │ + 24 │ switch (0) { case 1: class f {} default: async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/class-name-redeclaration-attempt-with-async-function.js:24:28] + 23 │ 24 │ switch (0) { case 1: class f {} default: async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37517,6 +38842,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/class-name-redeclaration-attempt-with-async-generator.js:24:28] 23 │ + 24 │ switch (0) { case 1: class f {} default: async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/class-name-redeclaration-attempt-with-async-generator.js:24:28] + 23 │ 24 │ switch (0) { case 1: class f {} default: async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37550,6 +38884,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/class-name-redeclaration-attempt-with-function.js:23:28] + 22 │ + 23 │ switch (0) { case 1: class f {} default: function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/class-name-redeclaration-attempt-with-generator.js:24:28] + 23 │ + 24 │ switch (0) { case 1: class f {} default: function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/class-name-redeclaration-attempt-with-generator.js:24:28] 23 │ @@ -37658,6 +39010,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/function-name-redeclaration-attempt-with-async-function.js:24:31] + 23 │ + 24 │ switch (0) { case 1: function f() {} default: async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/function-name-redeclaration-attempt-with-async-generator.js:24:31] + 23 │ + 24 │ switch (0) { case 1: function f() {} default: async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/function-name-redeclaration-attempt-with-async-generator.js:24:31] 23 │ @@ -37694,6 +39064,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/function-name-redeclaration-attempt-with-function.js:23:31] + 22 │ + 23 │ switch (0) { case 1: function f() {} default: function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/function-name-redeclaration-attempt-with-generator.js:24:31] + 23 │ + 24 │ switch (0) { case 1: function f() {} default: function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/function-name-redeclaration-attempt-with-generator.js:24:31] 23 │ @@ -37724,6 +39112,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-function.js:24:32] 23 │ + 24 │ switch (0) { case 1: function* f() {} default: async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-function.js:24:32] + 23 │ 24 │ switch (0) { case 1: function* f() {} default: async function f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37733,6 +39130,15 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-generator.js:24:32] 23 │ + 24 │ switch (0) { case 1: function* f() {} default: async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-generator.js:24:32] + 23 │ 24 │ switch (0) { case 1: function* f() {} default: async function* f() {} } · ┬ ┬ · │ ╰── It can not be redeclared here @@ -37766,6 +39172,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/generator-name-redeclaration-attempt-with-function.js:24:32] + 23 │ + 24 │ switch (0) { case 1: function* f() {} default: function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/generator-name-redeclaration-attempt-with-generator.js:24:32] + 23 │ + 24 │ switch (0) { case 1: function* f() {} default: function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/generator-name-redeclaration-attempt-with-generator.js:24:32] 23 │ @@ -37874,6 +39298,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/var-name-redeclaration-attempt-with-async-function.js:24:26] + 23 │ + 24 │ switch (0) { case 1: var f; default: async function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/var-name-redeclaration-attempt-with-async-generator.js:24:26] + 23 │ + 24 │ switch (0) { case 1: var f; default: async function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/var-name-redeclaration-attempt-with-async-generator.js:24:26] 23 │ @@ -37910,6 +39352,24 @@ Negative Passed: 4519/4519 (100.00%) · ╰── `f` has already been declared here ╰──── + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/var-name-redeclaration-attempt-with-function.js:23:26] + 22 │ + 23 │ switch (0) { case 1: var f; default: function f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + + × Identifier `f` has already been declared + ╭─[test262/test/language/statements/switch/syntax/redeclaration/var-name-redeclaration-attempt-with-generator.js:24:26] + 23 │ + 24 │ switch (0) { case 1: var f; default: function* f() {} } + · ┬ ┬ + · │ ╰── It can not be redeclared here + · ╰── `f` has already been declared here + ╰──── + × Identifier `f` has already been declared ╭─[test262/test/language/statements/switch/syntax/redeclaration/var-name-redeclaration-attempt-with-generator.js:24:26] 23 │ @@ -38114,6 +39574,18 @@ Negative Passed: 4519/4519 (100.00%) × Identifier `e` has already been declared ╭─[test262/test/language/statements/try/early-catch-function.js:23:14] 22 │ try { + 23 │ } catch (e) { + · ┬ + · ╰── `e` has already been declared here + 24 │ function e(){} + · ┬ + · ╰── It can not be redeclared here + 25 │ } + ╰──── + + × Identifier `e` has already been declared + ╭─[test262/test/language/statements/try/early-catch-function.js:23:14] + 22 │ try { 23 │ } catch (e) { · ┬ · ╰── `e` has already been declared here diff --git a/tasks/coverage/snapshots/semantic_babel.snap b/tasks/coverage/snapshots/semantic_babel.snap index 664db2483aeb8..aa3c2d00e2891 100644 --- a/tasks/coverage/snapshots/semantic_babel.snap +++ b/tasks/coverage/snapshots/semantic_babel.snap @@ -99,6 +99,7 @@ semantic error: Unexpected token tasks/coverage/babel/packages/babel-parser/test/fixtures/es2022/class-static-block/duplicate-function-var-name/input.js semantic error: Identifier `x` has already been declared +Identifier `x` has already been declared tasks/coverage/babel/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/module/input.js semantic error: `await` is only allowed within async functions and at the top levels of modules