Skip to content

Commit

Permalink
#98 Little refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
la10736 committed May 1, 2021
1 parent 939ebc5 commit b0befac
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
14 changes: 10 additions & 4 deletions src/lib.rs
Expand Up @@ -244,10 +244,10 @@ mod render;
mod resolver;
mod utils;

use syn::{parse_macro_input, visit_mut::VisitMut, ItemFn};
use syn::{parse_macro_input, ItemFn};

use crate::parse::{
fixture::{FixtureInfo, ReplacerFutureAttribute},
fixture::{FixtureInfo, ReplaceFutureAttribute},
rstest::RsTestInfo,
};
use parse::ExtendWithFunctionAttrs;
Expand Down Expand Up @@ -462,11 +462,14 @@ pub fn fixture(
let mut info: FixtureInfo = parse_macro_input!(args as FixtureInfo);
let mut fixture = parse_macro_input!(input as ItemFn);

ReplacerFutureAttribute::default().visit_item_fn_mut(&mut fixture);
let replace_result = ReplaceFutureAttribute::replace(&mut fixture);
let extend_result = info.extend_with_function_attrs(&mut fixture);

let mut errors = error::fixture(&fixture, &info);

if let Err(attrs_errors) = replace_result {
attrs_errors.to_tokens(&mut errors);
}
if let Err(attrs_errors) = extend_result {
attrs_errors.to_tokens(&mut errors);
}
Expand Down Expand Up @@ -1075,11 +1078,14 @@ pub fn rstest(
let mut test = parse_macro_input!(input as ItemFn);
let mut info = parse_macro_input!(args as RsTestInfo);

ReplacerFutureAttribute::default().visit_item_fn_mut(&mut test);
let replace_result = ReplaceFutureAttribute::replace(&mut test);
let extend_result = info.extend_with_function_attrs(&mut test);

let mut errors = error::rstest(&test, &info);

if let Err(attrs_errors) = replace_result {
attrs_errors.to_tokens(&mut errors);
}
if let Err(attrs_errors) = extend_result {
attrs_errors.to_tokens(&mut errors);
}
Expand Down
11 changes: 9 additions & 2 deletions src/parse/fixture.rs
Expand Up @@ -102,9 +102,16 @@ impl VisitMut for FixturesFunctionExtractor {
}

#[derive(Default)]
pub(crate) struct ReplacerFutureAttribute(pub(crate) Vec<syn::Error>);
pub(crate) struct ReplaceFutureAttribute(Vec<syn::Error>);

impl VisitMut for ReplacerFutureAttribute {
impl ReplaceFutureAttribute {
pub(crate) fn replace(item_fn: &mut ItemFn) -> Result<(), ErrorsVec> {
Self::default().visit_item_fn_mut(item_fn);
Ok(())
}
}

impl VisitMut for ReplaceFutureAttribute {
fn visit_fn_arg_mut(&mut self, node: &mut FnArg) {
match node {
FnArg::Typed(t) => {
Expand Down

0 comments on commit b0befac

Please sign in to comment.