mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
parent
7113e850b4
commit
0ba7778e5e
18 changed files with 106 additions and 28 deletions
|
|
@ -1123,6 +1123,7 @@ macro_rules! match_assignment_target {
|
||||||
| $ty::TSSatisfiesExpression(_)
|
| $ty::TSSatisfiesExpression(_)
|
||||||
| $ty::TSNonNullExpression(_)
|
| $ty::TSNonNullExpression(_)
|
||||||
| $ty::TSTypeAssertion(_)
|
| $ty::TSTypeAssertion(_)
|
||||||
|
| $ty::TSInstantiationExpression(_)
|
||||||
| $ty::ArrayAssignmentTarget(_)
|
| $ty::ArrayAssignmentTarget(_)
|
||||||
| $ty::ObjectAssignmentTarget(_)
|
| $ty::ObjectAssignmentTarget(_)
|
||||||
};
|
};
|
||||||
|
|
@ -1146,6 +1147,7 @@ pub enum SimpleAssignmentTarget<'a> {
|
||||||
TSSatisfiesExpression(Box<'a, TSSatisfiesExpression<'a>>) = 2,
|
TSSatisfiesExpression(Box<'a, TSSatisfiesExpression<'a>>) = 2,
|
||||||
TSNonNullExpression(Box<'a, TSNonNullExpression<'a>>) = 3,
|
TSNonNullExpression(Box<'a, TSNonNullExpression<'a>>) = 3,
|
||||||
TSTypeAssertion(Box<'a, TSTypeAssertion<'a>>) = 4,
|
TSTypeAssertion(Box<'a, TSTypeAssertion<'a>>) = 4,
|
||||||
|
TSInstantiationExpression(Box<'a, TSInstantiationExpression<'a>>) = 5,
|
||||||
// `MemberExpression` variants added here by `inherit_variants!` macro
|
// `MemberExpression` variants added here by `inherit_variants!` macro
|
||||||
@inherit MemberExpression
|
@inherit MemberExpression
|
||||||
}
|
}
|
||||||
|
|
@ -1164,6 +1166,7 @@ macro_rules! match_simple_assignment_target {
|
||||||
| $ty::TSSatisfiesExpression(_)
|
| $ty::TSSatisfiesExpression(_)
|
||||||
| $ty::TSNonNullExpression(_)
|
| $ty::TSNonNullExpression(_)
|
||||||
| $ty::TSTypeAssertion(_)
|
| $ty::TSTypeAssertion(_)
|
||||||
|
| $ty::TSInstantiationExpression(_)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
pub use match_simple_assignment_target;
|
pub use match_simple_assignment_target;
|
||||||
|
|
|
||||||
|
|
@ -313,6 +313,7 @@ macro_rules! inherit_variants {
|
||||||
TSSatisfiesExpression,
|
TSSatisfiesExpression,
|
||||||
TSNonNullExpression,
|
TSNonNullExpression,
|
||||||
TSTypeAssertion,
|
TSTypeAssertion,
|
||||||
|
TSInstantiationExpression,
|
||||||
ArrayAssignmentTarget,
|
ArrayAssignmentTarget,
|
||||||
ObjectAssignmentTarget,
|
ObjectAssignmentTarget,
|
||||||
]
|
]
|
||||||
|
|
@ -344,6 +345,8 @@ macro_rules! inherit_variants {
|
||||||
TSNonNullExpression(Box<'a, TSNonNullExpression<'a>>) = 3,
|
TSNonNullExpression(Box<'a, TSNonNullExpression<'a>>) = 3,
|
||||||
/// Inherited from [`SimpleAssignmentTarget`]
|
/// Inherited from [`SimpleAssignmentTarget`]
|
||||||
TSTypeAssertion(Box<'a, TSTypeAssertion<'a>>) = 4,
|
TSTypeAssertion(Box<'a, TSTypeAssertion<'a>>) = 4,
|
||||||
|
/// Inherited from [`SimpleAssignmentTarget`]
|
||||||
|
TSInstantiationExpression(Box<'a, TSInstantiationExpression<'a>>) = 5,
|
||||||
|
|
||||||
// Inherited from `MemberExpression`
|
// Inherited from `MemberExpression`
|
||||||
@inherit MemberExpression
|
@inherit MemberExpression
|
||||||
|
|
@ -368,7 +371,8 @@ macro_rules! inherit_variants {
|
||||||
TSAsExpression,
|
TSAsExpression,
|
||||||
TSSatisfiesExpression,
|
TSSatisfiesExpression,
|
||||||
TSNonNullExpression,
|
TSNonNullExpression,
|
||||||
TSTypeAssertion
|
TSTypeAssertion,
|
||||||
|
TSInstantiationExpression
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -276,6 +276,7 @@ impl<'a> GetSpan for AssignmentTarget<'a> {
|
||||||
Self::TSSatisfiesExpression(expr) => expr.span,
|
Self::TSSatisfiesExpression(expr) => expr.span,
|
||||||
Self::TSNonNullExpression(expr) => expr.span,
|
Self::TSNonNullExpression(expr) => expr.span,
|
||||||
Self::TSTypeAssertion(expr) => expr.span,
|
Self::TSTypeAssertion(expr) => expr.span,
|
||||||
|
Self::TSInstantiationExpression(expr) => expr.span,
|
||||||
// `AssignmentTargetPattern`
|
// `AssignmentTargetPattern`
|
||||||
Self::ComputedMemberExpression(expr) => expr.span,
|
Self::ComputedMemberExpression(expr) => expr.span,
|
||||||
Self::StaticMemberExpression(expr) => expr.span,
|
Self::StaticMemberExpression(expr) => expr.span,
|
||||||
|
|
@ -464,6 +465,7 @@ impl<'a> GetSpan for ForStatementLeft<'a> {
|
||||||
Self::TSSatisfiesExpression(x) => x.span,
|
Self::TSSatisfiesExpression(x) => x.span,
|
||||||
Self::TSNonNullExpression(x) => x.span,
|
Self::TSNonNullExpression(x) => x.span,
|
||||||
Self::TSTypeAssertion(x) => x.span,
|
Self::TSTypeAssertion(x) => x.span,
|
||||||
|
Self::TSInstantiationExpression(x) => x.span,
|
||||||
Self::ArrayAssignmentTarget(x) => x.span,
|
Self::ArrayAssignmentTarget(x) => x.span,
|
||||||
Self::ObjectAssignmentTarget(x) => x.span,
|
Self::ObjectAssignmentTarget(x) => x.span,
|
||||||
Self::UsingDeclaration(x) => x.span,
|
Self::UsingDeclaration(x) => x.span,
|
||||||
|
|
@ -479,6 +481,7 @@ impl<'a> GetSpan for SimpleAssignmentTarget<'a> {
|
||||||
Self::TSSatisfiesExpression(expr) => expr.span,
|
Self::TSSatisfiesExpression(expr) => expr.span,
|
||||||
Self::TSNonNullExpression(expr) => expr.span,
|
Self::TSNonNullExpression(expr) => expr.span,
|
||||||
Self::TSTypeAssertion(expr) => expr.span,
|
Self::TSTypeAssertion(expr) => expr.span,
|
||||||
|
Self::TSInstantiationExpression(expr) => expr.span,
|
||||||
// `MemberExpression`
|
// `MemberExpression`
|
||||||
Self::ComputedMemberExpression(expr) => expr.span,
|
Self::ComputedMemberExpression(expr) => expr.span,
|
||||||
Self::StaticMemberExpression(expr) => expr.span,
|
Self::StaticMemberExpression(expr) => expr.span,
|
||||||
|
|
|
||||||
|
|
@ -1861,6 +1861,9 @@ pub mod walk {
|
||||||
SimpleAssignmentTarget::TSTypeAssertion(expr) => {
|
SimpleAssignmentTarget::TSTypeAssertion(expr) => {
|
||||||
visitor.visit_expression(&expr.expression);
|
visitor.visit_expression(&expr.expression);
|
||||||
}
|
}
|
||||||
|
SimpleAssignmentTarget::TSInstantiationExpression(expr) => {
|
||||||
|
visitor.visit_expression(&expr.expression);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
visitor.leave_node(kind);
|
visitor.leave_node(kind);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1940,6 +1940,9 @@ pub mod walk_mut {
|
||||||
SimpleAssignmentTarget::TSTypeAssertion(expr) => {
|
SimpleAssignmentTarget::TSTypeAssertion(expr) => {
|
||||||
visitor.visit_expression(&mut expr.expression);
|
visitor.visit_expression(&mut expr.expression);
|
||||||
}
|
}
|
||||||
|
SimpleAssignmentTarget::TSInstantiationExpression(expr) => {
|
||||||
|
visitor.visit_expression(&mut expr.expression);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
visitor.leave_node(kind);
|
visitor.leave_node(kind);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1790,6 +1790,7 @@ impl<'a, const MINIFY: bool> GenExpr<MINIFY> for SimpleAssignmentTarget<'a> {
|
||||||
Self::TSSatisfiesExpression(e) => e.expression.gen_expr(p, precedence, ctx),
|
Self::TSSatisfiesExpression(e) => e.expression.gen_expr(p, precedence, ctx),
|
||||||
Self::TSNonNullExpression(e) => e.expression.gen_expr(p, precedence, ctx),
|
Self::TSNonNullExpression(e) => e.expression.gen_expr(p, precedence, ctx),
|
||||||
Self::TSTypeAssertion(e) => e.gen_expr(p, precedence, ctx),
|
Self::TSTypeAssertion(e) => e.gen_expr(p, precedence, ctx),
|
||||||
|
Self::TSInstantiationExpression(e) => e.expression.gen_expr(p, precedence, ctx),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -127,6 +127,9 @@ fn assignment_target_eq_expr<'a>(
|
||||||
SimpleAssignmentTarget::TSTypeAssertion(ts_expr) => {
|
SimpleAssignmentTarget::TSTypeAssertion(ts_expr) => {
|
||||||
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
||||||
}
|
}
|
||||||
|
SimpleAssignmentTarget::TSInstantiationExpression(ts_expr) => {
|
||||||
|
is_same_reference(&ts_expr.expression, right_expr, ctx)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -248,6 +248,13 @@ impl<'a> ParserImpl<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn re_lex_ts_r_angle(&mut self) {
|
||||||
|
let kind = self.cur_kind();
|
||||||
|
if matches!(kind, Kind::ShiftRight | Kind::ShiftRight3) {
|
||||||
|
self.token = self.lexer.re_lex_as_typescript_r_angle(kind);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn checkpoint(&self) -> ParserCheckpoint<'a> {
|
pub(crate) fn checkpoint(&self) -> ParserCheckpoint<'a> {
|
||||||
ParserCheckpoint {
|
ParserCheckpoint {
|
||||||
lexer: self.lexer.checkpoint(),
|
lexer: self.lexer.checkpoint(),
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,9 @@ impl<'a> CoverGrammar<'a, Expression<'a>> for SimpleAssignmentTarget<'a> {
|
||||||
Ok(SimpleAssignmentTarget::TSNonNullExpression(expr))
|
Ok(SimpleAssignmentTarget::TSNonNullExpression(expr))
|
||||||
}
|
}
|
||||||
Expression::TSTypeAssertion(expr) => Ok(SimpleAssignmentTarget::TSTypeAssertion(expr)),
|
Expression::TSTypeAssertion(expr) => Ok(SimpleAssignmentTarget::TSTypeAssertion(expr)),
|
||||||
|
Expression::TSInstantiationExpression(expr) => {
|
||||||
|
Ok(SimpleAssignmentTarget::TSInstantiationExpression(expr))
|
||||||
|
}
|
||||||
expr => Err(diagnostics::InvalidAssignment(expr.span()).into()),
|
expr => Err(diagnostics::InvalidAssignment(expr.span()).into()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -644,7 +644,7 @@ impl Kind {
|
||||||
pub fn can_follow_type_arguments_in_expr(self) -> bool {
|
pub fn can_follow_type_arguments_in_expr(self) -> bool {
|
||||||
matches!(self, Self::LParen | Self::NoSubstitutionTemplate | Self::TemplateHead
|
matches!(self, Self::LParen | Self::NoSubstitutionTemplate | Self::TemplateHead
|
||||||
| Self::Comma | Self::Dot | Self::QuestionDot | Self::RParen | Self::RBrack
|
| Self::Comma | Self::Dot | Self::QuestionDot | Self::RParen | Self::RBrack
|
||||||
| Self::Colon | Self::Semicolon | Self::Question | Self::Eq3 | Self::Eq2
|
| Self::Colon | Self::Semicolon | Self::Question | Self::Eq3 | Self::Eq2 | Self::Eq
|
||||||
| Self::Neq | Self::Neq2 | Self::Amp2 | Self::Pipe2 | Self::Question2
|
| Self::Neq | Self::Neq2 | Self::Amp2 | Self::Pipe2 | Self::Question2
|
||||||
| Self::Caret | Self::Amp | Self::Pipe | Self::RCurly | Self::Eof)
|
| Self::Caret | Self::Amp | Self::Pipe | Self::RCurly | Self::Eof)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,4 +14,18 @@ impl<'a> Lexer<'a> {
|
||||||
self.lookahead.clear();
|
self.lookahead.clear();
|
||||||
self.finish_next(kind)
|
self.finish_next(kind)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Re-tokenize '>>' and '>>>' to '>'
|
||||||
|
pub(crate) fn re_lex_as_typescript_r_angle(&mut self, kind: Kind) -> Token {
|
||||||
|
let offset = match kind {
|
||||||
|
Kind::ShiftRight => 2,
|
||||||
|
Kind::ShiftRight3 => 3,
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
self.token.start = self.offset() - offset;
|
||||||
|
self.source.back(offset as usize - 1);
|
||||||
|
let kind = Kind::RAngle;
|
||||||
|
self.lookahead.clear();
|
||||||
|
self.finish_next(kind)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -154,11 +154,21 @@ impl<'a> NormalList<'a> for TSInterfaceOrObjectBodyList<'a> {
|
||||||
|
|
||||||
pub struct TSTypeArgumentList<'a> {
|
pub struct TSTypeArgumentList<'a> {
|
||||||
pub params: Vec<'a, TSType<'a>>,
|
pub params: Vec<'a, TSType<'a>>,
|
||||||
|
in_expression: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> TSTypeArgumentList<'a> {
|
||||||
|
pub fn parse(p: &mut ParserImpl<'a>, in_expression: bool) -> Result<Self> {
|
||||||
|
let mut list = Self::new(p);
|
||||||
|
list.in_expression = in_expression;
|
||||||
|
list.parse_list(p)?;
|
||||||
|
Ok(list)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> SeparatedList<'a> for TSTypeArgumentList<'a> {
|
impl<'a> SeparatedList<'a> for TSTypeArgumentList<'a> {
|
||||||
fn new(p: &ParserImpl<'a>) -> Self {
|
fn new(p: &ParserImpl<'a>) -> Self {
|
||||||
Self { params: p.ast.new_vec() }
|
Self { params: p.ast.new_vec(), in_expression: false }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open(&self) -> Kind {
|
fn open(&self) -> Kind {
|
||||||
|
|
@ -174,6 +184,36 @@ impl<'a> SeparatedList<'a> for TSTypeArgumentList<'a> {
|
||||||
self.params.push(ty);
|
self.params.push(ty);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn parse_list(&mut self, p: &mut ParserImpl<'a>) -> Result<()> {
|
||||||
|
p.expect(self.open())?;
|
||||||
|
|
||||||
|
let mut first = true;
|
||||||
|
|
||||||
|
while !p.at(self.close()) && !p.at(Kind::Eof) {
|
||||||
|
if first {
|
||||||
|
first = false;
|
||||||
|
} else {
|
||||||
|
p.expect(self.separator())?;
|
||||||
|
if p.at(self.close()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.parse_element(p)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.in_expression {
|
||||||
|
// `a < b> = c`` is valid but `a < b >= c` is BinaryExpression
|
||||||
|
let kind = p.re_lex_right_angle();
|
||||||
|
if matches!(kind, Kind::GtEq) {
|
||||||
|
return Err(p.unexpected());
|
||||||
|
}
|
||||||
|
p.re_lex_ts_r_angle();
|
||||||
|
}
|
||||||
|
p.expect(self.close())?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct TSImportAttributeList<'a> {
|
pub struct TSImportAttributeList<'a> {
|
||||||
|
|
|
||||||
|
|
@ -514,7 +514,7 @@ impl<'a> ParserImpl<'a> {
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
let span = self.start_span();
|
let span = self.start_span();
|
||||||
let params = TSTypeArgumentList::parse(self)?.params;
|
let params = TSTypeArgumentList::parse(self, false)?.params;
|
||||||
Ok(Some(self.ast.ts_type_arguments(self.end_span(span), params)))
|
Ok(Some(self.ast.ts_type_arguments(self.end_span(span), params)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -529,7 +529,7 @@ impl<'a> ParserImpl<'a> {
|
||||||
self.try_parse(|p| {
|
self.try_parse(|p| {
|
||||||
p.re_lex_ts_l_angle();
|
p.re_lex_ts_l_angle();
|
||||||
|
|
||||||
let params = TSTypeArgumentList::parse(p)?.params;
|
let params = TSTypeArgumentList::parse(p, true)?.params;
|
||||||
let token = p.cur_token();
|
let token = p.cur_token();
|
||||||
if token.is_on_new_line || token.kind.can_follow_type_arguments_in_expr() {
|
if token.is_on_new_line || token.kind.can_follow_type_arguments_in_expr() {
|
||||||
Ok(params)
|
Ok(params)
|
||||||
|
|
|
||||||
|
|
@ -1809,6 +1809,7 @@ impl<'a> Format<'a> for SimpleAssignmentTarget<'a> {
|
||||||
Self::TSSatisfiesExpression(expr) => expr.expression.format(p),
|
Self::TSSatisfiesExpression(expr) => expr.expression.format(p),
|
||||||
Self::TSNonNullExpression(expr) => expr.expression.format(p),
|
Self::TSNonNullExpression(expr) => expr.expression.format(p),
|
||||||
Self::TSTypeAssertion(expr) => expr.expression.format(p),
|
Self::TSTypeAssertion(expr) => expr.expression.format(p),
|
||||||
|
Self::TSInstantiationExpression(expr) => expr.expression.format(p),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -590,6 +590,9 @@ impl<'a> Prettier<'a> {
|
||||||
AssignmentTarget::TSTypeAssertion(e) => {
|
AssignmentTarget::TSTypeAssertion(e) => {
|
||||||
Self::starts_with_no_lookahead_token(&e.expression, span)
|
Self::starts_with_no_lookahead_token(&e.expression, span)
|
||||||
}
|
}
|
||||||
|
AssignmentTarget::TSInstantiationExpression(e) => {
|
||||||
|
Self::starts_with_no_lookahead_token(&e.expression, span)
|
||||||
|
}
|
||||||
AssignmentTarget::ArrayAssignmentTarget(_)
|
AssignmentTarget::ArrayAssignmentTarget(_)
|
||||||
| AssignmentTarget::ObjectAssignmentTarget(_) => false,
|
| AssignmentTarget::ObjectAssignmentTarget(_) => false,
|
||||||
},
|
},
|
||||||
|
|
@ -636,6 +639,9 @@ impl<'a> Prettier<'a> {
|
||||||
SimpleAssignmentTarget::TSTypeAssertion(e) => {
|
SimpleAssignmentTarget::TSTypeAssertion(e) => {
|
||||||
Self::starts_with_no_lookahead_token(&e.expression, span)
|
Self::starts_with_no_lookahead_token(&e.expression, span)
|
||||||
}
|
}
|
||||||
|
SimpleAssignmentTarget::TSInstantiationExpression(e) => {
|
||||||
|
Self::starts_with_no_lookahead_token(&e.expression, span)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Expression::SequenceExpression(e) => e
|
Expression::SequenceExpression(e) => e
|
||||||
|
|
|
||||||
|
|
@ -915,6 +915,7 @@ pub(crate) unsafe fn walk_assignment_target<'a, Tr: Traverse<'a>>(
|
||||||
| AssignmentTarget::TSSatisfiesExpression(_)
|
| AssignmentTarget::TSSatisfiesExpression(_)
|
||||||
| AssignmentTarget::TSNonNullExpression(_)
|
| AssignmentTarget::TSNonNullExpression(_)
|
||||||
| AssignmentTarget::TSTypeAssertion(_)
|
| AssignmentTarget::TSTypeAssertion(_)
|
||||||
|
| AssignmentTarget::TSInstantiationExpression(_)
|
||||||
| AssignmentTarget::ComputedMemberExpression(_)
|
| AssignmentTarget::ComputedMemberExpression(_)
|
||||||
| AssignmentTarget::StaticMemberExpression(_)
|
| AssignmentTarget::StaticMemberExpression(_)
|
||||||
| AssignmentTarget::PrivateFieldExpression(_) => {
|
| AssignmentTarget::PrivateFieldExpression(_) => {
|
||||||
|
|
@ -950,6 +951,9 @@ pub(crate) unsafe fn walk_simple_assignment_target<'a, Tr: Traverse<'a>>(
|
||||||
SimpleAssignmentTarget::TSTypeAssertion(node) => {
|
SimpleAssignmentTarget::TSTypeAssertion(node) => {
|
||||||
walk_ts_type_assertion(traverser, (&mut **node) as *mut _, ctx)
|
walk_ts_type_assertion(traverser, (&mut **node) as *mut _, ctx)
|
||||||
}
|
}
|
||||||
|
SimpleAssignmentTarget::TSInstantiationExpression(node) => {
|
||||||
|
walk_ts_instantiation_expression(traverser, (&mut **node) as *mut _, ctx)
|
||||||
|
}
|
||||||
SimpleAssignmentTarget::ComputedMemberExpression(_)
|
SimpleAssignmentTarget::ComputedMemberExpression(_)
|
||||||
| SimpleAssignmentTarget::StaticMemberExpression(_)
|
| SimpleAssignmentTarget::StaticMemberExpression(_)
|
||||||
| SimpleAssignmentTarget::PrivateFieldExpression(_) => {
|
| SimpleAssignmentTarget::PrivateFieldExpression(_) => {
|
||||||
|
|
@ -1062,6 +1066,7 @@ pub(crate) unsafe fn walk_assignment_target_maybe_default<'a, Tr: Traverse<'a>>(
|
||||||
| AssignmentTargetMaybeDefault::TSSatisfiesExpression(_)
|
| AssignmentTargetMaybeDefault::TSSatisfiesExpression(_)
|
||||||
| AssignmentTargetMaybeDefault::TSNonNullExpression(_)
|
| AssignmentTargetMaybeDefault::TSNonNullExpression(_)
|
||||||
| AssignmentTargetMaybeDefault::TSTypeAssertion(_)
|
| AssignmentTargetMaybeDefault::TSTypeAssertion(_)
|
||||||
|
| AssignmentTargetMaybeDefault::TSInstantiationExpression(_)
|
||||||
| AssignmentTargetMaybeDefault::ArrayAssignmentTarget(_)
|
| AssignmentTargetMaybeDefault::ArrayAssignmentTarget(_)
|
||||||
| AssignmentTargetMaybeDefault::ObjectAssignmentTarget(_)
|
| AssignmentTargetMaybeDefault::ObjectAssignmentTarget(_)
|
||||||
| AssignmentTargetMaybeDefault::ComputedMemberExpression(_)
|
| AssignmentTargetMaybeDefault::ComputedMemberExpression(_)
|
||||||
|
|
@ -1757,6 +1762,7 @@ pub(crate) unsafe fn walk_for_statement_left<'a, Tr: Traverse<'a>>(
|
||||||
| ForStatementLeft::TSSatisfiesExpression(_)
|
| ForStatementLeft::TSSatisfiesExpression(_)
|
||||||
| ForStatementLeft::TSNonNullExpression(_)
|
| ForStatementLeft::TSNonNullExpression(_)
|
||||||
| ForStatementLeft::TSTypeAssertion(_)
|
| ForStatementLeft::TSTypeAssertion(_)
|
||||||
|
| ForStatementLeft::TSInstantiationExpression(_)
|
||||||
| ForStatementLeft::ArrayAssignmentTarget(_)
|
| ForStatementLeft::ArrayAssignmentTarget(_)
|
||||||
| ForStatementLeft::ObjectAssignmentTarget(_)
|
| ForStatementLeft::ObjectAssignmentTarget(_)
|
||||||
| ForStatementLeft::ComputedMemberExpression(_)
|
| ForStatementLeft::ComputedMemberExpression(_)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
parser_babel Summary:
|
parser_babel Summary:
|
||||||
AST Parsed : 2091/2099 (99.62%)
|
AST Parsed : 2093/2099 (99.71%)
|
||||||
Positive Passed: 2084/2099 (99.29%)
|
Positive Passed: 2086/2099 (99.38%)
|
||||||
Negative Passed: 1363/1501 (90.81%)
|
Negative Passed: 1363/1501 (90.81%)
|
||||||
Expect Syntax Error: "annex-b/disabled/1.1-html-comments-close/input.js"
|
Expect Syntax Error: "annex-b/disabled/1.1-html-comments-close/input.js"
|
||||||
Expect Syntax Error: "annex-b/disabled/3.1-sloppy-labeled-functions/input.js"
|
Expect Syntax Error: "annex-b/disabled/3.1-sloppy-labeled-functions/input.js"
|
||||||
|
|
@ -163,24 +163,6 @@ Expect to Parse: "typescript/arrow-function/generic-tsx-babel-7/input.ts"
|
||||||
╭─[typescript/arrow-function/generic-tsx-babel-7/input.ts:3:1]
|
╭─[typescript/arrow-function/generic-tsx-babel-7/input.ts:3:1]
|
||||||
2 │ <T>(a: T): T => a;
|
2 │ <T>(a: T): T => a;
|
||||||
╰────
|
╰────
|
||||||
Expect to Parse: "typescript/assign/TSTypeParameterInstantiation/input.ts"
|
|
||||||
|
|
||||||
× Unexpected token
|
|
||||||
╭─[typescript/assign/TSTypeParameterInstantiation/input.ts:15:31]
|
|
||||||
14 │
|
|
||||||
15 │ cls.myFunc<ConcreteClass> = (instance) => {
|
|
||||||
· ─
|
|
||||||
16 │ console.log(instance.myField);
|
|
||||||
╰────
|
|
||||||
Expect to Parse: "typescript/assign/TSTypeParameterInstantiation-babel-7/input.ts"
|
|
||||||
|
|
||||||
× Unexpected token
|
|
||||||
╭─[typescript/assign/TSTypeParameterInstantiation-babel-7/input.ts:15:31]
|
|
||||||
14 │
|
|
||||||
15 │ cls.myFunc<ConcreteClass> = (instance) => {
|
|
||||||
· ─
|
|
||||||
16 │ console.log(instance.myField);
|
|
||||||
╰────
|
|
||||||
Expect to Parse: "typescript/class/constructor-with-modifier-names/input.ts"
|
Expect to Parse: "typescript/class/constructor-with-modifier-names/input.ts"
|
||||||
|
|
||||||
× Multiple constructor implementations are not allowed.
|
× Multiple constructor implementations are not allowed.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
Passed: 295/362
|
Passed: 296/362
|
||||||
|
|
||||||
# All Passed:
|
# All Passed:
|
||||||
* babel-plugin-transform-react-display-name
|
* babel-plugin-transform-react-display-name
|
||||||
|
|
@ -23,7 +23,7 @@ Passed: 295/362
|
||||||
* opts/optimizeConstEnums/input.ts
|
* opts/optimizeConstEnums/input.ts
|
||||||
* opts/rewriteImportExtensions/input.ts
|
* opts/rewriteImportExtensions/input.ts
|
||||||
|
|
||||||
# babel-plugin-transform-typescript (118/156)
|
# babel-plugin-transform-typescript (119/156)
|
||||||
* class/accessor-allowDeclareFields-false/input.ts
|
* class/accessor-allowDeclareFields-false/input.ts
|
||||||
* class/accessor-allowDeclareFields-true/input.ts
|
* class/accessor-allowDeclareFields-true/input.ts
|
||||||
* enum/mix-references/input.ts
|
* enum/mix-references/input.ts
|
||||||
|
|
@ -33,7 +33,6 @@ Passed: 295/362
|
||||||
* exports/export-type-star-from/input.ts
|
* exports/export-type-star-from/input.ts
|
||||||
* imports/enum-value/input.ts
|
* imports/enum-value/input.ts
|
||||||
* imports/type-only-export-specifier-2/input.ts
|
* imports/type-only-export-specifier-2/input.ts
|
||||||
* lvalues/TSTypeParameterInstantiation/input.ts
|
|
||||||
* namespace/ambient-module-nested/input.ts
|
* namespace/ambient-module-nested/input.ts
|
||||||
* namespace/ambient-module-nested-exported/input.ts
|
* namespace/ambient-module-nested-exported/input.ts
|
||||||
* namespace/canonical/input.ts
|
* namespace/canonical/input.ts
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue