Skip to content

Commit 183a5fd

Browse files
alanzfacebook-github-bot
authored andcommitted
BE: make FoldCtx::new() constructor
Summary: As title. This simplifies the code. Reviewed By: robertoaloi Differential Revision: D51660714 fbshipit-source-id: eb5eb0c1da5ef5c5ec9eebbb42fe76d8384b8485
1 parent e2401cc commit 183a5fd

File tree

1 file changed

+27
-53
lines changed

1 file changed

+27
-53
lines changed

crates/hir/src/fold.rs

+27-53
Original file line numberDiff line numberDiff line change
@@ -362,22 +362,30 @@ pub enum FoldBody<'a> {
362362
}
363363

364364
impl<'a, T> FoldCtx<'a, T> {
365-
pub fn fold_expr(
365+
fn new(
366366
strategy: Strategy,
367-
body: &'a Body,
367+
body: &'a FoldBody<'a>,
368368
form_id: FormIdx,
369-
expr_id: ExprId,
370-
initial: T,
371369
callback: AnyCallBack<'a, T>,
372-
) -> T {
370+
) -> FoldCtx<'a, T> {
373371
FoldCtx {
374372
form_id,
375-
body: &fold_body(strategy, body),
373+
body,
376374
strategy,
377375
macro_stack: Vec::default(),
378376
callback,
379377
}
380-
.do_fold_expr(expr_id, initial)
378+
}
379+
pub fn fold_expr(
380+
strategy: Strategy,
381+
body: &'a Body,
382+
form_id: FormIdx,
383+
expr_id: ExprId,
384+
initial: T,
385+
callback: AnyCallBack<'a, T>,
386+
) -> T {
387+
FoldCtx::new(strategy, &fold_body(strategy, body), form_id, callback)
388+
.do_fold_expr(expr_id, initial)
381389
}
382390

383391
pub fn fold_pat(
@@ -388,14 +396,8 @@ impl<'a, T> FoldCtx<'a, T> {
388396
initial: T,
389397
callback: AnyCallBack<'a, T>,
390398
) -> T {
391-
FoldCtx {
392-
form_id,
393-
body: &fold_body(strategy, body),
394-
strategy,
395-
macro_stack: Vec::default(),
396-
callback,
397-
}
398-
.do_fold_pat(pat_id, initial)
399+
FoldCtx::new(strategy, &fold_body(strategy, body), form_id, callback)
400+
.do_fold_pat(pat_id, initial)
399401
}
400402

401403
fn in_macro(&self) -> Option<HirIdx> {
@@ -410,14 +412,8 @@ impl<'a, T> FoldCtx<'a, T> {
410412
initial: T,
411413
callback: AnyCallBack<'a, T>,
412414
) -> T {
413-
FoldCtx {
414-
form_id,
415-
body: &fold_body(strategy, body),
416-
strategy,
417-
macro_stack: Vec::default(),
418-
callback,
419-
}
420-
.do_fold_term(term_id, initial)
415+
FoldCtx::new(strategy, &fold_body(strategy, body), form_id, callback)
416+
.do_fold_term(term_id, initial)
421417
}
422418

423419
pub fn fold_type_expr(
@@ -428,14 +424,8 @@ impl<'a, T> FoldCtx<'a, T> {
428424
initial: T,
429425
callback: AnyCallBack<'a, T>,
430426
) -> T {
431-
FoldCtx {
432-
form_id,
433-
body: &fold_body(strategy, body),
434-
strategy,
435-
macro_stack: Vec::default(),
436-
callback,
437-
}
438-
.do_fold_type_expr(type_expr_id, initial)
427+
FoldCtx::new(strategy, &fold_body(strategy, body), form_id, callback)
428+
.do_fold_type_expr(type_expr_id, initial)
439429
}
440430

441431
pub fn fold_type_exprs(
@@ -446,14 +436,8 @@ impl<'a, T> FoldCtx<'a, T> {
446436
initial: T,
447437
callback: AnyCallBack<'a, T>,
448438
) -> T {
449-
FoldCtx {
450-
form_id,
451-
body: &fold_body(strategy, body),
452-
strategy,
453-
macro_stack: Vec::default(),
454-
callback,
455-
}
456-
.do_fold_type_exprs(type_expr_ids, initial)
439+
FoldCtx::new(strategy, &fold_body(strategy, body), form_id, callback)
440+
.do_fold_type_exprs(type_expr_ids, initial)
457441
}
458442

459443
pub fn fold_type_spec_sig(
@@ -464,13 +448,8 @@ impl<'a, T> FoldCtx<'a, T> {
464448
initial: T,
465449
callback: AnyCallBack<'a, T>,
466450
) -> T {
467-
let mut ctx = FoldCtx {
468-
form_id,
469-
body: &fold_body(strategy, body),
470-
strategy,
471-
macro_stack: Vec::default(),
472-
callback,
473-
};
451+
let fold_body = &fold_body(strategy, body);
452+
let mut ctx = FoldCtx::new(strategy, &fold_body, form_id, callback);
474453
let r = ctx.do_fold_type_exprs(&spec_sig.args, initial);
475454
ctx.macro_stack = Vec::default();
476455
let r = ctx.do_fold_type_expr(spec_sig.result, r);
@@ -490,13 +469,8 @@ impl<'a, T> FoldCtx<'a, T> {
490469
initial: T,
491470
callback: AnyCallBack<'a, T>,
492471
) -> T {
493-
let mut ctx = FoldCtx {
494-
form_id,
495-
body: &fold_body(strategy, body),
496-
strategy,
497-
macro_stack: Vec::default(),
498-
callback,
499-
};
472+
let fold_body = fold_body(strategy, body);
473+
let mut ctx = FoldCtx::new(strategy, &fold_body, form_id, callback);
500474
ctx.macro_stack = Vec::default();
501475
let r = if let Some(expr_id) = record_field_body.expr {
502476
ctx.do_fold_expr(expr_id, initial)

0 commit comments

Comments
 (0)