Skip to content

Commit

Permalink
Apply suggestions from rust-clippy
Browse files Browse the repository at this point in the history
  • Loading branch information
mischnic committed May 25, 2021
1 parent fac8a46 commit cd02eed
Show file tree
Hide file tree
Showing 10 changed files with 664 additions and 763 deletions.
2 changes: 1 addition & 1 deletion packages/transformers/js/src/JSTransformer.js
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ export default (new Transformer({
loc: convertLoc(dep.loc),
});
}
} else if (dep.kind === 'URL') {
} else if (dep.kind === 'Url') {
asset.addURLDependency(dep.specifier, {
loc: convertLoc(dep.loc),
});
Expand Down
2 changes: 1 addition & 1 deletion packages/transformers/js/src/decl_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pub fn collect_decls(module: &ast::Module) -> HashSet<(JsWord, SyntaxContext)> {
in_var: false,
};
module.visit_with(&ast::Invalid { span: DUMMY_SP } as _, &mut c);
return c.decls;
c.decls
}

struct DeclCollector {
Expand Down
200 changes: 91 additions & 109 deletions packages/transformers/js/src/dependency_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pub enum DependencyKind {
WebWorker,
ServiceWorker,
ImportScripts,
URL,
Url,
File,
}

Expand Down Expand Up @@ -104,7 +104,7 @@ impl<'a> Fold for DependencyCollector<'a> {
false,
);

return node;
node
}

fn fold_named_export(&mut self, node: ast::NamedExport) -> ast::NamedExport {
Expand All @@ -122,7 +122,7 @@ impl<'a> Fold for DependencyCollector<'a> {
);
}

return node;
node
}

fn fold_export_all(&mut self, node: ast::ExportAll) -> ast::ExportAll {
Expand All @@ -134,7 +134,7 @@ impl<'a> Fold for DependencyCollector<'a> {
false,
);

return node;
node
}

