pub(crate) struct RefinementResolver<'a, 'genv, 'tcx> {
param_defs: Vec<ParamDef>,
used_params: UnordSet<NodeId>,
implicit_params: UnordMap<NodeId, Vec<ParamDef>>,
resolver: &'a mut CrateResolver<'genv, 'tcx>,
errors: Errors<'genv>,
}Fields§
§param_defs: Vec<ParamDef>§used_params: UnordSet<NodeId>Parameters referenced in some expression. Used to skip unused
fhir::ParamKind::Colon
implicit_params: UnordMap<NodeId, Vec<ParamDef>>Implicit params to define when entering each binder scope.
resolver: &'a mut CrateResolver<'genv, 'tcx>§errors: Errors<'genv>Implementations§
Source§impl<'a, 'genv, 'tcx> RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> RefinementResolver<'a, 'genv, 'tcx>
pub(crate) fn run( resolver: &'a mut CrateResolver<'genv, 'tcx>, implicit_params: UnordMap<NodeId, Vec<ParamDef>>, f: impl FnOnce(&mut ScopedVisitorWrapper<Self>), ) -> Result<(), ErrorGuaranteed>
fn define_param(&mut self, def: ParamDef)
fn define_implicit_params(&mut self, node_id: NodeId)
fn define_explicit_params(&mut self, params: &[RefineParam])
fn resolve_path<S: Segment>( &mut self, segments: &[S], node_id: NodeId, span: Span, )
fn record_expr_res( &mut self, node_id: NodeId, res: PartialRes<NodeId>, ident: Ident, )
fn try_resolve_expr_with_ribs<S: Segment>( &mut self, segments: &[S], ) -> Result<PartialRes<NodeId>, ResolveError>
fn resolve_sort_path(&mut self, path: &SortPath)
fn finish(self) -> Result<(), ErrorGuaranteed>
Trait Implementations§
Source§impl<'genv, 'tcx> ScopedVisitor<'genv, 'tcx> for RefinementResolver<'_, 'genv, 'tcx>
impl<'genv, 'tcx> ScopedVisitor<'genv, 'tcx> for RefinementResolver<'_, 'genv, 'tcx>
fn resolver(&self) -> &CrateResolver<'genv, 'tcx>
fn enter_scope(&mut self, scope: &Scope<'_>)
fn exit_scope(&mut self, scope: &Scope<'_>)
fn on_path<S: Segment>(&mut self, segments: &[S], node_id: NodeId, span: Span)
fn on_sort_path(&mut self, path: &SortPath)
fn wrap(self) -> ScopedVisitorWrapper<Self>
fn on_implicit_param( &mut self, _ident: Ident, _kind: ParamKind, _node_id: NodeId, )
Auto Trait Implementations§
impl<'a, 'genv, 'tcx> !DynSend for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> !DynSync for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> !Freeze for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> !RefUnwindSafe for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> !Send for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> !Sync for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> !UnwindSafe for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> Unpin for RefinementResolver<'a, 'genv, 'tcx>
impl<'a, 'genv, 'tcx> UnsafeUnpin for RefinementResolver<'a, 'genv, 'tcx>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more