Skip to content

Commit 7e9b1f3

Browse files
committed
fix ecma parser
1 parent 1c687fa commit 7e9b1f3

File tree

11 files changed

+30
-1
lines changed

11 files changed

+30
-1
lines changed

crates/swc_ecma_lexer/src/common/parser/class_and_fn.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,8 @@ where
581581
kind,
582582
}
583583
.into())
584-
}
584+
},
585+
_ => unreachable!()
585586
}
586587
}
587588

@@ -817,6 +818,7 @@ fn make_property<'a, P: Parser<'a>>(
817818
}
818819
.into()
819820
}
821+
_ => unreachable!()
820822
})
821823
})
822824
}

crates/swc_ecma_lexer/src/common/parser/expr.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,7 @@ fn parse_subscript<'a, P: Parser<'a>>(
586586
)
587587
}
588588
Callee::Expr(expr) => expr,
589+
_ => unreachable!()
589590
};
590591
return Ok((
591592
TsNonNullExpr {
@@ -808,6 +809,7 @@ fn parse_subscript<'a, P: Parser<'a>>(
808809
expr
809810
}
810811
}
812+
_ => unreachable!()
811813
}),
812814
true,
813815
));
@@ -853,6 +855,7 @@ fn parse_subscript<'a, P: Parser<'a>>(
853855
.into(),
854856
true,
855857
)),
858+
_ => unreachable!()
856859
}
857860
} else {
858861
Ok((
@@ -944,6 +947,7 @@ fn parse_subscript<'a, P: Parser<'a>>(
944947
)
945948
}
946949
MemberProp::Computed(..) => unreachable!(),
950+
_ => unreachable!()
947951
}
948952
}
949953
}
@@ -972,6 +976,7 @@ fn parse_subscript<'a, P: Parser<'a>>(
972976
expr
973977
}
974978
}
979+
_ => unreachable!()
975980
}),
976981
true,
977982
));
@@ -1013,6 +1018,7 @@ fn parse_subscript<'a, P: Parser<'a>>(
10131018
Callee::Import(..) => {
10141019
syntax_error!(p, p.input().cur_span(), SyntaxError::InvalidImport);
10151020
}
1021+
_ => unreachable!()
10161022
}
10171023
}
10181024

@@ -1962,6 +1968,7 @@ fn parse_args_or_pats_inner<'a, P: Parser<'a>>(
19621968
// creating `Invalid`, we don't have to emit a new
19631969
// error.
19641970
}
1971+
_ => ()
19651972
}
19661973

19671974
if p.input_mut().eat(&P::Token::EQUAL) {

crates/swc_ecma_lexer/src/common/parser/expr_ext.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ pub trait ExprExt {
7474
Expr::TsConstAssertion(..) => false,
7575

7676
Expr::Invalid(..) => false,
77+
78+
_ => false,
7779
}
7880
}
7981
}

crates/swc_ecma_lexer/src/common/parser/jsx.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ fn parse_jsx_element_name<'a, P: Parser<'a>>(p: &mut P) -> PResult<JSXElementNam
101101
let mut node = match parse_jsx_namespaced_name(p)? {
102102
JSXAttrName::Ident(i) => JSXElementName::Ident(i.into()),
103103
JSXAttrName::JSXNamespacedName(i) => JSXElementName::JSXNamespacedName(i),
104+
_ => unreachable!()
104105
};
105106
while p.input_mut().eat(&P::Token::DOT) {
106107
let prop = parse_jsx_ident(p).map(IdentName::from)?;
@@ -149,6 +150,7 @@ pub fn jsx_expr_container_to_jsx_attr_value<'a, P: Parser<'a>>(
149150
syntax_error!(p, p.span(start), SyntaxError::EmptyJSXAttr)
150151
}
151152
JSXExpr::Expr(..) => Ok(node.into()),
153+
_ => unreachable!()
152154
}
153155
}
154156

crates/swc_ecma_lexer/src/common/parser/module_item.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,8 @@ fn parse_import_specifier<'a, P: Parser<'a>>(
331331
)
332332
}
333333
}
334+
335+
_ => unreachable!()
334336
}
335337
}
336338