fn fold_try_stmt(&mut self, node: ast::TryStmt) -> ast::TryStmt {
Expand All @@ -143,15 +143,8 @@ impl<'a> Fold for DependencyCollector<'a> {
let block = node.block.fold_with(self);
self.in_try = false;

let handler = match node.handler {
Some(handler) => Some(handler.fold_with(self)),
None => None,
};

let finalizer = match node.finalizer {
Some(finalizer) => Some(finalizer.fold_with(self)),
None => None,
};
let handler = node.handler.map(|handler| handler.fold_with(self));
let finalizer = node.finalizer.map(|finalizer| finalizer.fold_with(self));

ast::TryStmt {
span: node.span,
Expand Down Expand Up @@ -187,15 +180,15 @@ impl<'a> Fold for DependencyCollector<'a> {
}
"importScripts" => DependencyKind::ImportScripts,
"__parcel__require__" => {
let mut call = node.clone();
let mut call = node;
call.callee = ast::ExprOrSuper::Expr(Box::new(ast::Expr::Ident(ast::Ident::new(
"require".into(),
DUMMY_SP.apply_mark(self.ignore_mark),
))));
return call;
}
"__parcel__import__" => {
let mut call = node.clone();
let mut call = node;
call.callee = ast::ExprOrSuper::Expr(Box::new(ast::Expr::Ident(ast::Ident::new(
"import".into(),
DUMMY_SP.apply_mark(self.ignore_mark),
Expand Down Expand Up @@ -246,7 +239,7 @@ impl<'a> Fold for DependencyCollector<'a> {
// => Promise.resolve().then(() => require('foo')).then(res => __importStar(res))
if let Some(require_node) = self.require_node.clone() {
self.require_node = None;
return build_promise_chain(node.clone(), require_node);
return build_promise_chain(node, require_node);
}
}
_ => {}
Expand Down Expand Up @@ -304,23 +297,21 @@ impl<'a> Fold for DependencyCollector<'a> {
// importScripts() accepts multiple arguments. Add dependencies for each
// and replace with require calls for each of the specifiers (which will
// return the resolved URL at runtime).
let mut node = node.clone();
let mut node = node;
node.args = node
.args
.iter()
.map(|arg| {
if let Lit(lit) = &*arg.expr {
if let ast::Lit::Str(str_) = lit {
self.add_dependency(str_.value.clone(), str_.span, kind.clone(), None, false);

return ast::ExprOrSpread {
spread: None,
expr: Box::new(Call(create_require(str_.value.clone()))),
};
}
if let Lit(ast::Lit::Str(str_)) = &*arg.expr {
self.add_dependency(str_.value.clone(), str_.span, kind.clone(), None, false);

return ast::ExprOrSpread {
spread: None,
expr: Box::new(Call(create_require(str_.value.clone()))),
};
}

return arg.clone();
arg.clone()
})
.collect();

Expand All @@ -330,37 +321,35 @@ impl<'a> Fold for DependencyCollector<'a> {
if let Some(arg) = node.args.get(0) {
if kind == DependencyKind::ServiceWorker {
if let Some((specifier, span)) = match_import_meta_url(&*arg.expr, self.decls) {
self.add_dependency(specifier.clone(), span, kind.clone(), attributes, false);
self.add_dependency(specifier.clone(), span, kind, attributes, false);

let mut node = node.clone();
node.args[0].expr = Box::new(Call(create_require(specifier)));
return node;
}
}

if let Lit(lit) = &*arg.expr {
if let ast::Lit::Str(str_) = lit {
self.add_dependency(
str_.value.clone(),
str_.span,
kind.clone(),
attributes,
kind == DependencyKind::Require && self.in_try,
);
if let Lit(ast::Lit::Str(str_)) = &*arg.expr {
self.add_dependency(
str_.value.clone(),
str_.span,
kind.clone(),
attributes,
kind == DependencyKind::Require && self.in_try,
);

// If url dependency, replace import with require() of runtime module
if kind == DependencyKind::ServiceWorker {
let mut node = node.clone();
node.args[0].expr = Box::new(Call(create_require(str_.value.clone())));
return node;
}
// If url dependency, replace import with require() of runtime module
if kind == DependencyKind::ServiceWorker {
let mut node = node.clone();
node.args[0].expr = Box::new(Call(create_require(str_.value.clone())));
return node;
}
}
}

// Replace import() with require()
if kind == DependencyKind::DynamicImport {
let mut call = node.clone();
let mut call = node;
if !self.scope_hoist {
call.callee = ast::ExprOrSuper::Expr(Box::new(ast::Expr::Ident(ast::Ident::new(
"require".into(),
Expand Down Expand Up @@ -432,15 +421,11 @@ impl<'a> Fold for DependencyCollector<'a> {
}

if let Some(args) = &node.args {
if args.len() > 0 {
if !args.is_empty() {
let (specifier, span) = if let Some(s) = match_import_meta_url(&*args[0].expr, self.decls) {
s
} else if let Lit(lit) = &*args[0].expr {
if let ast::Lit::Str(str_) = lit {
(str_.value.clone(), str_.span)
} else {
return node;
}
} else if let Lit(ast::Lit::Str(str_)) = &*args[0].expr {
(str_.value.clone(), str_.span)
} else {
return node;
};
Expand All @@ -464,7 +449,7 @@ impl<'a> Fold for DependencyCollector<'a> {
}
}

return node.fold_children_with(self);
node.fold_children_with(self)
}

fn fold_member_expr(&mut self, mut node: ast::MemberExpr) -> ast::MemberExpr {
Expand All @@ -480,7 +465,7 @@ impl<'a> Fold for DependencyCollector<'a> {

fn fold_expr(&mut self, node: ast::Expr) -> ast::Expr {
if let Some((specifier, span)) = match_import_meta_url(&node, self.decls) {
self.add_dependency(specifier.clone(), span, DependencyKind::URL, None, false);
self.add_dependency(specifier.clone(), span, DependencyKind::Url, None, false);

return ast::Expr::Call(create_require(specifier));
}
Expand Down Expand Up @@ -586,7 +571,7 @@ fn build_promise_chain(node: ast::CallExpr, require_node: ast::CallExpr) -> ast:
}
}

return node;
node
}

struct PromiseTransformer {
Expand All @@ -606,7 +591,7 @@ impl Fold for PromiseTransformer {
}
}

return swc_ecmascript::visit::fold_return_stmt(self, node);
swc_ecmascript::visit::fold_return_stmt(self, node)
}

fn fold_arrow_expr(&mut self, node: ast::ArrowExpr) -> ast::ArrowExpr {
Expand All @@ -620,7 +605,7 @@ impl Fold for PromiseTransformer {
}
}

return swc_ecmascript::visit::fold_arrow_expr(self, node);
swc_ecmascript::visit::fold_arrow_expr(self, node)
}

fn fold_expr(&mut self, node: ast::Expr) -> ast::Expr {
Expand All @@ -636,77 +621,74 @@ impl Fold for PromiseTransformer {
}
}

return node;
node
}
}

fn match_import_meta_url(
expr: &ast::Expr,
decls: &HashSet<(JsWord, SyntaxContext)>,
) -> Option<(JsWord, swc_common::Span)> {
match expr {
ast::Expr::New(new) => {
let is_url = match &*new.callee {
ast::Expr::Ident(id) => {
id.sym == js_word!("URL") && !decls.contains(&(id.sym.clone(), id.span.ctxt()))
}
_ => false,
};

if !is_url {
return None;
if let ast::Expr::New(new) = expr {
let is_url = match &*new.callee {
ast::Expr::Ident(id) => {
id.sym == js_word!("URL") && !decls.contains(&(id.sym.clone(), id.span.ctxt()))
}
_ => false,
};

if let Some(args) = &new.args {
let specifier = if let Some(arg) = args.get(0) {
match &*arg.expr {
ast::Expr::Lit(ast::Lit::Str(s)) => s,
_ => return None,
}
} else {
return None;
};
if !is_url {
return None;
}

if let Some(arg) = args.get(1) {
match &*arg.expr {
ast::Expr::Member(member) => {
match &member.obj {
ast::ExprOrSuper::Expr(expr) => match &**expr {
ast::Expr::MetaProp(ast::MetaPropExpr {
meta:
ast::Ident {
sym: js_word!("import"),
..
},
prop:
ast::Ident {
sym: js_word!("meta"),
..
},
}) => {}
_ => return None,
},
_ => return None,
}
if let Some(args) = &new.args {
let specifier = if let Some(arg) = args.get(0) {
match &*arg.expr {
ast::Expr::Lit(ast::Lit::Str(s)) => s,
_ => return None,
}
} else {
return None;
};

let is_url = match &*member.prop {
ast::Expr::Ident(id) => id.sym == js_word!("url") && !member.computed,
ast::Expr::Lit(ast::Lit::Str(str)) => str.value == js_word!("url"),
_ => false,
};
if let Some(arg) = args.get(1) {
match &*arg.expr {
ast::Expr::Member(member) => {
match &member.obj {
ast::ExprOrSuper::Expr(expr) => match &**expr {
ast::Expr::MetaProp(ast::MetaPropExpr {
meta:
ast::Ident {
sym: js_word!("import"),
..
},
prop:
ast::Ident {
sym: js_word!("meta"),
..
},
}) => {}
_ => return None,
},
_ => return None,
}

if !is_url {
return None;
}
let is_url = match &*member.prop {
ast::Expr::Ident(id) => id.sym == js_word!("url") && !member.computed,
ast::Expr::Lit(ast::Lit::Str(str)) => str.value == js_word!("url"),
_ => false,
};

return Some((specifier.value.clone(), specifier.span));
if !is_url {
return None;
}
_ => return None,

return Some((specifier.value.clone(), specifier.span));
}
_ => return None,
}
}
}
_ => {}
}

None
Expand Down
Loading

0 comments on commit cd02eed

Please sign in to comment.