From 9ee137ee3ce253329640d1d33f0c341baaff1a98 Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Tue, 21 Dec 2021 13:40:09 +0100 Subject: [PATCH] Rename `CallExpr` to `JsCallExpression` and `NewExpr` to `JsNewExpression` --- crates/rome_formatter/src/cst.rs | 6 +- .../src/ts/expressions/call_expression.rs | 4 +- .../src/ts/expressions/expression.rs | 13 +- crates/rslint_parser/src/ast/expr_ext.rs | 9 - .../rslint_parser/src/ast/generated/nodes.rs | 230 ++++++++--------- .../src/ast/generated/syntax_factory.rs | 236 +++++++++--------- crates/rslint_parser/src/syntax/expr.rs | 12 +- .../inline/err/binary_expressions_err.rast | 4 +- .../inline/err/import_call_no_arg.rast | 4 +- .../inline/err/invalid_arg_list.rast | 8 +- .../inline/err/logical_expressions_err.rast | 4 +- .../test_data/inline/err/new_exprs.rast | 6 +- .../err/primary_expr_invalid_recovery.rast | 4 +- .../test_data/inline/err/subscripts_err.rast | 4 +- .../inline/err/super_expression_err.rast | 12 +- .../test_data/inline/err/throw_stmt_err.rast | 6 +- .../inline/ok/array_assignment_target.rast | 4 +- .../ok/array_assignment_target_rest.rast | 8 +- .../inline/ok/assignment_target.rast | 8 +- .../test_data/inline/ok/await_expression.rast | 12 +- .../inline/ok/binary_expressions.rast | 4 +- .../inline/ok/do_while_statement.rast | 8 +- .../test_data/inline/ok/do_while_stmt.rast | 4 +- .../test_data/inline/ok/grouping_expr.rast | 4 +- .../ok/js_parenthesized_expression.rast | 4 +- .../test_data/inline/ok/module.rast | 4 +- .../test_data/inline/ok/new_exprs.rast | 36 +-- .../inline/ok/object_shorthand_property.rast | 4 +- .../inline/ok/property_assignment_target.rast | 4 +- .../ok/rest_property_assignment_target.rast | 8 +- .../test_data/inline/ok/subscripts.rast | 12 +- .../test_data/inline/ok/super_expression.rast | 8 +- .../test_data/inline/ok/throw_stmt.rast | 6 +- .../test_data/inline/ok/with_statement.rast | 4 +- crates/rslint_syntax/src/generated.rs | 4 +- crates/rslint_syntax/src/lib.rs | 6 +- xtask/js.ungram | 16 +- xtask/src/codegen/kinds_src.rs | 2 +- 38 files changed, 365 insertions(+), 367 deletions(-) diff --git a/crates/rome_formatter/src/cst.rs b/crates/rome_formatter/src/cst.rs index c0cae84ce16..88b0f7b313d 100644 --- a/crates/rome_formatter/src/cst.rs +++ b/crates/rome_formatter/src/cst.rs @@ -1,7 +1,7 @@ use crate::{FormatElement, FormatResult, Formatter, ToFormatElement}; use rslint_parser::ast::{ - CallExpr, JsArrayBindingPattern, JsArrayExpression, JsArrowFunctionExpression, - JsBlockStatement, JsBooleanLiteralExpression, JsCallArguments, JsCaseClause, JsCatchClause, + JsArrayBindingPattern, JsArrayExpression, JsArrowFunctionExpression, JsBlockStatement, + JsBooleanLiteralExpression, JsCallArguments, JsCallExpression, JsCaseClause, JsCatchClause, JsClassDeclaration, JsConstructorParameters, JsContinueStatement, JsDebuggerStatement, JsDefaultClause, JsDoWhileStatement, JsEmptyStatement, JsExpressionStatement, JsFinallyClause, JsForInStatement, JsForStatement, JsFunctionDeclaration, JsGetterClassMember, @@ -138,7 +138,7 @@ impl ToFormatElement for SyntaxNode { JsSyntaxKind::JS_ARRAY_BINDING_PATTERN => JsArrayBindingPattern::cast(self.clone()) .unwrap() .to_format_element(formatter), - JsSyntaxKind::CALL_EXPR => CallExpr::cast(self.clone()) + JsSyntaxKind::JS_CALL_EXPRESSION => JsCallExpression::cast(self.clone()) .unwrap() .to_format_element(formatter), JsSyntaxKind::JS_CALL_ARGUMENTS => JsCallArguments::cast(self.clone()) diff --git a/crates/rome_formatter/src/ts/expressions/call_expression.rs b/crates/rome_formatter/src/ts/expressions/call_expression.rs index b21ab6a5e4f..cbb55335311 100644 --- a/crates/rome_formatter/src/ts/expressions/call_expression.rs +++ b/crates/rome_formatter/src/ts/expressions/call_expression.rs @@ -1,7 +1,7 @@ use crate::{format_elements, FormatElement, FormatResult, Formatter, ToFormatElement}; -use rslint_parser::ast::CallExpr; +use rslint_parser::ast::JsCallExpression; -impl ToFormatElement for CallExpr { +impl ToFormatElement for JsCallExpression { fn to_format_element(&self, formatter: &Formatter) -> FormatResult { let name = formatter.format_node(self.callee()?)?; let arguments = formatter.format_node(self.arguments()?)?; diff --git a/crates/rome_formatter/src/ts/expressions/expression.rs b/crates/rome_formatter/src/ts/expressions/expression.rs index cfb130294da..41ea1947cc1 100644 --- a/crates/rome_formatter/src/ts/expressions/expression.rs +++ b/crates/rome_formatter/src/ts/expressions/expression.rs @@ -4,9 +4,8 @@ use crate::{ }; use rslint_parser::ast::{ JsAnyExpression, JsAssignmentExpression, JsAwaitExpression, JsBinaryExpression, - JsComputedMemberExpression, JsConditionalExpression, JsLogicalExpression, - JsParenthesizedExpression, JsThisExpression, JsUnaryExpression, JsYieldExpression, NewExpr, - NewTarget, + JsComputedMemberExpression, JsConditionalExpression, JsLogicalExpression, JsNewExpression, + JsParenthesizedExpression, JsThisExpression, JsUnaryExpression, JsYieldExpression, NewTarget, }; use rslint_parser::{token_set, TokenSet, T}; @@ -39,8 +38,8 @@ impl ToFormatElement for JsAnyExpression { JsAnyExpression::JsStaticMemberExpression(static_member_expression) => { static_member_expression.to_format_element(formatter) } - JsAnyExpression::NewExpr(new_expr) => new_expr.to_format_element(formatter), - JsAnyExpression::CallExpr(call_expression) => { + JsAnyExpression::JsNewExpression(new_expr) => new_expr.to_format_element(formatter), + JsAnyExpression::JsCallExpression(call_expression) => { call_expression.to_format_element(formatter) } JsAnyExpression::JsUnaryExpression(unary_expression) => { @@ -125,7 +124,7 @@ impl ToFormatElement for JsComputedMemberExpression { } } -impl ToFormatElement for NewExpr { +impl ToFormatElement for JsNewExpression { fn to_format_element(&self, formatter: &Formatter) -> FormatResult { let arguments = if let Some(arguments) = self.arguments() { formatter.format_node(arguments)? @@ -137,7 +136,7 @@ impl ToFormatElement for NewExpr { formatter.format_token(&self.new_token()?)?, // TODO handle TsTypeArgs space_token(), - formatter.format_node(self.object()?)?, + formatter.format_node(self.callee()?)?, arguments, ]) } diff --git a/crates/rslint_parser/src/ast/expr_ext.rs b/crates/rslint_parser/src/ast/expr_ext.rs index 9c2af0458d0..6aa4926e549 100644 --- a/crates/rslint_parser/src/ast/expr_ext.rs +++ b/crates/rslint_parser/src/ast/expr_ext.rs @@ -331,15 +331,6 @@ impl Template { } } -impl CallExpr { - pub fn opt_chain_token(&self) -> Option { - self.syntax() - .children_with_tokens() - .filter_map(|child| child.into_token()) - .find(|tok| tok.kind() == QUESTIONDOT) - } -} - /// A simple macro for making assign, binop, or unary operators #[macro_export] macro_rules! op { diff --git a/crates/rslint_parser/src/ast/generated/nodes.rs b/crates/rslint_parser/src/ast/generated/nodes.rs index 2d99396ae2d..f33e0bba6a0 100644 --- a/crates/rslint_parser/src/ast/generated/nodes.rs +++ b/crates/rslint_parser/src/ast/generated/nodes.rs @@ -8,22 +8,6 @@ use crate::{ SyntaxNode, SyntaxResult, SyntaxToken, }; #[derive(Clone, PartialEq, Eq, Hash)] -pub struct CallExpr { - pub(crate) syntax: SyntaxNode, -} -impl CallExpr { - pub fn callee(&self) -> SyntaxResult { - support::required_node(&self.syntax, 0usize) - } - pub fn optional_chain_token_token(&self) -> Option { - support::token(&self.syntax, 1usize) - } - pub fn type_args(&self) -> Option { support::node(&self.syntax, 2usize) } - pub fn arguments(&self) -> SyntaxResult { - support::required_node(&self.syntax, 3usize) - } -} -#[derive(Clone, PartialEq, Eq, Hash)] pub struct ExportDecl { pub(crate) syntax: SyntaxNode, } @@ -343,6 +327,22 @@ impl JsCallArguments { } } #[derive(Clone, PartialEq, Eq, Hash)] +pub struct JsCallExpression { + pub(crate) syntax: SyntaxNode, +} +impl JsCallExpression { + pub fn callee(&self) -> SyntaxResult { + support::required_node(&self.syntax, 0usize) + } + pub fn optional_chain_token_token(&self) -> Option { + support::token(&self.syntax, 1usize) + } + pub fn type_args(&self) -> Option { support::node(&self.syntax, 2usize) } + pub fn arguments(&self) -> SyntaxResult { + support::required_node(&self.syntax, 3usize) + } +} +#[derive(Clone, PartialEq, Eq, Hash)] pub struct JsCaseClause { pub(crate) syntax: SyntaxNode, } @@ -1236,6 +1236,20 @@ impl JsNamespaceImportSpecifier { } } #[derive(Clone, PartialEq, Eq, Hash)] +pub struct JsNewExpression { + pub(crate) syntax: SyntaxNode, +} +impl JsNewExpression { + pub fn new_token(&self) -> SyntaxResult { + support::required_token(&self.syntax, 0usize) + } + pub fn callee(&self) -> SyntaxResult { + support::required_node(&self.syntax, 1usize) + } + pub fn type_args(&self) -> Option { support::node(&self.syntax, 2usize) } + pub fn arguments(&self) -> Option { support::node(&self.syntax, 3usize) } +} +#[derive(Clone, PartialEq, Eq, Hash)] pub struct JsNullLiteralExpression { pub(crate) syntax: SyntaxNode, } @@ -1868,20 +1882,6 @@ impl JsYieldExpression { pub fn argument(&self) -> Option { support::node(&self.syntax, 2usize) } } #[derive(Clone, PartialEq, Eq, Hash)] -pub struct NewExpr { - pub(crate) syntax: SyntaxNode, -} -impl NewExpr { - pub fn new_token(&self) -> SyntaxResult { - support::required_token(&self.syntax, 0usize) - } - pub fn object(&self) -> SyntaxResult { - support::required_node(&self.syntax, 1usize) - } - pub fn type_args(&self) -> Option { support::node(&self.syntax, 2usize) } - pub fn arguments(&self) -> Option { support::node(&self.syntax, 3usize) } -} -#[derive(Clone, PartialEq, Eq, Hash)] pub struct NewTarget { pub(crate) syntax: SyntaxNode, } @@ -2895,7 +2895,6 @@ pub enum JsAnyExportDeclaration { } #[derive(Clone, PartialEq, Eq, Hash)] pub enum JsAnyExpression { - CallExpr(CallExpr), ImportMeta(ImportMeta), JsAnyLiteralExpression(JsAnyLiteralExpression), JsArrayExpression(JsArrayExpression), @@ -2903,6 +2902,7 @@ pub enum JsAnyExpression { JsAssignmentExpression(JsAssignmentExpression), JsAwaitExpression(JsAwaitExpression), JsBinaryExpression(JsBinaryExpression), + JsCallExpression(JsCallExpression), JsClassExpression(JsClassExpression), JsComputedMemberExpression(JsComputedMemberExpression), JsConditionalExpression(JsConditionalExpression), @@ -2910,6 +2910,7 @@ pub enum JsAnyExpression { JsIdentifierExpression(JsIdentifierExpression), JsImportCallExpression(JsImportCallExpression), JsLogicalExpression(JsLogicalExpression), + JsNewExpression(JsNewExpression), JsObjectExpression(JsObjectExpression), JsParenthesizedExpression(JsParenthesizedExpression), JsPostUpdateExpression(JsPostUpdateExpression), @@ -2921,7 +2922,6 @@ pub enum JsAnyExpression { JsUnaryExpression(JsUnaryExpression), JsUnknownExpression(JsUnknownExpression), JsYieldExpression(JsYieldExpression), - NewExpr(NewExpr), NewTarget(NewTarget), Template(Template), TsAssertion(TsAssertion), @@ -3120,33 +3120,6 @@ pub enum TsTypeElement { TsMethodSignature(TsMethodSignature), TsPropertySignature(TsPropertySignature), } -impl AstNode for CallExpr { - fn can_cast(kind: JsSyntaxKind) -> bool { kind == CALL_EXPR } - fn cast(syntax: SyntaxNode) -> Option { - if Self::can_cast(syntax.kind()) { - Some(Self { syntax }) - } else { - None - } - } - fn syntax(&self) -> &SyntaxNode { &self.syntax } -} -impl std::fmt::Debug for CallExpr { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CallExpr") - .field("callee", &support::DebugSyntaxResult(self.callee())) - .field( - "optional_chain_token_token", - &support::DebugOptionalElement(self.optional_chain_token_token()), - ) - .field( - "type_args", - &support::DebugOptionalElement(self.type_args()), - ) - .field("arguments", &support::DebugSyntaxResult(self.arguments())) - .finish() - } -} impl AstNode for ExportDecl { fn can_cast(kind: JsSyntaxKind) -> bool { kind == EXPORT_DECL } fn cast(syntax: SyntaxNode) -> Option { @@ -3752,6 +3725,33 @@ impl std::fmt::Debug for JsCallArguments { .finish() } } +impl AstNode for JsCallExpression { + fn can_cast(kind: JsSyntaxKind) -> bool { kind == JS_CALL_EXPRESSION } + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + fn syntax(&self) -> &SyntaxNode { &self.syntax } +} +impl std::fmt::Debug for JsCallExpression { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("JsCallExpression") + .field("callee", &support::DebugSyntaxResult(self.callee())) + .field( + "optional_chain_token_token", + &support::DebugOptionalElement(self.optional_chain_token_token()), + ) + .field( + "type_args", + &support::DebugOptionalElement(self.type_args()), + ) + .field("arguments", &support::DebugSyntaxResult(self.arguments())) + .finish() + } +} impl AstNode for JsCaseClause { fn can_cast(kind: JsSyntaxKind) -> bool { kind == JS_CASE_CLAUSE } fn cast(syntax: SyntaxNode) -> Option { @@ -5321,6 +5321,33 @@ impl std::fmt::Debug for JsNamespaceImportSpecifier { .finish() } } +impl AstNode for JsNewExpression { + fn can_cast(kind: JsSyntaxKind) -> bool { kind == JS_NEW_EXPRESSION } + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + fn syntax(&self) -> &SyntaxNode { &self.syntax } +} +impl std::fmt::Debug for JsNewExpression { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("JsNewExpression") + .field("new_token", &support::DebugSyntaxResult(self.new_token())) + .field("callee", &support::DebugSyntaxResult(self.callee())) + .field( + "type_args", + &support::DebugOptionalElement(self.type_args()), + ) + .field( + "arguments", + &support::DebugOptionalElement(self.arguments()), + ) + .finish() + } +} impl AstNode for JsNullLiteralExpression { fn can_cast(kind: JsSyntaxKind) -> bool { kind == JS_NULL_LITERAL_EXPRESSION } fn cast(syntax: SyntaxNode) -> Option { @@ -6466,33 +6493,6 @@ impl std::fmt::Debug for JsYieldExpression { .finish() } } -impl AstNode for NewExpr { - fn can_cast(kind: JsSyntaxKind) -> bool { kind == NEW_EXPR } - fn cast(syntax: SyntaxNode) -> Option { - if Self::can_cast(syntax.kind()) { - Some(Self { syntax }) - } else { - None - } - } - fn syntax(&self) -> &SyntaxNode { &self.syntax } -} -impl std::fmt::Debug for NewExpr { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("NewExpr") - .field("new_token", &support::DebugSyntaxResult(self.new_token())) - .field("object", &support::DebugSyntaxResult(self.object())) - .field( - "type_args", - &support::DebugOptionalElement(self.type_args()), - ) - .field( - "arguments", - &support::DebugOptionalElement(self.arguments()), - ) - .finish() - } -} impl AstNode for NewTarget { fn can_cast(kind: JsSyntaxKind) -> bool { kind == NEW_TARGET } fn cast(syntax: SyntaxNode) -> Option { @@ -9236,9 +9236,6 @@ impl std::fmt::Debug for JsAnyExportDeclaration { } } } -impl From for JsAnyExpression { - fn from(node: CallExpr) -> JsAnyExpression { JsAnyExpression::CallExpr(node) } -} impl From for JsAnyExpression { fn from(node: ImportMeta) -> JsAnyExpression { JsAnyExpression::ImportMeta(node) } } @@ -9263,6 +9260,9 @@ impl From for JsAnyExpression { JsAnyExpression::JsBinaryExpression(node) } } +impl From for JsAnyExpression { + fn from(node: JsCallExpression) -> JsAnyExpression { JsAnyExpression::JsCallExpression(node) } +} impl From for JsAnyExpression { fn from(node: JsClassExpression) -> JsAnyExpression { JsAnyExpression::JsClassExpression(node) } } @@ -9296,6 +9296,9 @@ impl From for JsAnyExpression { JsAnyExpression::JsLogicalExpression(node) } } +impl From for JsAnyExpression { + fn from(node: JsNewExpression) -> JsAnyExpression { JsAnyExpression::JsNewExpression(node) } +} impl From for JsAnyExpression { fn from(node: JsObjectExpression) -> JsAnyExpression { JsAnyExpression::JsObjectExpression(node) @@ -9343,9 +9346,6 @@ impl From for JsAnyExpression { impl From for JsAnyExpression { fn from(node: JsYieldExpression) -> JsAnyExpression { JsAnyExpression::JsYieldExpression(node) } } -impl From for JsAnyExpression { - fn from(node: NewExpr) -> JsAnyExpression { JsAnyExpression::NewExpr(node) } -} impl From for JsAnyExpression { fn from(node: NewTarget) -> JsAnyExpression { JsAnyExpression::NewTarget(node) } } @@ -9364,13 +9364,13 @@ impl From for JsAnyExpression { impl AstNode for JsAnyExpression { fn can_cast(kind: JsSyntaxKind) -> bool { match kind { - CALL_EXPR - | IMPORT_META + IMPORT_META | JS_ARRAY_EXPRESSION | JS_ARROW_FUNCTION_EXPRESSION | JS_ASSIGNMENT_EXPRESSION | JS_AWAIT_EXPRESSION | JS_BINARY_EXPRESSION + | JS_CALL_EXPRESSION | JS_CLASS_EXPRESSION | JS_COMPUTED_MEMBER_EXPRESSION | JS_CONDITIONAL_EXPRESSION @@ -9378,6 +9378,7 @@ impl AstNode for JsAnyExpression { | JS_IDENTIFIER_EXPRESSION | JS_IMPORT_CALL_EXPRESSION | JS_LOGICAL_EXPRESSION + | JS_NEW_EXPRESSION | JS_OBJECT_EXPRESSION | JS_PARENTHESIZED_EXPRESSION | JS_POST_UPDATE_EXPRESSION @@ -9389,7 +9390,6 @@ impl AstNode for JsAnyExpression { | JS_UNARY_EXPRESSION | JS_UNKNOWN_EXPRESSION | JS_YIELD_EXPRESSION - | NEW_EXPR | NEW_TARGET | TEMPLATE | TS_ASSERTION @@ -9401,7 +9401,6 @@ impl AstNode for JsAnyExpression { } fn cast(syntax: SyntaxNode) -> Option { let res = match syntax.kind() { - CALL_EXPR => JsAnyExpression::CallExpr(CallExpr { syntax }), IMPORT_META => JsAnyExpression::ImportMeta(ImportMeta { syntax }), JS_ARRAY_EXPRESSION => JsAnyExpression::JsArrayExpression(JsArrayExpression { syntax }), JS_ARROW_FUNCTION_EXPRESSION => { @@ -9414,6 +9413,7 @@ impl AstNode for JsAnyExpression { JS_BINARY_EXPRESSION => { JsAnyExpression::JsBinaryExpression(JsBinaryExpression { syntax }) } + JS_CALL_EXPRESSION => JsAnyExpression::JsCallExpression(JsCallExpression { syntax }), JS_CLASS_EXPRESSION => JsAnyExpression::JsClassExpression(JsClassExpression { syntax }), JS_COMPUTED_MEMBER_EXPRESSION => { JsAnyExpression::JsComputedMemberExpression(JsComputedMemberExpression { syntax }) @@ -9433,6 +9433,7 @@ impl AstNode for JsAnyExpression { JS_LOGICAL_EXPRESSION => { JsAnyExpression::JsLogicalExpression(JsLogicalExpression { syntax }) } + JS_NEW_EXPRESSION => JsAnyExpression::JsNewExpression(JsNewExpression { syntax }), JS_OBJECT_EXPRESSION => { JsAnyExpression::JsObjectExpression(JsObjectExpression { syntax }) } @@ -9458,7 +9459,6 @@ impl AstNode for JsAnyExpression { JsAnyExpression::JsUnknownExpression(JsUnknownExpression { syntax }) } JS_YIELD_EXPRESSION => JsAnyExpression::JsYieldExpression(JsYieldExpression { syntax }), - NEW_EXPR => JsAnyExpression::NewExpr(NewExpr { syntax }), NEW_TARGET => JsAnyExpression::NewTarget(NewTarget { syntax }), TEMPLATE => JsAnyExpression::Template(Template { syntax }), TS_ASSERTION => JsAnyExpression::TsAssertion(TsAssertion { syntax }), @@ -9477,13 +9477,13 @@ impl AstNode for JsAnyExpression { } fn syntax(&self) -> &SyntaxNode { match self { - JsAnyExpression::CallExpr(it) => &it.syntax, JsAnyExpression::ImportMeta(it) => &it.syntax, JsAnyExpression::JsArrayExpression(it) => &it.syntax, JsAnyExpression::JsArrowFunctionExpression(it) => &it.syntax, JsAnyExpression::JsAssignmentExpression(it) => &it.syntax, JsAnyExpression::JsAwaitExpression(it) => &it.syntax, JsAnyExpression::JsBinaryExpression(it) => &it.syntax, + JsAnyExpression::JsCallExpression(it) => &it.syntax, JsAnyExpression::JsClassExpression(it) => &it.syntax, JsAnyExpression::JsComputedMemberExpression(it) => &it.syntax, JsAnyExpression::JsConditionalExpression(it) => &it.syntax, @@ -9491,6 +9491,7 @@ impl AstNode for JsAnyExpression { JsAnyExpression::JsIdentifierExpression(it) => &it.syntax, JsAnyExpression::JsImportCallExpression(it) => &it.syntax, JsAnyExpression::JsLogicalExpression(it) => &it.syntax, + JsAnyExpression::JsNewExpression(it) => &it.syntax, JsAnyExpression::JsObjectExpression(it) => &it.syntax, JsAnyExpression::JsParenthesizedExpression(it) => &it.syntax, JsAnyExpression::JsPostUpdateExpression(it) => &it.syntax, @@ -9502,7 +9503,6 @@ impl AstNode for JsAnyExpression { JsAnyExpression::JsUnaryExpression(it) => &it.syntax, JsAnyExpression::JsUnknownExpression(it) => &it.syntax, JsAnyExpression::JsYieldExpression(it) => &it.syntax, - JsAnyExpression::NewExpr(it) => &it.syntax, JsAnyExpression::NewTarget(it) => &it.syntax, JsAnyExpression::Template(it) => &it.syntax, JsAnyExpression::TsAssertion(it) => &it.syntax, @@ -9515,7 +9515,6 @@ impl AstNode for JsAnyExpression { impl std::fmt::Debug for JsAnyExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - JsAnyExpression::CallExpr(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::ImportMeta(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsAnyLiteralExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsArrayExpression(it) => std::fmt::Debug::fmt(it, f), @@ -9523,6 +9522,7 @@ impl std::fmt::Debug for JsAnyExpression { JsAnyExpression::JsAssignmentExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsAwaitExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsBinaryExpression(it) => std::fmt::Debug::fmt(it, f), + JsAnyExpression::JsCallExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsClassExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsComputedMemberExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsConditionalExpression(it) => std::fmt::Debug::fmt(it, f), @@ -9530,6 +9530,7 @@ impl std::fmt::Debug for JsAnyExpression { JsAnyExpression::JsIdentifierExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsImportCallExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsLogicalExpression(it) => std::fmt::Debug::fmt(it, f), + JsAnyExpression::JsNewExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsObjectExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsParenthesizedExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsPostUpdateExpression(it) => std::fmt::Debug::fmt(it, f), @@ -9541,7 +9542,6 @@ impl std::fmt::Debug for JsAnyExpression { JsAnyExpression::JsUnaryExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsUnknownExpression(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::JsYieldExpression(it) => std::fmt::Debug::fmt(it, f), - JsAnyExpression::NewExpr(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::NewTarget(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::Template(it) => std::fmt::Debug::fmt(it, f), JsAnyExpression::TsAssertion(it) => std::fmt::Debug::fmt(it, f), @@ -11324,11 +11324,6 @@ impl std::fmt::Display for TsTypeElement { std::fmt::Display::fmt(self.syntax(), f) } } -impl std::fmt::Display for CallExpr { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - std::fmt::Display::fmt(self.syntax(), f) - } -} impl std::fmt::Display for ExportDecl { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) @@ -11449,6 +11444,11 @@ impl std::fmt::Display for JsCallArguments { std::fmt::Display::fmt(self.syntax(), f) } } +impl std::fmt::Display for JsCallExpression { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + std::fmt::Display::fmt(self.syntax(), f) + } +} impl std::fmt::Display for JsCaseClause { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) @@ -11739,6 +11739,11 @@ impl std::fmt::Display for JsNamespaceImportSpecifier { std::fmt::Display::fmt(self.syntax(), f) } } +impl std::fmt::Display for JsNewExpression { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + std::fmt::Display::fmt(self.syntax(), f) + } +} impl std::fmt::Display for JsNullLiteralExpression { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) @@ -11974,11 +11979,6 @@ impl std::fmt::Display for JsYieldExpression { std::fmt::Display::fmt(self.syntax(), f) } } -impl std::fmt::Display for NewExpr { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - std::fmt::Display::fmt(self.syntax(), f) - } -} impl std::fmt::Display for NewTarget { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) @@ -13430,7 +13430,6 @@ impl Debug for DebugSyntaxElement { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match &self.0 { NodeOrToken::Node(node) => match node.kind() { - CALL_EXPR => std::fmt::Debug::fmt(&CallExpr::cast(node.clone()).unwrap(), f), EXPORT_DECL => std::fmt::Debug::fmt(&ExportDecl::cast(node.clone()).unwrap(), f), EXPORT_DEFAULT_DECL => { std::fmt::Debug::fmt(&ExportDefaultDecl::cast(node.clone()).unwrap(), f) @@ -13514,6 +13513,9 @@ impl Debug for DebugSyntaxElement { JS_CALL_ARGUMENTS => { std::fmt::Debug::fmt(&JsCallArguments::cast(node.clone()).unwrap(), f) } + JS_CALL_EXPRESSION => { + std::fmt::Debug::fmt(&JsCallExpression::cast(node.clone()).unwrap(), f) + } JS_CASE_CLAUSE => { std::fmt::Debug::fmt(&JsCaseClause::cast(node.clone()).unwrap(), f) } @@ -13704,6 +13706,9 @@ impl Debug for DebugSyntaxElement { &JsNamespaceImportSpecifier::cast(node.clone()).unwrap(), f, ), + JS_NEW_EXPRESSION => { + std::fmt::Debug::fmt(&JsNewExpression::cast(node.clone()).unwrap(), f) + } JS_NULL_LITERAL_EXPRESSION => { std::fmt::Debug::fmt(&JsNullLiteralExpression::cast(node.clone()).unwrap(), f) } @@ -13899,7 +13904,6 @@ impl Debug for DebugSyntaxElement { JS_YIELD_EXPRESSION => { std::fmt::Debug::fmt(&JsYieldExpression::cast(node.clone()).unwrap(), f) } - NEW_EXPR => std::fmt::Debug::fmt(&NewExpr::cast(node.clone()).unwrap(), f), NEW_TARGET => std::fmt::Debug::fmt(&NewTarget::cast(node.clone()).unwrap(), f), SPECIFIER => std::fmt::Debug::fmt(&Specifier::cast(node.clone()).unwrap(), f), TEMPLATE => std::fmt::Debug::fmt(&Template::cast(node.clone()).unwrap(), f), diff --git a/crates/rslint_parser/src/ast/generated/syntax_factory.rs b/crates/rslint_parser/src/ast/generated/syntax_factory.rs index 55a1afe98ad..0d3ed30254d 100644 --- a/crates/rslint_parser/src/ast/generated/syntax_factory.rs +++ b/crates/rslint_parser/src/ast/generated/syntax_factory.rs @@ -21,65 +21,6 @@ impl SyntaxFactory for JsSyntaxFactory { | JS_UNKNOWN_MODIFIER | JS_UNKNOWN_NAMED_IMPORT_SPECIFIER | JS_UNKNOWN_STATEMENT => RawSyntaxNode::new(kind, children.into_iter().map(Some)), - CALL_EXPR => { - let actual_len = children.len(); - if actual_len > 4usize { - return RawSyntaxNode::new( - CALL_EXPR.to_unknown(), - children.into_iter().map(Some), - ); - } - let mut elements = (&children).into_iter(); - let mut slots: RawNodeSlots<4usize> = RawNodeSlots::default(); - let mut current_element = elements.next(); - if let Some(element) = ¤t_element { - if JsAnyExpression::can_cast(element.kind()) { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if let Some(element) = ¤t_element { - if element.kind() == T ! [?.] { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if let Some(element) = ¤t_element { - if TsTypeArgs::can_cast(element.kind()) { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if let Some(element) = ¤t_element { - if JsCallArguments::can_cast(element.kind()) { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if current_element.is_some() { - return RawSyntaxNode::new( - CALL_EXPR.to_unknown(), - children.into_iter().map(Some), - ); - } - slots.into_node(CALL_EXPR, children) - } EXPORT_DECL => { let actual_len = children.len(); if actual_len > 3usize { @@ -1268,6 +1209,65 @@ impl SyntaxFactory for JsSyntaxFactory { } slots.into_node(JS_CALL_ARGUMENTS, children) } + JS_CALL_EXPRESSION => { + let actual_len = children.len(); + if actual_len > 4usize { + return RawSyntaxNode::new( + JS_CALL_EXPRESSION.to_unknown(), + children.into_iter().map(Some), + ); + } + let mut elements = (&children).into_iter(); + let mut slots: RawNodeSlots<4usize> = RawNodeSlots::default(); + let mut current_element = elements.next(); + if let Some(element) = ¤t_element { + if JsAnyExpression::can_cast(element.kind()) { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if let Some(element) = ¤t_element { + if element.kind() == T ! [?.] { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if let Some(element) = ¤t_element { + if TsTypeArgs::can_cast(element.kind()) { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if let Some(element) = ¤t_element { + if JsCallArguments::can_cast(element.kind()) { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if current_element.is_some() { + return RawSyntaxNode::new( + JS_CALL_EXPRESSION.to_unknown(), + children.into_iter().map(Some), + ); + } + slots.into_node(JS_CALL_EXPRESSION, children) + } JS_CASE_CLAUSE => { let actual_len = children.len(); if actual_len > 4usize { @@ -4603,6 +4603,65 @@ impl SyntaxFactory for JsSyntaxFactory { } slots.into_node(JS_NAMESPACE_IMPORT_SPECIFIER, children) } + JS_NEW_EXPRESSION => { + let actual_len = children.len(); + if actual_len > 4usize { + return RawSyntaxNode::new( + JS_NEW_EXPRESSION.to_unknown(), + children.into_iter().map(Some), + ); + } + let mut elements = (&children).into_iter(); + let mut slots: RawNodeSlots<4usize> = RawNodeSlots::default(); + let mut current_element = elements.next(); + if let Some(element) = ¤t_element { + if element.kind() == T![new] { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if let Some(element) = ¤t_element { + if JsAnyExpression::can_cast(element.kind()) { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if let Some(element) = ¤t_element { + if TsTypeArgs::can_cast(element.kind()) { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if let Some(element) = ¤t_element { + if JsCallArguments::can_cast(element.kind()) { + slots.mark_present(); + current_element = elements.next(); + } else { + slots.mark_absent(); + } + } else { + slots.mark_absent(); + } + if current_element.is_some() { + return RawSyntaxNode::new( + JS_NEW_EXPRESSION.to_unknown(), + children.into_iter().map(Some), + ); + } + slots.into_node(JS_NEW_EXPRESSION, children) + } JS_NULL_LITERAL_EXPRESSION => { let actual_len = children.len(); if actual_len > 1usize { @@ -6899,65 +6958,6 @@ impl SyntaxFactory for JsSyntaxFactory { } slots.into_node(JS_YIELD_EXPRESSION, children) } - NEW_EXPR => { - let actual_len = children.len(); - if actual_len > 4usize { - return RawSyntaxNode::new( - NEW_EXPR.to_unknown(), - children.into_iter().map(Some), - ); - } - let mut elements = (&children).into_iter(); - let mut slots: RawNodeSlots<4usize> = RawNodeSlots::default(); - let mut current_element = elements.next(); - if let Some(element) = ¤t_element { - if element.kind() == T![new] { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if let Some(element) = ¤t_element { - if JsAnyExpression::can_cast(element.kind()) { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if let Some(element) = ¤t_element { - if TsTypeArgs::can_cast(element.kind()) { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if let Some(element) = ¤t_element { - if JsCallArguments::can_cast(element.kind()) { - slots.mark_present(); - current_element = elements.next(); - } else { - slots.mark_absent(); - } - } else { - slots.mark_absent(); - } - if current_element.is_some() { - return RawSyntaxNode::new( - NEW_EXPR.to_unknown(), - children.into_iter().map(Some), - ); - } - slots.into_node(NEW_EXPR, children) - } NEW_TARGET => { let actual_len = children.len(); if actual_len > 3usize { diff --git a/crates/rslint_parser/src/syntax/expr.rs b/crates/rslint_parser/src/syntax/expr.rs index 704443dc591..7a28cde2353 100644 --- a/crates/rslint_parser/src/syntax/expr.rs +++ b/crates/rslint_parser/src/syntax/expr.rs @@ -450,10 +450,10 @@ fn parse_member_or_new_expr(p: &mut Parser, new_expr: bool) -> ParsedSyntax { // it's safe to unwrap to because we check beforehand the existence of '(' // which is mandatory for `parse_arguments` parse_arguments(p).unwrap(); - let complete = m.complete(p, NEW_EXPR); + let complete = m.complete(p, JS_NEW_EXPRESSION); return Present(subscripts(p, complete, true)); } - return Present(m.complete(p, NEW_EXPR)); + return Present(m.complete(p, JS_NEW_EXPRESSION)); } // super.foo and super[bar] @@ -537,7 +537,7 @@ fn subscripts(p: &mut Parser, mut lhs: CompletedMarker, no_call: bool) -> Comple // it's safe to unwrap to because we check beforehand the existence of '(' // which is mandatory for `parse_arguments` parse_arguments(p).unwrap(); - m.complete(p, CALL_EXPR) + m.complete(p, JS_CALL_EXPRESSION) } } T!['('] if !no_call => { @@ -546,7 +546,7 @@ fn subscripts(p: &mut Parser, mut lhs: CompletedMarker, no_call: bool) -> Comple // it's safe to unwrap to because we check beforehand the existence of '(' // which is mandatory for `parse_arguments` parse_arguments(p).unwrap(); - m.complete(p, CALL_EXPR) + m.complete(p, JS_CALL_EXPRESSION) } } T![?.] if p.nth_at(1, T!['[']) => { @@ -583,7 +583,7 @@ fn subscripts(p: &mut Parser, mut lhs: CompletedMarker, no_call: bool) -> Comple if !no_call && p.at(T!['(']) { // we already to the check on '(', so it's safe to unwrap parse_arguments(p).unwrap(); - Some(m.complete(p, CALL_EXPR)) + Some(m.complete(p, JS_CALL_EXPRESSION)) } else if p.at(BACKTICK) { m.abandon(p); Some(parse_template_literal(p, Present(lhs))) @@ -1378,7 +1378,7 @@ pub(super) fn parse_lhs_expr(p: &mut Parser) -> ParsedSyntax { if p.at(T!['(']) || type_args.is_some() { // it's safe to unwrap parse_arguments(p).unwrap(); - let lhs = m.complete(p, CALL_EXPR); + let lhs = m.complete(p, JS_CALL_EXPRESSION); return subscripts(p, lhs, false); } diff --git a/crates/rslint_parser/test_data/inline/err/binary_expressions_err.rast b/crates/rslint_parser/test_data/inline/err/binary_expressions_err.rast index 4f4d5fe599b..e6e72bc4c2f 100644 --- a/crates/rslint_parser/test_data/inline/err/binary_expressions_err.rast +++ b/crates/rslint_parser/test_data/inline/err/binary_expressions_err.rast @@ -3,7 +3,7 @@ JsModule { directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@0..3 "foo" [] [], @@ -75,7 +75,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@0..0 2: JS_MODULE_ITEM_LIST@0..34 0: JS_EXPRESSION_STATEMENT@0..11 - 0: CALL_EXPR@0..10 + 0: JS_CALL_EXPRESSION@0..10 0: JS_IDENTIFIER_EXPRESSION@0..3 0: JS_REFERENCE_IDENTIFIER@0..3 0: IDENT@0..3 "foo" [] [] diff --git a/crates/rslint_parser/test_data/inline/err/import_call_no_arg.rast b/crates/rslint_parser/test_data/inline/err/import_call_no_arg.rast index cf394cf89ac..82d87f29537 100644 --- a/crates/rslint_parser/test_data/inline/err/import_call_no_arg.rast +++ b/crates/rslint_parser/test_data/inline/err/import_call_no_arg.rast @@ -27,7 +27,7 @@ JsModule { semicolon_token: SEMICOLON@16..17 ";" [] [], }, JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@17..21 "foo" [Whitespace("\n")] [], @@ -69,7 +69,7 @@ JsModule { 3: R_PAREN@15..16 ")" [] [] 1: SEMICOLON@16..17 ";" [] [] 1: JS_EXPRESSION_STATEMENT@17..24 - 0: CALL_EXPR@17..23 + 0: JS_CALL_EXPRESSION@17..23 0: JS_IDENTIFIER_EXPRESSION@17..21 0: JS_REFERENCE_IDENTIFIER@17..21 0: IDENT@17..21 "foo" [Whitespace("\n")] [] diff --git a/crates/rslint_parser/test_data/inline/err/invalid_arg_list.rast b/crates/rslint_parser/test_data/inline/err/invalid_arg_list.rast index af720a637dd..ab053dbc946 100644 --- a/crates/rslint_parser/test_data/inline/err/invalid_arg_list.rast +++ b/crates/rslint_parser/test_data/inline/err/invalid_arg_list.rast @@ -3,7 +3,7 @@ JsModule { directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@0..3 "foo" [] [], @@ -32,7 +32,7 @@ JsModule { semicolon_token: SEMICOLON@7..8 ";" [] [], }, JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@8..12 "foo" [Whitespace("\n")] [], @@ -103,7 +103,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@0..0 2: JS_MODULE_ITEM_LIST@0..30 0: JS_EXPRESSION_STATEMENT@0..8 - 0: CALL_EXPR@0..7 + 0: JS_CALL_EXPRESSION@0..7 0: JS_IDENTIFIER_EXPRESSION@0..3 0: JS_REFERENCE_IDENTIFIER@0..3 0: IDENT@0..3 "foo" [] [] @@ -122,7 +122,7 @@ JsModule { 2: (empty) 1: SEMICOLON@7..8 ";" [] [] 1: JS_EXPRESSION_STATEMENT@8..17 - 0: CALL_EXPR@8..17 + 0: JS_CALL_EXPRESSION@8..17 0: JS_IDENTIFIER_EXPRESSION@8..12 0: JS_REFERENCE_IDENTIFIER@8..12 0: IDENT@8..12 "foo" [Whitespace("\n")] [] diff --git a/crates/rslint_parser/test_data/inline/err/logical_expressions_err.rast b/crates/rslint_parser/test_data/inline/err/logical_expressions_err.rast index 33644daf0bb..0321b52e0cf 100644 --- a/crates/rslint_parser/test_data/inline/err/logical_expressions_err.rast +++ b/crates/rslint_parser/test_data/inline/err/logical_expressions_err.rast @@ -40,7 +40,7 @@ JsModule { semicolon_token: SEMICOLON@23..24 ";" [] [], }, JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@24..28 "foo" [Whitespace("\n")] [], @@ -99,7 +99,7 @@ JsModule { 0: IDENT@20..23 "bar" [] [] 1: SEMICOLON@23..24 ";" [] [] 2: JS_EXPRESSION_STATEMENT@24..36 - 0: CALL_EXPR@24..36 + 0: JS_CALL_EXPRESSION@24..36 0: JS_IDENTIFIER_EXPRESSION@24..28 0: JS_REFERENCE_IDENTIFIER@24..28 0: IDENT@24..28 "foo" [Whitespace("\n")] [] diff --git a/crates/rslint_parser/test_data/inline/err/new_exprs.rast b/crates/rslint_parser/test_data/inline/err/new_exprs.rast index 7330c0b4a32..e37cba4cefe 100644 --- a/crates/rslint_parser/test_data/inline/err/new_exprs.rast +++ b/crates/rslint_parser/test_data/inline/err/new_exprs.rast @@ -3,9 +3,9 @@ JsModule { directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { - expression: NewExpr { + expression: JsNewExpression { new_token: NEW_KW@0..3 "new" [] [], - object: missing (required), + callee: missing (required), type_args: missing (optional), arguments: missing (optional), }, @@ -20,7 +20,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@0..0 2: JS_MODULE_ITEM_LIST@0..4 0: JS_EXPRESSION_STATEMENT@0..4 - 0: NEW_EXPR@0..3 + 0: JS_NEW_EXPRESSION@0..3 0: NEW_KW@0..3 "new" [] [] 1: (empty) 2: (empty) diff --git a/crates/rslint_parser/test_data/inline/err/primary_expr_invalid_recovery.rast b/crates/rslint_parser/test_data/inline/err/primary_expr_invalid_recovery.rast index c65cc9263eb..b015feebfc4 100644 --- a/crates/rslint_parser/test_data/inline/err/primary_expr_invalid_recovery.rast +++ b/crates/rslint_parser/test_data/inline/err/primary_expr_invalid_recovery.rast @@ -34,7 +34,7 @@ JsModule { ], }, JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@11..14 "foo" [] [], @@ -71,7 +71,7 @@ JsModule { 0: ERROR_TOKEN@8..9 "\\" [] [] 1: SEMICOLON@9..11 ";" [] [Whitespace(" ")] 1: JS_EXPRESSION_STATEMENT@11..17 - 0: CALL_EXPR@11..16 + 0: JS_CALL_EXPRESSION@11..16 0: JS_IDENTIFIER_EXPRESSION@11..14 0: JS_REFERENCE_IDENTIFIER@11..14 0: IDENT@11..14 "foo" [] [] diff --git a/crates/rslint_parser/test_data/inline/err/subscripts_err.rast b/crates/rslint_parser/test_data/inline/err/subscripts_err.rast index 1394f5039d5..5c1dfeacb32 100644 --- a/crates/rslint_parser/test_data/inline/err/subscripts_err.rast +++ b/crates/rslint_parser/test_data/inline/err/subscripts_err.rast @@ -7,7 +7,7 @@ JsModule { tag: JsStaticMemberExpression { object: JsComputedMemberExpression { object: JsStaticMemberExpression { - object: CallExpr { + object: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@0..3 "foo" [] [], @@ -59,7 +59,7 @@ JsModule { 0: JS_STATIC_MEMBER_EXPRESSION@0..17 0: JS_COMPUTED_MEMBER_EXPRESSION@0..12 0: JS_STATIC_MEMBER_EXPRESSION@0..10 - 0: CALL_EXPR@0..5 + 0: JS_CALL_EXPRESSION@0..5 0: JS_IDENTIFIER_EXPRESSION@0..3 0: JS_REFERENCE_IDENTIFIER@0..3 0: IDENT@0..3 "foo" [] [] diff --git a/crates/rslint_parser/test_data/inline/err/super_expression_err.rast b/crates/rslint_parser/test_data/inline/err/super_expression_err.rast index f62db58a919..200a60e57c9 100644 --- a/crates/rslint_parser/test_data/inline/err/super_expression_err.rast +++ b/crates/rslint_parser/test_data/inline/err/super_expression_err.rast @@ -39,7 +39,7 @@ JsModule { directives: JsDirectiveList [], statements: JsStatementList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsUnknownExpression { items: [ SUPER_KW@32..40 "super" [Whitespace("\n\t\t")] [], @@ -56,7 +56,7 @@ JsModule { semicolon_token: SEMICOLON@42..43 ";" [] [], }, JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsStaticMemberExpression { object: JsUnknownExpression { items: [ @@ -86,7 +86,7 @@ JsModule { r_curly_token: R_CURLY@63..65 "}" [Whitespace("\n")] [], }, JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsUnknownExpression { items: [ SUPER_KW@65..71 "super" [Whitespace("\n")] [], @@ -141,7 +141,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@32..32 2: JS_STATEMENT_LIST@32..60 0: JS_EXPRESSION_STATEMENT@32..43 - 0: CALL_EXPR@32..42 + 0: JS_CALL_EXPRESSION@32..42 0: JS_UNKNOWN_EXPRESSION@32..40 0: SUPER_KW@32..40 "super" [Whitespace("\n\t\t")] [] 1: (empty) @@ -152,7 +152,7 @@ JsModule { 2: R_PAREN@41..42 ")" [] [] 1: SEMICOLON@42..43 ";" [] [] 1: JS_EXPRESSION_STATEMENT@43..60 - 0: CALL_EXPR@43..59 + 0: JS_CALL_EXPRESSION@43..59 0: JS_STATIC_MEMBER_EXPRESSION@43..57 0: JS_UNKNOWN_EXPRESSION@43..51 0: SUPER_KW@43..51 "super" [Whitespace("\n\t\t")] [] @@ -169,7 +169,7 @@ JsModule { 3: R_CURLY@60..63 "}" [Whitespace("\n\t")] [] 6: R_CURLY@63..65 "}" [Whitespace("\n")] [] 1: JS_EXPRESSION_STATEMENT@65..74 - 0: CALL_EXPR@65..73 + 0: JS_CALL_EXPRESSION@65..73 0: JS_UNKNOWN_EXPRESSION@65..71 0: SUPER_KW@65..71 "super" [Whitespace("\n")] [] 1: (empty) diff --git a/crates/rslint_parser/test_data/inline/err/throw_stmt_err.rast b/crates/rslint_parser/test_data/inline/err/throw_stmt_err.rast index c552b76601f..c9204048fc2 100644 --- a/crates/rslint_parser/test_data/inline/err/throw_stmt_err.rast +++ b/crates/rslint_parser/test_data/inline/err/throw_stmt_err.rast @@ -8,9 +8,9 @@ JsModule { semicolon_token: missing (optional), }, JsExpressionStatement { - expression: NewExpr { + expression: JsNewExpression { new_token: NEW_KW@5..10 "new" [Whitespace("\n")] [Whitespace(" ")], - object: JsIdentifierExpression { + callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@10..15 "Error" [] [], }, @@ -46,7 +46,7 @@ JsModule { 1: (empty) 2: (empty) 1: JS_EXPRESSION_STATEMENT@5..27 - 0: NEW_EXPR@5..27 + 0: JS_NEW_EXPRESSION@5..27 0: NEW_KW@5..10 "new" [Whitespace("\n")] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@10..15 0: JS_REFERENCE_IDENTIFIER@10..15 diff --git a/crates/rslint_parser/test_data/inline/ok/array_assignment_target.rast b/crates/rslint_parser/test_data/inline/ok/array_assignment_target.rast index e380b3453cc..2a479d5d940 100644 --- a/crates/rslint_parser/test_data/inline/ok/array_assignment_target.rast +++ b/crates/rslint_parser/test_data/inline/ok/array_assignment_target.rast @@ -87,7 +87,7 @@ JsModule { }, COMMA@52..54 "," [] [Whitespace(" ")], JsStaticMemberAssignment { - object: CallExpr { + object: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@54..58 "call" [] [], @@ -216,7 +216,7 @@ JsModule { 0: IDENT@51..52 "b" [] [] 3: COMMA@52..54 "," [] [Whitespace(" ")] 4: JS_STATIC_MEMBER_ASSIGNMENT@54..62 - 0: CALL_EXPR@54..60 + 0: JS_CALL_EXPRESSION@54..60 0: JS_IDENTIFIER_EXPRESSION@54..58 0: JS_REFERENCE_IDENTIFIER@54..58 0: IDENT@54..58 "call" [] [] diff --git a/crates/rslint_parser/test_data/inline/ok/array_assignment_target_rest.rast b/crates/rslint_parser/test_data/inline/ok/array_assignment_target_rest.rast index 047275e94d6..95ce45e68f0 100644 --- a/crates/rslint_parser/test_data/inline/ok/array_assignment_target_rest.rast +++ b/crates/rslint_parser/test_data/inline/ok/array_assignment_target_rest.rast @@ -111,7 +111,7 @@ JsModule { }, }, l_brack_token: L_BRACK@68..69 "[" [] [], - member: CallExpr { + member: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@69..73 "call" [] [], @@ -152,7 +152,7 @@ JsModule { JsArrayAssignmentPatternRestElement { dotdotdot_token: DOT2@88..91 "..." [] [], pattern: JsStaticMemberAssignment { - object: CallExpr { + object: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { @@ -349,7 +349,7 @@ JsModule { 0: JS_REFERENCE_IDENTIFIER@67..68 0: IDENT@67..68 "m" [] [] 1: L_BRACK@68..69 "[" [] [] - 2: CALL_EXPR@69..75 + 2: JS_CALL_EXPRESSION@69..75 0: JS_IDENTIFIER_EXPRESSION@69..73 0: JS_REFERENCE_IDENTIFIER@69..73 0: IDENT@69..73 "call" [] [] @@ -377,7 +377,7 @@ JsModule { 0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@88..110 0: DOT2@88..91 "..." [] [] 1: JS_STATIC_MEMBER_ASSIGNMENT@91..110 - 0: CALL_EXPR@91..107 + 0: JS_CALL_EXPRESSION@91..107 0: JS_STATIC_MEMBER_EXPRESSION@91..105 0: JS_IDENTIFIER_EXPRESSION@91..94 0: JS_REFERENCE_IDENTIFIER@91..94 diff --git a/crates/rslint_parser/test_data/inline/ok/assignment_target.rast b/crates/rslint_parser/test_data/inline/ok/assignment_target.rast index 9cfc5b6e1c0..aaf0499fdc9 100644 --- a/crates/rslint_parser/test_data/inline/ok/assignment_target.rast +++ b/crates/rslint_parser/test_data/inline/ok/assignment_target.rast @@ -118,9 +118,9 @@ JsModule { JsExpressionStatement { expression: JsAssignmentExpression { left: JsStaticMemberAssignment { - object: CallExpr { + object: JsCallExpression { callee: JsStaticMemberExpression { - object: CallExpr { + object: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { @@ -306,9 +306,9 @@ JsModule { 5: JS_EXPRESSION_STATEMENT@82..111 0: JS_ASSIGNMENT_EXPRESSION@82..110 0: JS_STATIC_MEMBER_ASSIGNMENT@82..107 - 0: CALL_EXPR@82..99 + 0: JS_CALL_EXPRESSION@82..99 0: JS_STATIC_MEMBER_EXPRESSION@82..97 - 0: CALL_EXPR@82..91 + 0: JS_CALL_EXPRESSION@82..91 0: JS_STATIC_MEMBER_EXPRESSION@82..89 0: JS_IDENTIFIER_EXPRESSION@82..84 0: JS_REFERENCE_IDENTIFIER@82..84 diff --git a/crates/rslint_parser/test_data/inline/ok/await_expression.rast b/crates/rslint_parser/test_data/inline/ok/await_expression.rast index 776cb43ae1d..6ddb123ed88 100644 --- a/crates/rslint_parser/test_data/inline/ok/await_expression.rast +++ b/crates/rslint_parser/test_data/inline/ok/await_expression.rast @@ -23,7 +23,7 @@ JsModule { JsExpressionStatement { expression: JsAwaitExpression { await_token: AWAIT_KW@23..31 "await" [Whitespace("\n\t")] [Whitespace(" ")], - argument: CallExpr { + argument: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@31..36 "inner" [] [], @@ -46,7 +46,7 @@ JsModule { await_token: AWAIT_KW@39..47 "await" [Whitespace("\n\t")] [Whitespace(" ")], argument: JsParenthesizedExpression { l_paren_token: L_PAREN@47..48 "(" [] [], - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@48..53 "inner" [] [], @@ -66,7 +66,7 @@ JsModule { operator: PLUS@57..59 "+" [] [Whitespace(" ")], right: JsAwaitExpression { await_token: AWAIT_KW@59..65 "await" [] [Whitespace(" ")], - argument: CallExpr { + argument: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@65..70 "inner" [] [], @@ -144,7 +144,7 @@ JsModule { 0: JS_EXPRESSION_STATEMENT@23..39 0: JS_AWAIT_EXPRESSION@23..38 0: AWAIT_KW@23..31 "await" [Whitespace("\n\t")] [Whitespace(" ")] - 1: CALL_EXPR@31..38 + 1: JS_CALL_EXPRESSION@31..38 0: JS_IDENTIFIER_EXPRESSION@31..36 0: JS_REFERENCE_IDENTIFIER@31..36 0: IDENT@31..36 "inner" [] [] @@ -161,7 +161,7 @@ JsModule { 0: AWAIT_KW@39..47 "await" [Whitespace("\n\t")] [Whitespace(" ")] 1: JS_PARENTHESIZED_EXPRESSION@47..57 0: L_PAREN@47..48 "(" [] [] - 1: CALL_EXPR@48..55 + 1: JS_CALL_EXPRESSION@48..55 0: JS_IDENTIFIER_EXPRESSION@48..53 0: JS_REFERENCE_IDENTIFIER@48..53 0: IDENT@48..53 "inner" [] [] @@ -175,7 +175,7 @@ JsModule { 1: PLUS@57..59 "+" [] [Whitespace(" ")] 2: JS_AWAIT_EXPRESSION@59..72 0: AWAIT_KW@59..65 "await" [] [Whitespace(" ")] - 1: CALL_EXPR@65..72 + 1: JS_CALL_EXPRESSION@65..72 0: JS_IDENTIFIER_EXPRESSION@65..70 0: JS_REFERENCE_IDENTIFIER@65..70 0: IDENT@65..70 "inner" [] [] diff --git a/crates/rslint_parser/test_data/inline/ok/binary_expressions.rast b/crates/rslint_parser/test_data/inline/ok/binary_expressions.rast index 7cbb10f8cc4..6615479c4d8 100644 --- a/crates/rslint_parser/test_data/inline/ok/binary_expressions.rast +++ b/crates/rslint_parser/test_data/inline/ok/binary_expressions.rast @@ -44,7 +44,7 @@ JsModule { value_token: JS_NUMBER_LITERAL@22..24 "2" [] [Whitespace(" ")], }, operator: STAR@24..26 "*" [] [Whitespace(" ")], - right: CallExpr { + right: JsCallExpression { callee: JsNumberLiteralExpression { value_token: JS_NUMBER_LITERAL@26..27 "3" [] [], }, @@ -263,7 +263,7 @@ JsModule { 0: JS_NUMBER_LITERAL_EXPRESSION@22..24 0: JS_NUMBER_LITERAL@22..24 "2" [] [Whitespace(" ")] 1: STAR@24..26 "*" [] [Whitespace(" ")] - 2: CALL_EXPR@26..36 + 2: JS_CALL_EXPRESSION@26..36 0: JS_NUMBER_LITERAL_EXPRESSION@26..27 0: JS_NUMBER_LITERAL@26..27 "3" [] [] 1: (empty) diff --git a/crates/rslint_parser/test_data/inline/ok/do_while_statement.rast b/crates/rslint_parser/test_data/inline/ok/do_while_statement.rast index e665183fd64..b1b75d350df 100644 --- a/crates/rslint_parser/test_data/inline/ok/do_while_statement.rast +++ b/crates/rslint_parser/test_data/inline/ok/do_while_statement.rast @@ -5,7 +5,7 @@ JsModule { JsDoWhileStatement { do_token: DO_KW@0..3 "do" [] [Whitespace(" ")], body: JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { @@ -45,7 +45,7 @@ JsModule { l_curly_token: L_CURLY@39..40 "{" [] [], statements: JsStatementList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { @@ -176,7 +176,7 @@ JsModule { 0: JS_DO_WHILE_STATEMENT@0..35 0: DO_KW@0..3 "do" [] [Whitespace(" ")] 1: JS_EXPRESSION_STATEMENT@3..24 - 0: CALL_EXPR@3..22 + 0: JS_CALL_EXPRESSION@3..22 0: JS_STATIC_MEMBER_EXPRESSION@3..14 0: JS_IDENTIFIER_EXPRESSION@3..10 0: JS_REFERENCE_IDENTIFIER@3..10 @@ -205,7 +205,7 @@ JsModule { 0: L_CURLY@39..40 "{" [] [] 1: JS_STATEMENT_LIST@40..61 0: JS_EXPRESSION_STATEMENT@40..61 - 0: CALL_EXPR@40..61 + 0: JS_CALL_EXPRESSION@40..61 0: JS_STATIC_MEMBER_EXPRESSION@40..53 0: JS_IDENTIFIER_EXPRESSION@40..49 0: JS_REFERENCE_IDENTIFIER@40..49 diff --git a/crates/rslint_parser/test_data/inline/ok/do_while_stmt.rast b/crates/rslint_parser/test_data/inline/ok/do_while_stmt.rast index ad93fc572c4..480a435f320 100644 --- a/crates/rslint_parser/test_data/inline/ok/do_while_stmt.rast +++ b/crates/rslint_parser/test_data/inline/ok/do_while_stmt.rast @@ -24,7 +24,7 @@ JsModule { statements: JsStatementList [ JsThrowStatement { throw_token: THROW_KW@25..31 "throw" [] [Whitespace(" ")], - argument: CallExpr { + argument: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@31..36 "Error" [] [], @@ -103,7 +103,7 @@ JsModule { 1: JS_STATEMENT_LIST@25..44 0: JS_THROW_STATEMENT@25..44 0: THROW_KW@25..31 "throw" [] [Whitespace(" ")] - 1: CALL_EXPR@31..44 + 1: JS_CALL_EXPRESSION@31..44 0: JS_IDENTIFIER_EXPRESSION@31..36 0: JS_REFERENCE_IDENTIFIER@31..36 0: IDENT@31..36 "Error" [] [] diff --git a/crates/rslint_parser/test_data/inline/ok/grouping_expr.rast b/crates/rslint_parser/test_data/inline/ok/grouping_expr.rast index c230892e41f..726a4c2cfe3 100644 --- a/crates/rslint_parser/test_data/inline/ok/grouping_expr.rast +++ b/crates/rslint_parser/test_data/inline/ok/grouping_expr.rast @@ -3,7 +3,7 @@ JsModule { directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsParenthesizedExpression { l_paren_token: L_PAREN@0..1 "(" [] [], expression: JsParenthesizedExpression { @@ -42,7 +42,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@0..0 2: JS_MODULE_ITEM_LIST@0..13 0: JS_EXPRESSION_STATEMENT@0..13 - 0: CALL_EXPR@0..13 + 0: JS_CALL_EXPRESSION@0..13 0: JS_PARENTHESIZED_EXPRESSION@0..7 0: L_PAREN@0..1 "(" [] [] 1: JS_PARENTHESIZED_EXPRESSION@1..6 diff --git a/crates/rslint_parser/test_data/inline/ok/js_parenthesized_expression.rast b/crates/rslint_parser/test_data/inline/ok/js_parenthesized_expression.rast index c230892e41f..726a4c2cfe3 100644 --- a/crates/rslint_parser/test_data/inline/ok/js_parenthesized_expression.rast +++ b/crates/rslint_parser/test_data/inline/ok/js_parenthesized_expression.rast @@ -3,7 +3,7 @@ JsModule { directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsParenthesizedExpression { l_paren_token: L_PAREN@0..1 "(" [] [], expression: JsParenthesizedExpression { @@ -42,7 +42,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@0..0 2: JS_MODULE_ITEM_LIST@0..13 0: JS_EXPRESSION_STATEMENT@0..13 - 0: CALL_EXPR@0..13 + 0: JS_CALL_EXPRESSION@0..13 0: JS_PARENTHESIZED_EXPRESSION@0..7 0: L_PAREN@0..1 "(" [] [] 1: JS_PARENTHESIZED_EXPRESSION@1..6 diff --git a/crates/rslint_parser/test_data/inline/ok/module.rast b/crates/rslint_parser/test_data/inline/ok/module.rast index 4a3efe03058..0e1084c2f13 100644 --- a/crates/rslint_parser/test_data/inline/ok/module.rast +++ b/crates/rslint_parser/test_data/inline/ok/module.rast @@ -37,7 +37,7 @@ JsModule { }, }, JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@32..34 "c" [Whitespace("\n")] [], @@ -110,7 +110,7 @@ JsModule { 4: (empty) 5: SEMICOLON@31..32 ";" [] [] 2: JS_EXPRESSION_STATEMENT@32..37 - 0: CALL_EXPR@32..36 + 0: JS_CALL_EXPRESSION@32..36 0: JS_IDENTIFIER_EXPRESSION@32..34 0: JS_REFERENCE_IDENTIFIER@32..34 0: IDENT@32..34 "c" [Whitespace("\n")] [] diff --git a/crates/rslint_parser/test_data/inline/ok/new_exprs.rast b/crates/rslint_parser/test_data/inline/ok/new_exprs.rast index 936056cadcf..23caa361036 100644 --- a/crates/rslint_parser/test_data/inline/ok/new_exprs.rast +++ b/crates/rslint_parser/test_data/inline/ok/new_exprs.rast @@ -3,9 +3,9 @@ JsModule { directives: JsDirectiveList [], items: JsModuleItemList [ JsExpressionStatement { - expression: NewExpr { + expression: JsNewExpression { new_token: NEW_KW@0..4 "new" [] [Whitespace(" ")], - object: JsIdentifierExpression { + callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@4..7 "Foo" [] [], }, @@ -20,9 +20,9 @@ JsModule { semicolon_token: missing (optional), }, JsExpressionStatement { - expression: NewExpr { + expression: JsNewExpression { new_token: NEW_KW@9..14 "new" [Whitespace("\n")] [Whitespace(" ")], - object: JsIdentifierExpression { + callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@14..17 "foo" [] [], }, @@ -41,15 +41,15 @@ JsModule { semicolon_token: missing (optional), }, JsExpressionStatement { - expression: NewExpr { + expression: JsNewExpression { new_token: NEW_KW@29..34 "new" [Whitespace("\n")] [Whitespace(" ")], - object: NewExpr { + callee: JsNewExpression { new_token: NEW_KW@34..38 "new" [] [Whitespace(" ")], - object: NewExpr { + callee: JsNewExpression { new_token: NEW_KW@38..42 "new" [] [Whitespace(" ")], - object: NewExpr { + callee: JsNewExpression { new_token: NEW_KW@42..46 "new" [] [Whitespace(" ")], - object: JsIdentifierExpression { + callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@46..49 "Foo" [] [], }, @@ -73,9 +73,9 @@ JsModule { semicolon_token: SEMICOLON@51..52 ";" [] [], }, JsExpressionStatement { - expression: NewExpr { + expression: JsNewExpression { new_token: NEW_KW@52..57 "new" [Whitespace("\n")] [Whitespace(" ")], - object: JsIdentifierExpression { + callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@57..60 "Foo" [] [], }, @@ -174,7 +174,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@0..0 2: JS_MODULE_ITEM_LIST@0..112 0: JS_EXPRESSION_STATEMENT@0..9 - 0: NEW_EXPR@0..9 + 0: JS_NEW_EXPRESSION@0..9 0: NEW_KW@0..4 "new" [] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@4..7 0: JS_REFERENCE_IDENTIFIER@4..7 @@ -186,7 +186,7 @@ JsModule { 2: R_PAREN@8..9 ")" [] [] 1: (empty) 1: JS_EXPRESSION_STATEMENT@9..18 - 0: NEW_EXPR@9..17 + 0: JS_NEW_EXPRESSION@9..17 0: NEW_KW@9..14 "new" [Whitespace("\n")] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@14..17 0: JS_REFERENCE_IDENTIFIER@14..17 @@ -201,13 +201,13 @@ JsModule { 2: TARGET_KW@23..29 "target" [] [] 1: (empty) 3: JS_EXPRESSION_STATEMENT@29..52 - 0: NEW_EXPR@29..51 + 0: JS_NEW_EXPRESSION@29..51 0: NEW_KW@29..34 "new" [Whitespace("\n")] [Whitespace(" ")] - 1: NEW_EXPR@34..51 + 1: JS_NEW_EXPRESSION@34..51 0: NEW_KW@34..38 "new" [] [Whitespace(" ")] - 1: NEW_EXPR@38..51 + 1: JS_NEW_EXPRESSION@38..51 0: NEW_KW@38..42 "new" [] [Whitespace(" ")] - 1: NEW_EXPR@42..51 + 1: JS_NEW_EXPRESSION@42..51 0: NEW_KW@42..46 "new" [] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@46..49 0: JS_REFERENCE_IDENTIFIER@46..49 @@ -225,7 +225,7 @@ JsModule { 3: (empty) 1: SEMICOLON@51..52 ";" [] [] 4: JS_EXPRESSION_STATEMENT@52..112 - 0: NEW_EXPR@52..112 + 0: JS_NEW_EXPRESSION@52..112 0: NEW_KW@52..57 "new" [Whitespace("\n")] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@57..60 0: JS_REFERENCE_IDENTIFIER@57..60 diff --git a/crates/rslint_parser/test_data/inline/ok/object_shorthand_property.rast b/crates/rslint_parser/test_data/inline/ok/object_shorthand_property.rast index a5a5cf1ceca..dd9024b3959 100644 --- a/crates/rslint_parser/test_data/inline/ok/object_shorthand_property.rast +++ b/crates/rslint_parser/test_data/inline/ok/object_shorthand_property.rast @@ -67,7 +67,7 @@ JsModule { }, init: JsInitializerClause { eq_token: EQ@40..42 "=" [] [Whitespace(" ")], - expression: CallExpr { + expression: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@42..46 "call" [] [], @@ -156,7 +156,7 @@ JsModule { 0: IDENT@38..40 "b" [] [Whitespace(" ")] 1: JS_INITIALIZER_CLAUSE@40..49 0: EQ@40..42 "=" [] [Whitespace(" ")] - 1: CALL_EXPR@42..49 + 1: JS_CALL_EXPRESSION@42..49 0: JS_IDENTIFIER_EXPRESSION@42..46 0: JS_REFERENCE_IDENTIFIER@42..46 0: IDENT@42..46 "call" [] [] diff --git a/crates/rslint_parser/test_data/inline/ok/property_assignment_target.rast b/crates/rslint_parser/test_data/inline/ok/property_assignment_target.rast index 1e66de7baff..295ea0417b2 100644 --- a/crates/rslint_parser/test_data/inline/ok/property_assignment_target.rast +++ b/crates/rslint_parser/test_data/inline/ok/property_assignment_target.rast @@ -73,7 +73,7 @@ JsModule { }, colon_token: COLON@28..30 ":" [] [Whitespace(" ")], pattern: JsStaticMemberAssignment { - object: CallExpr { + object: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { @@ -322,7 +322,7 @@ JsModule { 0: IDENT@27..28 "x" [] [] 1: COLON@28..30 ":" [] [Whitespace(" ")] 2: JS_STATIC_MEMBER_ASSIGNMENT@30..40 - 0: CALL_EXPR@30..38 + 0: JS_CALL_EXPRESSION@30..38 0: JS_STATIC_MEMBER_EXPRESSION@30..36 0: JS_IDENTIFIER_EXPRESSION@30..31 0: JS_REFERENCE_IDENTIFIER@30..31 diff --git a/crates/rslint_parser/test_data/inline/ok/rest_property_assignment_target.rast b/crates/rslint_parser/test_data/inline/ok/rest_property_assignment_target.rast index 9e73dfc0dda..41c5492bbb1 100644 --- a/crates/rslint_parser/test_data/inline/ok/rest_property_assignment_target.rast +++ b/crates/rslint_parser/test_data/inline/ok/rest_property_assignment_target.rast @@ -111,7 +111,7 @@ JsModule { }, }, l_brack_token: L_BRACK@68..69 "[" [] [], - member: CallExpr { + member: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@69..73 "call" [] [], @@ -152,7 +152,7 @@ JsModule { JsObjectAssignmentPatternRest { dotdotdot_token: DOT2@88..91 "..." [] [], target: JsStaticMemberAssignment { - object: CallExpr { + object: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { @@ -316,7 +316,7 @@ JsModule { 0: JS_REFERENCE_IDENTIFIER@67..68 0: IDENT@67..68 "m" [] [] 1: L_BRACK@68..69 "[" [] [] - 2: CALL_EXPR@69..75 + 2: JS_CALL_EXPRESSION@69..75 0: JS_IDENTIFIER_EXPRESSION@69..73 0: JS_REFERENCE_IDENTIFIER@69..73 0: IDENT@69..73 "call" [] [] @@ -344,7 +344,7 @@ JsModule { 0: JS_OBJECT_ASSIGNMENT_PATTERN_REST@88..110 0: DOT2@88..91 "..." [] [] 1: JS_STATIC_MEMBER_ASSIGNMENT@91..110 - 0: CALL_EXPR@91..107 + 0: JS_CALL_EXPRESSION@91..107 0: JS_STATIC_MEMBER_EXPRESSION@91..105 0: JS_IDENTIFIER_EXPRESSION@91..94 0: JS_REFERENCE_IDENTIFIER@91..94 diff --git a/crates/rslint_parser/test_data/inline/ok/subscripts.rast b/crates/rslint_parser/test_data/inline/ok/subscripts.rast index 6fa6765088c..2cc16251daa 100644 --- a/crates/rslint_parser/test_data/inline/ok/subscripts.rast +++ b/crates/rslint_parser/test_data/inline/ok/subscripts.rast @@ -21,9 +21,9 @@ JsModule { }, JsExpressionStatement { expression: JsComputedMemberExpression { - object: CallExpr { - callee: CallExpr { - callee: CallExpr { + object: JsCallExpression { + callee: JsCallExpression { + callee: JsCallExpression { callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@8..12 "foo" [Whitespace("\n")] [], @@ -103,9 +103,9 @@ JsModule { 1: (empty) 1: JS_EXPRESSION_STATEMENT@8..32 0: JS_COMPUTED_MEMBER_EXPRESSION@8..32 - 0: CALL_EXPR@8..27 - 0: CALL_EXPR@8..22 - 0: CALL_EXPR@8..17 + 0: JS_CALL_EXPRESSION@8..27 + 0: JS_CALL_EXPRESSION@8..22 + 0: JS_CALL_EXPRESSION@8..17 0: JS_IDENTIFIER_EXPRESSION@8..12 0: JS_REFERENCE_IDENTIFIER@8..12 0: IDENT@8..12 "foo" [Whitespace("\n")] [] diff --git a/crates/rslint_parser/test_data/inline/ok/super_expression.rast b/crates/rslint_parser/test_data/inline/ok/super_expression.rast index ddb5e168f3a..6d0a6af3844 100644 --- a/crates/rslint_parser/test_data/inline/ok/super_expression.rast +++ b/crates/rslint_parser/test_data/inline/ok/super_expression.rast @@ -34,7 +34,7 @@ JsModule { directives: JsDirectiveList [], statements: JsStatementList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsSuperExpression { super_token: SUPER_KW@39..47 "super" [Whitespace("\n\t\t")] [], }, @@ -73,7 +73,7 @@ JsModule { directives: JsDirectiveList [], statements: JsStatementList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsStaticMemberExpression { object: JsSuperExpression { super_token: SUPER_KW@63..71 "super" [Whitespace("\n\t\t")] [], @@ -160,7 +160,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@39..39 2: JS_STATEMENT_LIST@39..50 0: JS_EXPRESSION_STATEMENT@39..50 - 0: CALL_EXPR@39..49 + 0: JS_CALL_EXPRESSION@39..49 0: JS_SUPER_EXPRESSION@39..47 0: SUPER_KW@39..47 "super" [Whitespace("\n\t\t")] [] 1: (empty) @@ -190,7 +190,7 @@ JsModule { 1: JS_DIRECTIVE_LIST@63..63 2: JS_STATEMENT_LIST@63..95 0: JS_EXPRESSION_STATEMENT@63..83 - 0: CALL_EXPR@63..82 + 0: JS_CALL_EXPRESSION@63..82 0: JS_STATIC_MEMBER_EXPRESSION@63..76 0: JS_SUPER_EXPRESSION@63..71 0: SUPER_KW@63..71 "super" [Whitespace("\n\t\t")] [] diff --git a/crates/rslint_parser/test_data/inline/ok/throw_stmt.rast b/crates/rslint_parser/test_data/inline/ok/throw_stmt.rast index 7e7a4bc22d3..c8528d5861d 100644 --- a/crates/rslint_parser/test_data/inline/ok/throw_stmt.rast +++ b/crates/rslint_parser/test_data/inline/ok/throw_stmt.rast @@ -4,9 +4,9 @@ JsModule { items: JsModuleItemList [ JsThrowStatement { throw_token: THROW_KW@0..6 "throw" [] [Whitespace(" ")], - argument: NewExpr { + argument: JsNewExpression { new_token: NEW_KW@6..10 "new" [] [Whitespace(" ")], - object: JsIdentifierExpression { + callee: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@10..15 "Error" [] [], }, @@ -41,7 +41,7 @@ JsModule { 2: JS_MODULE_ITEM_LIST@0..35 0: JS_THROW_STATEMENT@0..23 0: THROW_KW@0..6 "throw" [] [Whitespace(" ")] - 1: NEW_EXPR@6..22 + 1: JS_NEW_EXPRESSION@6..22 0: NEW_KW@6..10 "new" [] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@10..15 0: JS_REFERENCE_IDENTIFIER@10..15 diff --git a/crates/rslint_parser/test_data/inline/ok/with_statement.rast b/crates/rslint_parser/test_data/inline/ok/with_statement.rast index b5caee78701..393891c43ff 100644 --- a/crates/rslint_parser/test_data/inline/ok/with_statement.rast +++ b/crates/rslint_parser/test_data/inline/ok/with_statement.rast @@ -41,7 +41,7 @@ JsScript { l_curly_token: L_CURLY@39..40 "{" [] [], statements: JsStatementList [ JsExpressionStatement { - expression: CallExpr { + expression: JsCallExpression { callee: JsStaticMemberExpression { object: JsIdentifierExpression { name: JsReferenceIdentifier { @@ -117,7 +117,7 @@ JsScript { 0: L_CURLY@39..40 "{" [] [] 1: JS_STATEMENT_LIST@40..58 0: JS_EXPRESSION_STATEMENT@40..58 - 0: CALL_EXPR@40..57 + 0: JS_CALL_EXPRESSION@40..57 0: JS_STATIC_MEMBER_EXPRESSION@40..54 0: JS_IDENTIFIER_EXPRESSION@40..50 0: JS_REFERENCE_IDENTIFIER@40..50 diff --git a/crates/rslint_syntax/src/generated.rs b/crates/rslint_syntax/src/generated.rs index 21dfce8869f..c3a6389b534 100644 --- a/crates/rslint_syntax/src/generated.rs +++ b/crates/rslint_syntax/src/generated.rs @@ -217,11 +217,11 @@ pub enum JsSyntaxKind { JS_METHOD_OBJECT_MEMBER, JS_SUPER_EXPRESSION, JS_PARENTHESIZED_EXPRESSION, - NEW_EXPR, + JS_NEW_EXPRESSION, JS_FUNCTION_EXPRESSION, JS_STATIC_MEMBER_EXPRESSION, JS_COMPUTED_MEMBER_EXPRESSION, - CALL_EXPR, + JS_CALL_EXPRESSION, JS_UNARY_EXPRESSION, JS_PRE_UPDATE_EXPRESSION, JS_POST_UPDATE_EXPRESSION, diff --git a/crates/rslint_syntax/src/lib.rs b/crates/rslint_syntax/src/lib.rs index 367805216e3..cba223417f4 100644 --- a/crates/rslint_syntax/src/lib.rs +++ b/crates/rslint_syntax/src/lib.rs @@ -74,8 +74,7 @@ impl rome_rowan::SyntaxKind for JsSyntaxKind { | JS_WITH_STATEMENT | JS_UNKNOWN_STATEMENT => JS_UNKNOWN_STATEMENT, - CALL_EXPR - | IMPORT_META + IMPORT_META | JS_ARRAY_EXPRESSION | JS_ARROW_FUNCTION_EXPRESSION | JS_ASSIGNMENT_EXPRESSION @@ -83,6 +82,7 @@ impl rome_rowan::SyntaxKind for JsSyntaxKind { | JS_BIG_INT_LITERAL_EXPRESSION | JS_BINARY_EXPRESSION | JS_BOOLEAN_LITERAL_EXPRESSION + | JS_CALL_EXPRESSION | JS_CLASS_EXPRESSION | JS_COMPUTED_MEMBER_EXPRESSION | JS_CONDITIONAL_EXPRESSION @@ -90,6 +90,7 @@ impl rome_rowan::SyntaxKind for JsSyntaxKind { | JS_IDENTIFIER_EXPRESSION | JS_IMPORT_CALL_EXPRESSION | JS_LOGICAL_EXPRESSION + | JS_NEW_EXPRESSION | JS_NULL_LITERAL_EXPRESSION | JS_NUMBER_LITERAL_EXPRESSION | JS_OBJECT_EXPRESSION @@ -104,7 +105,6 @@ impl rome_rowan::SyntaxKind for JsSyntaxKind { | JS_THIS_EXPRESSION | JS_UNARY_EXPRESSION | JS_YIELD_EXPRESSION - | NEW_EXPR | NEW_TARGET | TEMPLATE | JS_UNKNOWN_EXPRESSION => JS_UNKNOWN_EXPRESSION, diff --git a/xtask/js.ungram b/xtask/js.ungram index 898383e37c4..02aaa447ae1 100644 --- a/xtask/js.ungram +++ b/xtask/js.ungram @@ -272,13 +272,13 @@ JsDebuggerStatement = // Expression JsAnyExpression = JsAnyLiteralExpression - | CallExpr | ImportMeta | JsArrayExpression | JsArrowFunctionExpression | JsAssignmentExpression | JsAwaitExpression | JsBinaryExpression + | JsCallExpression | JsClassExpression | JsComputedMemberExpression | JsConditionalExpression @@ -286,6 +286,7 @@ JsAnyExpression = | JsIdentifierExpression | JsImportCallExpression | JsLogicalExpression + | JsNewExpression | JsObjectExpression | JsParenthesizedExpression | JsPostUpdateExpression @@ -297,7 +298,6 @@ JsAnyExpression = | JsUnaryExpression | JsUnknownExpression | JsYieldExpression - | NewExpr | NewTarget | Template | TsAssertion @@ -329,13 +329,17 @@ JsThisExpression = 'this' JsSuperExpression = 'super' // new expression -NewExpr = 'new' object:JsAnyExpression type_args:TsTypeArgs? arguments: JsCallArguments? +JsNewExpression = + 'new' + callee: JsAnyExpression + type_args: TsTypeArgs? + arguments: JsCallArguments? // call expression -CallExpr = - callee:JsAnyExpression +JsCallExpression = + callee: JsAnyExpression optional_chain_token: '?.'? - type_args:TsTypeArgs? + type_args: TsTypeArgs? arguments: JsCallArguments diff --git a/xtask/src/codegen/kinds_src.rs b/xtask/src/codegen/kinds_src.rs index a62bbe3d6d7..00add7e0f81 100644 --- a/xtask/src/codegen/kinds_src.rs +++ b/xtask/src/codegen/kinds_src.rs @@ -238,7 +238,7 @@ pub const KINDS_SRC: KindsSrc = KindsSrc { "JS_FUNCTION_EXPRESSION", "JS_STATIC_MEMBER_EXPRESSION", "JS_COMPUTED_MEMBER_EXPRESSION", - "CALL_EXPR", + "JS_CALL_EXPRESSION", "JS_UNARY_EXPRESSION", "JS_PRE_UPDATE_EXPRESSION", "JS_POST_UPDATE_EXPRESSION",