feat(semantic): add "did you mean?" suggestions to undefined name errors (#19102)

## Improve `undefined_export` and related errors with name suggestions

This PR adds helpful "did you mean?" suggestions to errors where names are not found, using Levenshtein distance (threshold=2).

### Example Output

**undefined_export with suggestion:**
```
Export 'myVarible' is not defined
help: Did you mean 'myVariable'?
```

**private_field_undeclared with suggestion:**
```
Private field '#privateFild' must be declared in an enclosing class
help: Did you mean '#privateField'?
```

**invalid_label_target with suggestion:**
```
Use of undefined label
help: Did you mean 'outerLoop'?
```

### Implementation Details

- Moved Levenshtein edit distance calculation from `oxc_linter` to `oxc_span` for reuse across crates
- Uses a threshold of 2 for edit distance to suggest similar names
- Collects available names from appropriate scopes only when errors are found (performance optimization)

<!-- START COPILOT CODING AGENT SUFFIX -->

<!-- START COPILOT ORIGINAL PROMPT -->

<details>

<summary>Original prompt</summary>

> Improve `undefined_export` and some other errors to include a hint that suggests similar names that are defined

</details>

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.
This commit is contained in:
copilot-swe-agent committed 2026-02-24 06:27:10 +00:00
1 parent 9cec27f8e5
commit 655c38fa38
10 files changed
+280 -21

No files matched your search

@@ -1,7 +1,7 @@
use oxc_ast::{AstKind, ast::Expression};
use oxc_diagnostics::OxcDiagnostic;
use oxc_macros::declare_oxc_lint;
use oxc_span::{GetSpan, Span};
use oxc_span::{GetSpan, Span, best_match};
use oxc_syntax::operator::UnaryOperator;
use schemars::JsonSchema;
use serde::Deserialize;
@@ -10,7 +10,6 @@ use crate::{
AstNode,
context::LintContext,
rule::{DefaultRuleConfig, Rule},
utils::best_match,
};
fn not_string(help: Option<&'static str>, span: Span) -> OxcDiagnostic {
@@ -4,13 +4,12 @@ use oxc_ast::{
};
use oxc_diagnostics::OxcDiagnostic;
use oxc_macros::declare_oxc_lint;
use oxc_span::Span;
use oxc_span::{Span, best_match};
use crate::{
AstNode,
context::{ContextHost, LintContext},
rule::Rule,
utils::best_match,
};
fn no_typos_diagnostic(typo: &str, suggestion: &str, span: Span) -> OxcDiagnostic {
+2 -3
View File
@@ -13,7 +13,6 @@ use oxc_syntax::identifier::{is_identifier_part, is_identifier_start};
mod comment;
mod config;
mod edit_distance;
mod express;
mod jest;
mod jsdoc;
@@ -29,8 +28,8 @@ mod vitest;
mod vue;
pub use self::{
comment::*, config::*, edit_distance::*, express::*, jest::*, jsdoc::*, nextjs::*, promise::*,
react::*, react_perf::*, regex::*, typescript::*, unicorn::*, url::*, vitest::*, vue::*,
comment::*, config::*, express::*, jest::*, jsdoc::*, nextjs::*, promise::*, react::*,
react_perf::*, regex::*, typescript::*, unicorn::*, url::*, vitest::*, vue::*,
};
/// List of Jest rules that have Vitest equivalents.
+70 -7
View File
@@ -4,7 +4,7 @@ use rustc_hash::FxHashMap;
use oxc_allocator::GetAddress;
use oxc_ast::{AstKind, ModuleDeclarationKind, ast::*};
use oxc_ecmascript::{BoundNames, IsSimpleParameterList, PropName};
use oxc_span::{GetSpan, ModuleKind, Span};
use oxc_span::{GetSpan, ModuleKind, Span, best_match};
use oxc_syntax::{
class::ClassId,
number::NumberBase,
@@ -15,6 +15,9 @@ use oxc_syntax::{
use crate::{IsGlobalReference, builder::SemanticBuilder, class::Element, diagnostics};
/// Threshold for edit distance when suggesting similar names
const SUGGESTION_THRESHOLD: usize = 2;
/// It is a Syntax Error if any element of the ExportedBindings of ModuleItemList
/// does not also occur in either the VarDeclaredNames of ModuleItemList, or the LexicallyDeclaredNames of ModuleItemList.
pub fn check_unresolved_exports(program: &Program<'_>, ctx: &SemanticBuilder<'_>) {
@@ -22,15 +25,28 @@ pub fn check_unresolved_exports(program: &Program<'_>, ctx: &SemanticBuilder<'_>
return;
}
let mut available_names: Option<Vec<&str>> = None;
for stmt in &program.body {
if let Statement::ExportNamedDeclaration(decl) = stmt {
for specifier in &decl.specifiers {
if let ModuleExportName::IdentifierReference(ident) = &specifier.local
&& ident.is_global_reference(&ctx.scoping)
{
ctx.errors
.borrow_mut()
.push(diagnostics::undefined_export(&ident.name, ident.span));
let names = available_names.get_or_insert_with(|| {
let root_scope_id = ctx.scoping.root_scope_id();
ctx.scoping
.get_bindings(root_scope_id)
.keys()
.map(oxc_span::Ident::as_str)
.collect()
});
let suggestion =
best_match(&ident.name, names.iter().copied(), SUGGESTION_THRESHOLD);
ctx.errors.borrow_mut().push(diagnostics::undefined_export(
&ident.name,
suggestion,
ident.span,
));
}
}
}
@@ -338,11 +354,30 @@ pub fn check_private_identifier_outside_class(
fn check_private_identifier(ctx: &SemanticBuilder<'_>) {
if let Some(class_id) = ctx.class_table_builder.current_class_id {
let mut available_names: Option<Vec<&str>> = None;
for reference in ctx.class_table_builder.classes.iter_private_identifiers(class_id) {
if !ctx.class_table_builder.classes.ancestors(class_id).any(|class_id| {
ctx.class_table_builder.classes.has_private_definition(class_id, reference.name)
}) {
ctx.error(diagnostics::private_field_undeclared(&reference.name, reference.span));
let names = available_names.get_or_insert_with(|| {
let mut names = Vec::new();
for ancestor_class_id in ctx.class_table_builder.classes.ancestors(class_id) {
for element in &ctx.class_table_builder.classes.elements[ancestor_class_id]
{
if element.is_private {
names.push(element.name.as_ref());
}
}
}
names
});
let suggestion =
best_match(&reference.name, names.iter().copied(), SUGGESTION_THRESHOLD);
ctx.error(diagnostics::private_field_undeclared(
&reference.name,
suggestion,
reference.span,
));
}
}
}
@@ -784,12 +819,20 @@ pub fn check_switch_statement<'a>(stmt: &SwitchStatement<'a>, ctx: &SemanticBuil
pub fn check_break_statement(stmt: &BreakStatement, ctx: &SemanticBuilder<'_>) {
// It is a Syntax Error if this BreakStatement is not nested, directly or indirectly (but not crossing function or static initialization block boundaries), within an IterationStatement or a SwitchStatement.
let mut available_labels: Option<Vec<&str>> = None;
for node_kind in ctx.nodes.ancestor_kinds(ctx.current_node_id) {
match node_kind {
AstKind::Program(_) => {
return stmt.label.as_ref().map_or_else(
|| ctx.error(diagnostics::invalid_break(stmt.span)),
|label| ctx.error(diagnostics::invalid_label_target(label.span)),
|label| {
let labels =
available_labels.get_or_insert_with(|| collect_label_names(ctx));
let suggestion =
best_match(&label.name, labels.iter().copied(), SUGGESTION_THRESHOLD);
ctx.error(diagnostics::invalid_label_target(suggestion, label.span));
},
);
}
AstKind::Function(_) | AstKind::StaticBlock(_) => {
@@ -820,12 +863,20 @@ pub fn check_break_statement(stmt: &BreakStatement, ctx: &SemanticBuilder<'_>) {
pub fn check_continue_statement(stmt: &ContinueStatement, ctx: &SemanticBuilder<'_>) {
// It is a Syntax Error if this ContinueStatement is not nested, directly or indirectly (but not crossing function or static initialization block boundaries), within an IterationStatement.
let mut available_labels: Option<Vec<&str>> = None;
for node_kind in ctx.nodes.ancestor_kinds(ctx.current_node_id) {
match node_kind {
AstKind::Program(_) => {
return stmt.label.as_ref().map_or_else(
|| ctx.error(diagnostics::invalid_continue(stmt.span)),
|label| ctx.error(diagnostics::invalid_label_target(label.span)),
|label| {
let labels =
available_labels.get_or_insert_with(|| collect_label_names(ctx));
let suggestion =
best_match(&label.name, labels.iter().copied(), SUGGESTION_THRESHOLD);
ctx.error(diagnostics::invalid_label_target(suggestion, label.span));
},
);
}
AstKind::Function(_) | AstKind::StaticBlock(_) => {
@@ -861,6 +912,18 @@ pub fn check_continue_statement(stmt: &ContinueStatement, ctx: &SemanticBuilder<
}
}
fn collect_label_names<'a>(ctx: &'_ SemanticBuilder<'a>) -> Vec<&'a str> {
let mut labels = Vec::new();
for node_kind in ctx.nodes.ancestor_kinds(ctx.current_node_id) {
if let AstKind::LabeledStatement(labeled_statement) = node_kind {
labels.push(labeled_statement.label.name.as_str());
} else if matches!(node_kind, AstKind::Function(_) | AstKind::StaticBlock(_)) {
break;
}
}
labels
}
pub fn check_labeled_statement(stmt: &LabeledStatement, ctx: &SemanticBuilder<'_>) {
for node_kind in ctx.nodes.ancestor_kinds(ctx.current_node_id) {
match node_kind {
+22 -7
View File
@@ -27,8 +27,13 @@ pub fn static_and_instance_private_identifier(x0: &str, span1: Span, span2: Span
}
#[cold]
pub fn undefined_export(x0: &str, span1: Span) -> OxcDiagnostic {
OxcDiagnostic::error(format!("Export '{x0}' is not defined")).with_label(span1)
pub fn undefined_export(x0: &str, suggestion: Option<&str>, span1: Span) -> OxcDiagnostic {
let mut diagnostic =
OxcDiagnostic::error(format!("Export '{x0}' is not defined")).with_label(span1);
if let Some(suggestion) = suggestion {
diagnostic = diagnostic.with_help(format!("Did you mean '{suggestion}'?"));
}
diagnostic
}
#[cold]
@@ -68,9 +73,15 @@ pub fn private_not_in_class(x0: &str, span1: Span) -> OxcDiagnostic {
}
#[cold]
pub fn private_field_undeclared(x0: &str, span1: Span) -> OxcDiagnostic {
OxcDiagnostic::error(format!("Private field '#{x0}' must be declared in an enclosing class"))
.with_label(span1)
pub fn private_field_undeclared(x0: &str, suggestion: Option<&str>, span1: Span) -> OxcDiagnostic {
let mut diagnostic = OxcDiagnostic::error(format!(
"Private field '#{x0}' must be declared in an enclosing class"
))
.with_label(span1);
if let Some(suggestion) = suggestion {
diagnostic = diagnostic.with_help(format!("Did you mean '#{suggestion}'?"));
}
diagnostic
}
#[cold]
@@ -168,8 +179,12 @@ pub fn invalid_label_jump_target(span: Span) -> OxcDiagnostic {
}
#[cold]
pub fn invalid_label_target(span: Span) -> OxcDiagnostic {
OxcDiagnostic::error("Use of undefined label").with_label(span)
pub fn invalid_label_target(suggestion: Option<&str>, span: Span) -> OxcDiagnostic {
let mut diagnostic = OxcDiagnostic::error("Use of undefined label").with_label(span);
if let Some(suggestion) = suggestion {
diagnostic = diagnostic.with_help(format!("Did you mean '{suggestion}'?"));
}
diagnostic
}
#[cold]
@@ -1,3 +1,5 @@
//! Levenshtein edit distance calculation for suggesting similar names.
/// Returns the Levenshtein edit distance between `a` and `b`.
///
/// Uses a two-row dynamic programming algorithm to keep memory usage small.
@@ -33,6 +35,10 @@ pub fn best_match<'a>(
let mut best: Option<(&'a str, usize)> = None;
for candidate in candidates {
// no need to calculate distance if length difference exceeds threshold
if candidate.len().abs_diff(needle.len()) > threshold {
continue;
}
let distance = min_edit_distance(candidate, needle);
if distance == 0 {
return None;
@@ -47,3 +53,38 @@ pub fn best_match<'a>(
best.map(|(candidate, _)| candidate)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_min_edit_distance() {
assert_eq!(min_edit_distance("", ""), 0);
assert_eq!(min_edit_distance("a", "a"), 0);
assert_eq!(min_edit_distance("abc", "abc"), 0);
assert_eq!(min_edit_distance("", "abc"), 3);
assert_eq!(min_edit_distance("abc", ""), 3);
assert_eq!(min_edit_distance("abc", "def"), 3);
assert_eq!(min_edit_distance("sitting", "kitten"), 3);
}
#[test]
fn test_best_match() {
let candidates = vec!["apple", "banana", "cherry"];
// Exact match returns None
assert_eq!(best_match("apple", candidates.clone(), 2), None);
// Close match within threshold
assert_eq!(best_match("aple", candidates.clone(), 2), Some("apple"));
assert_eq!(best_match("banan", candidates.clone(), 2), Some("banana"));
// No match within threshold
assert_eq!(best_match("xyz", candidates.clone(), 2), None);
// Empty candidates
let empty: Vec<&str> = vec![];
assert_eq!(best_match("test", empty, 2), None);
}
}
+2
View File
@@ -3,10 +3,12 @@
//! <https://doc.rust-lang.org/beta/nightly-rustc/rustc_span>
mod cmp;
mod edit_distance;
mod source_type;
mod span;
pub use cmp::ContentEq;
pub use edit_distance::{best_match, min_edit_distance};
pub use oxc_str::ident;
pub use oxc_str::{
ArenaIdentHashMap, Atom, CompactStr, Ident, IdentHashMap, IdentHashSet,
@@ -1082,6 +1082,7 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc
· ───────
2 │ function decrypt() {}
╰────
help: Did you mean 'decrypt'?
× Export 'encrypt' is not defined
╭─[babel/packages/babel-parser/test/fixtures/core/scope/undecl-export-as-default/input.js:1:10]
@@ -11475,6 +11475,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-accessor-set.js:41:15]
@@ -11491,6 +11492,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-async-gen.js:41:15]
@@ -11507,6 +11509,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-async.js:41:15]
@@ -11523,6 +11526,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-gen.js:41:15]
@@ -11539,6 +11543,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method.js:41:15]
@@ -11555,6 +11560,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-no-reference.js:41:15]
@@ -11571,6 +11577,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-privatename.js:41:15]
@@ -11595,6 +11602,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-private-method-accessor-set.js:41:15]
@@ -11611,6 +11619,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-private-method-async-gen.js:41:15]
@@ -11651,6 +11660,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-private-no-reference.js:41:15]
@@ -11667,6 +11677,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-privatename.js:41:15]
@@ -11691,6 +11702,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-accessor-set.js:35:14]
@@ -11707,6 +11719,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-async-gen.js:35:14]
@@ -11723,6 +11736,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-async.js:35:14]
@@ -11739,6 +11753,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-gen.js:35:14]
@@ -11755,6 +11770,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method.js:35:14]
@@ -11771,6 +11787,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-no-reference.js:35:14]
@@ -11787,6 +11804,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-privatename.js:35:14]
@@ -11811,6 +11829,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-private-method-accessor-set.js:35:14]
@@ -11827,6 +11846,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-private-method-async-gen.js:35:14]
@@ -11867,6 +11887,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-private-no-reference.js:35:14]
@@ -11883,6 +11904,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-privatename.js:35:14]
@@ -11907,6 +11929,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-accessor-set.js:41:16]
@@ -11923,6 +11946,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-async-gen.js:41:16]
@@ -11939,6 +11963,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-async.js:41:16]
@@ -11955,6 +11980,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-gen.js:41:16]
@@ -11971,6 +11997,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method.js:41:16]
@@ -11987,6 +12014,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-no-reference.js:41:16]
@@ -12003,6 +12031,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-privatename.js:41:16]
@@ -12027,6 +12056,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-private-method-accessor-set.js:41:16]
@@ -12043,6 +12073,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-private-method-async-gen.js:41:16]
@@ -12083,6 +12114,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-private-no-reference.js:41:16]
@@ -12099,6 +12131,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
42 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-privatename.js:41:16]
@@ -12123,6 +12156,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-accessor-set.js:43:13]
@@ -12139,6 +12173,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-async-gen.js:43:13]
@@ -12155,6 +12190,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-async.js:43:13]
@@ -12171,6 +12207,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-gen.js:43:13]
@@ -12187,6 +12224,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method.js:43:13]
@@ -12203,6 +12241,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-no-reference.js:43:13]
@@ -12219,6 +12258,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-privatename.js:43:13]
@@ -12243,6 +12283,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-private-method-accessor-set.js:43:13]
@@ -12259,6 +12300,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-private-method-async-gen.js:43:13]
@@ -12299,6 +12341,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-private-no-reference.js:43:13]
@@ -12315,6 +12358,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-privatename.js:43:13]
@@ -12339,6 +12383,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-accessor-set.js:37:12]
@@ -12355,6 +12400,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-async-gen.js:37:12]
@@ -12371,6 +12417,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-async.js:37:12]
@@ -12387,6 +12434,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-gen.js:37:12]
@@ -12403,6 +12451,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method.js:37:12]
@@ -12419,6 +12468,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-no-reference.js:37:12]
@@ -12435,6 +12485,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-privatename.js:37:12]
@@ -12459,6 +12510,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-private-method-accessor-set.js:37:12]
@@ -12475,6 +12527,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-private-method-async-gen.js:37:12]
@@ -12515,6 +12568,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-private-no-reference.js:37:12]
@@ -12531,6 +12585,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-privatename.js:37:12]
@@ -12555,6 +12610,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-accessor-set.js:43:14]
@@ -12571,6 +12627,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-async-gen.js:43:14]
@@ -12587,6 +12644,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-async.js:43:14]
@@ -12603,6 +12661,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-gen.js:43:14]
@@ -12619,6 +12678,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method.js:43:14]
@@ -12635,6 +12695,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-no-reference.js:43:14]
@@ -12651,6 +12712,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-privatename.js:43:14]
@@ -12675,6 +12737,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-private-method-accessor-set.js:43:14]
@@ -12691,6 +12754,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-private-method-async-gen.js:43:14]
@@ -12731,6 +12795,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-private-no-reference.js:43:14]
@@ -12747,6 +12812,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/expressions/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-privatename.js:43:14]
@@ -18162,6 +18228,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
31 │ }
╰────
help: Did you mean '#a'?
× Private identifier '#name' is not allowed outside class bodies
╭─[test262/test/language/expressions/in/private-field-invalid-identifier-simple.js:26:1]
@@ -30613,6 +30680,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-accessor-set.js:38:15]
@@ -30629,6 +30697,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-async-gen.js:38:15]
@@ -30645,6 +30714,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-async.js:38:15]
@@ -30661,6 +30731,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method-gen.js:38:15]
@@ -30677,6 +30748,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-method.js:38:15]
@@ -30693,6 +30765,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-private-no-reference.js:38:15]
@@ -30709,6 +30782,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-call-expression-privatename.js:38:15]
@@ -30733,6 +30807,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-private-method-accessor-set.js:38:15]
@@ -30749,6 +30824,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-private-method-async-gen.js:38:15]
@@ -30789,6 +30865,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-private-no-reference.js:38:15]
@@ -30805,6 +30882,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-covered-err-delete-member-expression-privatename.js:38:15]
@@ -30829,6 +30907,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-accessor-set.js:35:14]
@@ -30845,6 +30924,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-async-gen.js:35:14]
@@ -30861,6 +30941,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-async.js:35:14]
@@ -30877,6 +30958,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method-gen.js:35:14]
@@ -30893,6 +30975,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-method.js:35:14]
@@ -30909,6 +30992,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-private-no-reference.js:35:14]
@@ -30925,6 +31009,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ f() {
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-call-expression-privatename.js:35:14]
@@ -30949,6 +31034,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-private-method-accessor-set.js:35:14]
@@ -30965,6 +31051,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-private-method-async-gen.js:35:14]
@@ -31005,6 +31092,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-private-no-reference.js:35:14]
@@ -31021,6 +31109,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
36 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-err-delete-member-expression-privatename.js:35:14]
@@ -31045,6 +31134,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-accessor-set.js:38:16]
@@ -31061,6 +31151,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-async-gen.js:38:16]
@@ -31077,6 +31168,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-async.js:38:16]
@@ -31093,6 +31185,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method-gen.js:38:16]
@@ -31109,6 +31202,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-method.js:38:16]
@@ -31125,6 +31219,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-private-no-reference.js:38:16]
@@ -31141,6 +31236,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-call-expression-privatename.js:38:16]
@@ -31165,6 +31261,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-private-method-accessor-set.js:38:16]
@@ -31181,6 +31278,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-private-method-async-gen.js:38:16]
@@ -31221,6 +31319,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-private-no-reference.js:38:16]
@@ -31237,6 +31336,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
39 │
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/field-delete-twice-covered-err-delete-member-expression-privatename.js:38:16]
@@ -31261,6 +31361,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-accessor-set.js:43:13]
@@ -31277,6 +31378,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-async-gen.js:43:13]
@@ -31293,6 +31395,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-async.js:43:13]
@@ -31309,6 +31412,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method-gen.js:43:13]
@@ -31325,6 +31429,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-method.js:43:13]
@@ -31341,6 +31446,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-private-no-reference.js:43:13]
@@ -31357,6 +31463,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-call-expression-privatename.js:43:13]
@@ -31381,6 +31488,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-private-method-accessor-set.js:43:13]
@@ -31397,6 +31505,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-private-method-async-gen.js:43:13]
@@ -31437,6 +31546,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ );
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-private-no-reference.js:43:13]
@@ -31453,6 +31563,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-covered-err-delete-member-expression-privatename.js:43:13]
@@ -31477,6 +31588,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-accessor-set.js:37:12]
@@ -31493,6 +31605,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-async-gen.js:37:12]
@@ -31509,6 +31622,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-async.js:37:12]
@@ -31525,6 +31639,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method-gen.js:37:12]
@@ -31541,6 +31656,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-method.js:37:12]
@@ -31557,6 +31673,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-private-no-reference.js:37:12]
@@ -31573,6 +31690,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-call-expression-privatename.js:37:12]
@@ -31597,6 +31715,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-private-method-accessor-set.js:37:12]
@@ -31613,6 +31732,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-private-method-async-gen.js:37:12]
@@ -31653,6 +31773,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ ;
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-private-no-reference.js:37:12]
@@ -31669,6 +31790,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
38 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-err-delete-member-expression-privatename.js:37:12]
@@ -31693,6 +31815,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-accessor-set.js:43:14]
@@ -31709,6 +31832,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-async-gen.js:43:14]
@@ -31725,6 +31849,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-async.js:43:14]
@@ -31741,6 +31866,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method-gen.js:43:14]
@@ -31757,6 +31883,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-method.js:43:14]
@@ -31773,6 +31900,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-private-no-reference.js:43:14]
@@ -31789,6 +31917,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-call-expression-privatename.js:43:14]
@@ -31813,6 +31942,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-private-method-accessor-set.js:43:14]
@@ -31829,6 +31959,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-private-method-async-gen.js:43:14]
@@ -31869,6 +32000,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ ));
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-private-no-reference.js:43:14]
@@ -31885,6 +32017,7 @@ Negative Passed: 4588/4588 (100.00%)
· ──
44 │ }
╰────
help: Did you mean '#x'?
× The operand of a 'delete' operator cannot be a private identifier.
╭─[test262/test/language/statements/class/elements/syntax/early-errors/delete/method-delete-twice-covered-err-delete-member-expression-privatename.js:43:14]
@@ -13683,6 +13683,7 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/parser/ecmasc
· ──
12 │ }
╰────
help: Did you mean '#x'?
× Private field '#x' must be declared in an enclosing class
╭─[typescript/tests/cases/conformance/classes/classStaticBlock/classStaticBlock16.ts:21:28]
@@ -13691,6 +13692,7 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/parser/ecmasc
· ──
22 │ getY = (obj: D) => obj.#y;
╰────
help: Did you mean '#y'?
× Decorators are not valid here.
╭─[typescript/tests/cases/conformance/classes/classStaticBlock/classStaticBlock19.ts:2:5]
@@ -14165,6 +14167,7 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/parser/ecmasc
· ────
10 │ thing.#foo();
╰────
help: Did you mean '#baz'?
× Private field '#bar' must be declared in an enclosing class
╭─[typescript/tests/cases/conformance/classes/members/privateNames/privateNameAndAny.ts:16:15]
@@ -14173,6 +14176,7 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/parser/ecmasc
· ────
17 │ thing.#foo();
╰────
help: Did you mean '#baz'?
× Private field '#bar' must be declared in an enclosing class
╭─[typescript/tests/cases/conformance/classes/members/privateNames/privateNameAndAny.ts:23:15]
@@ -14181,6 +14185,7 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/parser/ecmasc
· ────
24 │ thing.#foo();
╰────
help: Did you mean '#baz'?
× Private field '#f' must be declared in an enclosing class
╭─[typescript/tests/cases/conformance/classes/members/privateNames/privateNameAndIndexSignature.ts:6:14]
@@ -14189,6 +14194,7 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/parser/ecmasc
· ──
7 │ this["#foo"] = 3; // Okay (type has index signature and "#foo" does not collide with private identifier #foo)
╰────
help: Did you mean '#foo'?
× Unexpected token
╭─[typescript/tests/cases/conformance/classes/members/privateNames/privateNameAndPropertySignature.ts:2:5]
@@ -25281,6 +25287,7 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/parser/ecmasc
· ──
6 │ }
╰────
help: Did you mean '#a'?
× Identifier `orbitol` has already been declared
╭─[typescript/tests/cases/conformance/salsa/plainJSRedeclare.ts:1:7]