@@ -685,6 +687,7 @@ fn parse_export<'a, P: Parser<'a>>(
685687
let export_name = match &namespace.name {
686688
ModuleExportName::Ident(i) => i.sym.clone(),
687689
ModuleExportName::Str(s) => s.value.clone(),
690+
_ => unreachable!()
688691
};
689692
p.emit_err(namespace.span, SyntaxError::ExportExpectFrom(export_name));
690693
}
@@ -697,6 +700,7 @@ fn parse_export<'a, P: Parser<'a>>(
697700
}
698701
_ => {}
699702
},
703+
_ => ()
700704
}
701705
}
702706

crates/swc_ecma_lexer/src/common/parser/pat.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,13 @@ fn pat_is_valid_argument_in_strict<'a>(p: &mut impl Parser<'a>, pat: &Pat) {
5151
p.emit_strict_mode_err(key.span, SyntaxError::EvalAndArgumentsInStrict)
5252
}
5353
}
54+
_ => ()
5455
}
5556
}
5657
}
5758
Pat::Assign(a) => pat_is_valid_argument_in_strict(p, &a.left),
5859
Pat::Invalid(_) | Pat::Expr(_) => (),
60+
_ => (),
5961
}
6062
}
6163

@@ -175,6 +177,7 @@ fn reparse_expr_as_pat_inner<'a>(
175177
Box::new(reparse_expr_as_pat(p, pat_ty, left.into())?)
176178
}
177179
AssignTarget::Pat(pat) => pat.into(),
180+
_ => unreachable!()
178181
},
179182
right,
180183
}
@@ -250,6 +253,8 @@ fn reparse_expr_as_pat_inner<'a>(
250253
type_ann: None,
251254
}))
252255
}
256+
257+
_ => unreachable!()
253258
}
254259
})
255260
.collect::<PResult<_>>()?,

crates/swc_ecma_lexer/src/common/parser/stmt.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,7 @@ fn parse_catch_param<'a, P: Parser<'a>>(p: &mut P) -> PResult<Option<Pat>> {
783783
Pat::Assign(..) => {}
784784
Pat::Invalid(_) => {}
785785
Pat::Expr(_) => {}
786+
_ => {}
786787
}
787788
}
788789
expect!(p, &P::Token::RPAREN);

crates/swc_ecma_lexer/src/common/parser/util.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ pub fn get_qualified_jsx_name(name: &JSXElementName) -> Atom {
5959
member.prop.sym
6060
)
6161
.into(),
62+
_ => unreachable!()
6263
}
6364
}
6465
match *name {
@@ -69,6 +70,7 @@ pub fn get_qualified_jsx_name(name: &JSXElementName) -> Atom {
6970
JSXElementName::JSXMemberExpr(JSXMemberExpr {
7071
ref obj, ref prop, ..
7172
}) => format!("{}.{}", get_qualified_obj_name(obj), prop.sym).into(),
73+
_ => unreachable!()
7274
}
7375
}
7476

@@ -83,6 +85,7 @@ pub fn make_decl_declare(mut decl: Decl) -> Decl {
8385
Decl::TsEnum(ref mut e) => e.declare = true,
8486
Decl::TsModule(ref mut m) => m.declare = true,
8587
Decl::Using(..) => unreachable!("Using is not a valid declaration for `declare` keyword"),
88+
_ => unreachable!()
8689
}
8790
decl
8891
}

crates/swc_ecma_lexer/src/parser/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ impl<I: Tokens<TokenAndSpan>> Parser<I> {
251251
above"
252252
),
253253
ModuleItem::Stmt(stmt) => stmt,
254+
_ => unreachable!()
254255
})
255256
.collect();
256257
Program::Script(Script {

crates/swc_ecma_parser/src/parser/jsx/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ impl<I: Tokens> Parser<I> {
8282
let mut node = match self.parse_jsx_tag_name()? {
8383
JSXAttrName::Ident(i) => JSXElementName::Ident(i.into()),
8484
JSXAttrName::JSXNamespacedName(i) => JSXElementName::JSXNamespacedName(i),
85+
_ => unreachable!()
8586
};
8687
while self.input_mut().eat(&Token::Dot) {
8788
self.input_mut().scan_jsx_identifier();

0 commit comments

Comments
 (0)