Skip to content

Commit 2fb0cca

Browse files
committed
free parse_ts_type_ann
1 parent 54569c5 commit 2fb0cca

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ pub fn parse_constructor_params<'a, P: Parser<'a>>(p: &mut P) -> PResult<Vec<Par
643643
let type_ann = if p.input().syntax().typescript() && p.input_mut().is(&P::Token::COLON)
644644
{
645645
let cur_pos = p.cur_pos();
646-
Some(parse_ts_type_ann(p, /* eat_colon */ true, cur_pos)?)
646+
Some(parse_ts_type_ann(p, /* eat_colon */ true, cur_pos).map(Box::new)?)
647647
} else {
648648
None
649649
};
@@ -708,7 +708,7 @@ pub fn parse_formal_params<'a, P: Parser<'a>>(p: &mut P) -> PResult<Vec<Param>>
708708
let type_ann = if p.input().syntax().typescript() && p.input_mut().is(&P::Token::COLON)
709709
{
710710
let cur_pos = p.cur_pos();
711-
let ty = parse_ts_type_ann(p, /* eat_colon */ true, cur_pos)?;
711+
let ty = parse_ts_type_ann(p, /* eat_colon */ true, cur_pos).map(Box::new)?;
712712
Some(ty)
713713
} else {
714714
None

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

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -533,11 +533,11 @@ pub fn parse_ts_type_ref<'a, P: Parser<'a>>(p: &mut P) -> PResult<TsTypeRef> {
533533
feature = "tracing-spans",
534534
tracing::instrument(level = "debug", skip_all)
535535
)]
536-
pub fn parse_ts_type_ann<'a, P: Parser<'a>>(
536+
pub(super) fn parse_ts_type_ann<'a, P: Parser<'a>>(
537537
p: &mut P,
538538
eat_colon: bool,
539539
start: BytePos,
540-
) -> PResult<Box<TsTypeAnn>> {
540+
) -> PResult<TsTypeAnn> {
541541
trace_cur!(p, parse_ts_type_ann);
542542

543543
debug_assert!(p.input().syntax().typescript());
@@ -551,10 +551,10 @@ pub fn parse_ts_type_ann<'a, P: Parser<'a>>(
551551

552552
let type_ann = parse_ts_type(p)?;
553553

554-
Ok(Box::new(TsTypeAnn {
554+
Ok(TsTypeAnn {
555555
span: p.span(start),
556556
type_ann,
557-
}))
557+
})
558558
})
559559
}
560560

@@ -570,10 +570,10 @@ pub fn parse_ts_this_type_predicate<'a, P: Parser<'a>>(
570570
let param_name = TsThisTypeOrIdent::TsThisType(lhs);
571571
let type_ann = if p.input_mut().eat(&P::Token::IS) {
572572
let cur_pos = p.input_mut().cur_pos();
573-
Some(parse_ts_type_ann(
573+
Some(Box::new(parse_ts_type_ann(
574574
p, // eat_colon
575575
false, cur_pos,
576-
)?)
576+
)?))
577577
} else {
578578
None
579579
};
@@ -823,17 +823,21 @@ pub fn parse_ts_type_or_type_predicate_ann<'a, P: Parser<'a>>(
823823
// eat_colon
824824
false,
825825
return_token_start,
826-
);
826+
)
827+
.map(Box::new);
827828
}
828829

829830
let type_pred_var = parse_ident_name(p)?;
830831
let type_ann = if has_type_pred_is {
831832
p.assert_and_bump(&P::Token::IS);
832833
let pos = p.input_mut().cur_pos();
833-
Some(parse_ts_type_ann(
834-
p, // eat_colon
835-
false, pos,
836-
)?)
834+
Some(
835+
parse_ts_type_ann(
836+
p, // eat_colon
837+
false, pos,
838+
)
839+
.map(Box::new)?,
840+
)
837841
} else {
838842
None
839843
};
@@ -921,17 +925,19 @@ fn try_parse_ts_type<'a, P: Parser<'a>>(p: &mut P) -> PResult<Option<Box<TsType>
921925
feature = "tracing-spans",
922926
tracing::instrument(level = "debug", skip_all)
923927
)]
924-
pub fn try_parse_ts_type_ann<'a, P: Parser<'a>>(p: &mut P) -> PResult<Option<Box<TsTypeAnn>>> {
928+
pub(super) fn try_parse_ts_type_ann<'a, P: Parser<'a>>(
929+
p: &mut P,
930+
) -> PResult<Option<Box<TsTypeAnn>>> {
925931
if !cfg!(feature = "typescript") {
926932
return Ok(None);
927933
}
928934

929935
if p.input_mut().is(&P::Token::COLON) {
930936
let pos = p.cur_pos();
931-
return parse_ts_type_ann(p, /* eat_colon */ true, pos).map(Some);
937+
parse_ts_type_ann(p, /* eat_colon */ true, pos).map(|t| Some(Box::new(t)))
938+
} else {
939+
Ok(None)
932940
}
933-
934-
Ok(None)
935941
}
936942

937943
/// `tsNextThenParseType`
@@ -1298,7 +1304,7 @@ pub fn try_parse_ts_index_signature<'a, P: Parser<'a>>(
12981304

12991305
let type_ann = parse_ts_type_ann(p, /* eat_colon */ false, type_ann_start)?;
13001306
id.span = p.span(ident_start);
1301-
id.type_ann = Some(type_ann);
1307+
id.type_ann = Some(Box::new(type_ann));
13021308

13031309
expect!(p, &P::Token::RBRACKET);
13041310

0 commit comments

Comments
 (0)