Inline two more methods
This commit is contained in:
parent
d376f032e6
commit
9d9ccec3fc
1 changed files with 14 additions and 24 deletions
|
@ -102,15 +102,15 @@ pub enum Action {
|
|||
}
|
||||
|
||||
#[derive(PartialEq)]
|
||||
pub struct Marker<T>(PhantomData<T>);
|
||||
struct Marker<T>(PhantomData<T>);
|
||||
|
||||
impl<T> Marker<T> {
|
||||
pub unsafe fn new() -> Self {
|
||||
unsafe fn new() -> Self {
|
||||
Marker(PhantomData)
|
||||
}
|
||||
}
|
||||
|
||||
pub enum YieldType<I, A> {
|
||||
enum YieldType<I, A> {
|
||||
Initial(I),
|
||||
Accessor(Marker<A>),
|
||||
}
|
||||
|
@ -174,16 +174,15 @@ impl BoxedResolver {
|
|||
r.unwrap()
|
||||
}
|
||||
|
||||
pub fn complete(mut self) -> ResolverOutputs {
|
||||
// Tell the generator we want it to complete, consuming it and yielding a result
|
||||
let result = self.generator.as_mut().resume(Action::Complete);
|
||||
if let GeneratorState::Complete(r) = result { r } else { panic!() }
|
||||
}
|
||||
|
||||
fn initial_yield(
|
||||
value: Result<ast::Crate>,
|
||||
) -> YieldType<Result<ast::Crate>, fn(&mut Resolver<'_>)> {
|
||||
YieldType::Initial(value)
|
||||
pub fn to_resolver_outputs(resolver: Rc<RefCell<BoxedResolver>>) -> ResolverOutputs {
|
||||
match Rc::try_unwrap(resolver) {
|
||||
Ok(resolver) => {
|
||||
// Tell the generator we want it to complete, consuming it and yielding a result
|
||||
let result = resolver.into_inner().generator.as_mut().resume(Action::Complete);
|
||||
if let GeneratorState::Complete(r) = result { r } else { panic!() }
|
||||
}
|
||||
Err(resolver) => resolver.borrow_mut().access(|resolver| resolver.clone_outputs()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -221,11 +220,11 @@ pub fn configure_and_expand(
|
|||
);
|
||||
let mut resolver = match res {
|
||||
Err(v) => {
|
||||
yield BoxedResolver::initial_yield(Err(v));
|
||||
yield YieldType::Initial(Err(v));
|
||||
panic!()
|
||||
}
|
||||
Ok((krate, resolver)) => {
|
||||
action = yield BoxedResolver::initial_yield(Ok(krate));
|
||||
action = yield YieldType::Initial(Ok(krate));
|
||||
resolver
|
||||
}
|
||||
};
|
||||
|
@ -253,15 +252,6 @@ pub fn configure_and_expand(
|
|||
result.map(|k| (k, resolver))
|
||||
}
|
||||
|
||||
impl BoxedResolver {
|
||||
pub fn to_resolver_outputs(resolver: Rc<RefCell<BoxedResolver>>) -> ResolverOutputs {
|
||||
match Rc::try_unwrap(resolver) {
|
||||
Ok(resolver) => resolver.into_inner().complete(),
|
||||
Err(resolver) => resolver.borrow_mut().access(|resolver| resolver.clone_outputs()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn register_plugins<'a>(
|
||||
sess: &'a Session,
|
||||
metadata_loader: &'a dyn MetadataLoader,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue