Skip to content

Commit

Permalink
feat(es/typescript): Support deferred modifier
Browse files Browse the repository at this point in the history
  • Loading branch information
magic-akari committed Jun 20, 2024
1 parent 810461e commit bd2509b
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 1 deletion.
1 change: 1 addition & 0 deletions crates/swc_ecma_ast/src/typescript.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ pub struct TsParamProp {
pub accessibility: Option<Accessibility>,
#[cfg_attr(feature = "serde-impl", serde(rename = "override"))]
pub is_override: bool,
pub deferred: bool,
pub readonly: bool,
pub param: TsParamPropParam,
}
Expand Down
5 changes: 5 additions & 0 deletions crates/swc_ecma_codegen/src/typescript.rs
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,11 @@ where
fn emit_ts_param_prop(&mut self, n: &TsParamProp) -> Result {
self.emit_leading_comments_of_span(n.span(), false)?;

if n.deferred {
keyword!("deferred");
space!();
}

self.emit_accessibility(n.accessibility)?;

for dec in &n.decorators {
Expand Down
4 changes: 3 additions & 1 deletion crates/swc_ecma_parser/src/parser/pat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ impl<I: Tokens> Parser<I> {
param_start: BytePos,
decorators: Vec<Decorator>,
) -> PResult<ParamOrTsParamProp> {
let deferred = self.parse_ts_modifier(&["deferred"], false)?.is_some();
let (accessibility, is_override, readonly) = if self.input.syntax().typescript() {
let accessibility = self.parse_access_modifier()?;
(
Expand All @@ -345,7 +346,7 @@ impl<I: Tokens> Parser<I> {
} else {
(None, false, false)
};
if accessibility.is_none() && !is_override && !readonly {
if accessibility.is_none() && !is_override && !readonly && !deferred {
let pat = self.parse_formal_param_pat()?;
Ok(ParamOrTsParamProp::Param(Param {
span: span!(self, param_start),
Expand All @@ -362,6 +363,7 @@ impl<I: Tokens> Parser<I> {
span: span!(self, param_start),
accessibility,
is_override,
deferred,
readonly,
decorators,
param,
Expand Down
1 change: 1 addition & 0 deletions crates/swc_ecma_visit/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1489,6 +1489,7 @@ define!({
pub decorators: Vec<Decorator>,
pub accessibility: Option<Accessibility>,
pub is_override: bool,
pub deferred: bool,
pub readonly: bool,
pub param: TsParamPropParam,
}
Expand Down

0 comments on commit bd2509b

Please sign in to comment.