Skip to content

Commit

Permalink
Update simple use sites
Browse files Browse the repository at this point in the history
  • Loading branch information
osa1 committed Jan 26, 2025
1 parent 97d4d15 commit 838e8d5
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 59 deletions.
18 changes: 8 additions & 10 deletions src/ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,10 @@ pub struct FunDecl {

impl FunDecl {
pub fn num_params(&self) -> u32 {
self.sig.params.len() as u32 + if self.sig.self_ { 1 } else { 0 }
(match self.sig.self_ {
SelfParam::No => 0,
SelfParam::Implicit | SelfParam::Explicit(_) => 1,
}) + (self.sig.params.len() as u32)
}
}

Expand Down Expand Up @@ -693,15 +696,10 @@ impl Type {
},
args: args
.iter()
.map(
|L {
loc,
node: (name, ty_),
}| L {
loc: loc.clone(),
node: (name.clone(), ty_.map_as_ref(|ty__| ty__.subst_ids(substs))),
},
)
.map(|L { loc, node: ty_ }| L {
loc: loc.clone(),
node: ty_.subst_ids(substs),
})
.collect(),
}),

Expand Down
18 changes: 4 additions & 14 deletions src/closure_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,12 @@ pub fn collect_closures(pgm: &mut ast::Module) -> Vec<Closure> {
node:
ast::TraitDecl {
name: _,
ty: _,
params: _,
items,
},
}) => {
for item in items {
match &mut item.node {
ast::TraitDeclItem::AssocTy(_) => {}
ast::TraitDeclItem::Fun(fun_decl) => {
visit_fun_decl(fun_decl, &mut closures, &top_vars)
}
}
visit_fun_decl(&mut item.node, &mut closures, &top_vars)
}
}

Expand All @@ -42,17 +37,12 @@ pub fn collect_closures(pgm: &mut ast::Module) -> Vec<Closure> {
ast::ImplDecl {
context: _,
trait_: _,
ty: _,
tys: _,
items,
},
}) => {
for item in items.iter_mut() {
match &mut item.node {
ast::ImplDeclItem::AssocTy(_) => {}
ast::ImplDeclItem::Fun(fun_decl) => {
visit_fun_decl(fun_decl, &mut closures, &top_vars)
}
}
visit_fun_decl(&mut item.node, &mut closures, &top_vars)
}
}

Expand Down
43 changes: 8 additions & 35 deletions src/record_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,22 +119,8 @@ fn visit_trait_decl(
records: &mut Set<RecordShape>,
variants: &mut Set<VariantShape>,
) {
for ty in &trait_decl.ty.bounds {
visit_ty(&ty.node, records, variants);
}
for item in &trait_decl.items {
visit_trait_decl_item(&item.node, records, variants);
}
}

fn visit_trait_decl_item(
item: &ast::TraitDeclItem,
records: &mut Set<RecordShape>,
variants: &mut Set<VariantShape>,
) {
match item {
ast::TraitDeclItem::AssocTy(_) => {}
ast::TraitDeclItem::Fun(fun_decl) => visit_fun_decl(fun_decl, records, variants),
visit_fun_decl(&item.node, records, variants);
}
}

Expand All @@ -143,27 +129,14 @@ fn visit_impl_decl(
records: &mut Set<RecordShape>,
variants: &mut Set<VariantShape>,
) {
for context_ty in &impl_decl.context {
for bound in &context_ty.bounds {
visit_ty(&bound.node, records, variants);
}
for ty in &impl_decl.context {
visit_ty(&ty.node, records, variants);
}

for item in &impl_decl.items {
visit_impl_decl_item(&item.node, records, variants);
for ty in &impl_decl.tys {
visit_ty(&ty.node, records, variants);
}
}

fn visit_impl_decl_item(
item: &ast::ImplDeclItem,
records: &mut Set<RecordShape>,
variants: &mut Set<VariantShape>,
) {
match item {
ast::ImplDeclItem::AssocTy(ast::AssocTyDecl { name: _, ty }) => {
visit_ty(&ty.node, records, variants)
}
ast::ImplDeclItem::Fun(fun_decl) => visit_fun_decl(fun_decl, records, variants),
for item in &impl_decl.items {
visit_fun_decl(&item.node, records, variants);
}
}

Expand Down Expand Up @@ -203,7 +176,7 @@ fn visit_ty(ty: &ast::Type, records: &mut Set<RecordShape>, variants: &mut Set<V
match ty {
ast::Type::Named(ast::NamedType { name: _, args }) => args
.iter()
.for_each(|arg| visit_ty(&arg.node.1.node, records, variants)),
.for_each(|arg| visit_ty(&arg.node, records, variants)),

ast::Type::Var(_) => {}

Expand Down

0 comments on commit 838e8d5

Please sign in to comment.