Struct rustc_middle::ty::TyCtxtFeed
source · pub struct TyCtxtFeed<'tcx, KEY: Copy> {
pub tcx: TyCtxt<'tcx>,
key: KEY,
}
Expand description
This struct should only be created by create_def
.
Fields§
§tcx: TyCtxt<'tcx>
§key: KEY
Implementations§
source§impl<'tcx> TyCtxtFeed<'tcx, LocalDefId>
impl<'tcx> TyCtxtFeed<'tcx, LocalDefId>
pub fn def_id(&self) -> LocalDefId
source§impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn resolutions(self, value: ProvidedValue<'tcx>)
pub fn resolutions(self, value: ProvidedValue<'tcx>)
[query description - consider adding a doc-comment!] getting the resolver outputs
source§impl<'tcx, K: IntoQueryParam<LocalDefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<LocalDefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn opt_local_def_id_to_hir_id(self, value: ProvidedValue<'tcx>)
pub fn opt_local_def_id_to_hir_id(self, value: ProvidedValue<'tcx>)
Gives access to the HIR ID for the given LocalDefId
owner key
if any.
Definitions that were generated with no HIR, would be fed to return None
.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn is_type_alias_impl_trait(self, value: ProvidedValue<'tcx>)
pub fn is_type_alias_impl_trait(self, value: ProvidedValue<'tcx>)
[query description - consider adding a doc-comment!] determine whether the opaque is a type-alias impl trait
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn generics_of(self, value: ProvidedValue<'tcx>)
pub fn generics_of(self, value: ProvidedValue<'tcx>)
Maps from the DefId
of an item (trait/struct/enum/fn) to its
associated generics.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn explicit_item_bounds(self, value: ProvidedValue<'tcx>)
pub fn explicit_item_bounds(self, value: ProvidedValue<'tcx>)
Returns the list of bounds that can be used for
SelectionCandidate::ProjectionCandidate(_)
and
ProjectionTyCandidate::TraitDef
.
Specifically this is the bounds written on the trait’s type
definition, or those after the impl
keyword
type X: Bound + 'lt
// ^^^^^^^^^^^
impl Debug + Display
// ^^^^^^^^^^^^^^^
key
is the DefId
of the associated type or opaque type.
Bounds from the parent (e.g. with nested impl trait) are not included.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn explicit_predicates_of(self, value: ProvidedValue<'tcx>)
pub fn explicit_predicates_of(self, value: ProvidedValue<'tcx>)
Returns the predicates written explicitly by the user.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn inferred_outlives_of(self, value: ProvidedValue<'tcx>)
pub fn inferred_outlives_of(self, value: ProvidedValue<'tcx>)
Returns the inferred outlives predicates (e.g., for struct Foo<'a, T> { x: &'a T }
, this would return T: 'a
).
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn associated_item(self, value: ProvidedValue<'tcx>)
pub fn associated_item(self, value: ProvidedValue<'tcx>)
Maps from a trait item to the trait item “descriptor”.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn opt_def_kind(self, value: ProvidedValue<'tcx>)
pub fn opt_def_kind(self, value: ProvidedValue<'tcx>)
[query description - consider adding a doc-comment!] looking up definition kind of tcx.def_path_str(def_id)
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn def_span(self, value: ProvidedValue<'tcx>)
pub fn def_span(self, value: ProvidedValue<'tcx>)
Gets the span for the definition.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn def_ident_span(self, value: ProvidedValue<'tcx>)
pub fn def_ident_span(self, value: ProvidedValue<'tcx>)
Gets the span for the identifier of the definition.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn param_env(self, value: ProvidedValue<'tcx>)
pub fn param_env(self, value: ProvidedValue<'tcx>)
Gets the ParameterEnvironment for a given item; this environment
will be in “user-facing” mode, meaning that it is suitable for
type-checking etc, and it does not normalize specializable
associated types. This is almost always what you want,
unless you are doing MIR optimizations, in which case you
might want to use reveal_all()
method to change modes.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn defaultness(self, value: ProvidedValue<'tcx>)
pub fn defaultness(self, value: ProvidedValue<'tcx>)
Returns whether the impl or associated function has the default
keyword.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn visibility(self, value: ProvidedValue<'tcx>)
pub fn visibility(self, value: ProvidedValue<'tcx>)
Computes the visibility of the provided def_id
.
If the item from the def_id
doesn’t have a visibility, it will panic. For example
a generic type parameter will panic if you call this method on it:
use std::fmt::Debug;
pub trait Foo<T: Debug> {}
In here, if you call visibility
on T
, it’ll panic.
source§impl<'tcx, K: IntoQueryParam<CrateNum> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<CrateNum> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn crate_name(self, value: ProvidedValue<'tcx>)
pub fn crate_name(self, value: ProvidedValue<'tcx>)
Gets the name of the crate.
source§impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn output_filenames(self, value: ProvidedValue<'tcx>)
pub fn output_filenames(self, value: ProvidedValue<'tcx>)
Return the filenames where output artefacts shall be stored.
This query returns an &Arc
because codegen backends need the value even after the TyCtxt
has been destroyed.
source§impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn features_query(self, value: ProvidedValue<'tcx>)
pub fn features_query(self, value: ProvidedValue<'tcx>)
[query description - consider adding a doc-comment!] looking up enabled feature gates
source§impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn crate_for_resolver(self, value: ProvidedValue<'tcx>)
pub fn crate_for_resolver(self, value: ProvidedValue<'tcx>)
[query description - consider adding a doc-comment!] the ast before macro expansion and name resolution
source§impl<'tcx, K: IntoQueryParam<CrateNum> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<CrateNum> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn stripped_cfg_items(self, value: ProvidedValue<'tcx>)
pub fn stripped_cfg_items(self, value: ProvidedValue<'tcx>)
Get all item paths that were stripped by a #[cfg]
in a particular crate.
Should not be called for the local crate before the resolver outputs are created, as it
is only fed there.
Trait Implementations§
source§impl<'tcx, KEY: Clone + Copy> Clone for TyCtxtFeed<'tcx, KEY>
impl<'tcx, KEY: Clone + Copy> Clone for TyCtxtFeed<'tcx, KEY>
source§fn clone(&self) -> TyCtxtFeed<'tcx, KEY>
fn clone(&self) -> TyCtxtFeed<'tcx, KEY>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreimpl<'tcx, KEY: Copy + Copy> Copy for TyCtxtFeed<'tcx, KEY>
Auto Trait Implementations§
impl<'tcx, KEY> !RefUnwindSafe for TyCtxtFeed<'tcx, KEY>
impl<'tcx, KEY> !Send for TyCtxtFeed<'tcx, KEY>
impl<'tcx, KEY> !Sync for TyCtxtFeed<'tcx, KEY>
impl<'tcx, KEY> Unpin for TyCtxtFeed<'tcx, KEY>where KEY: Unpin,
impl<'tcx, KEY> !UnwindSafe for TyCtxtFeed<'tcx, KEY>
Blanket Implementations§
source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere T: Copy,
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T> ) -> &'a mut [T]
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
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle: &[QueryInfo], _guar: ErrorGuaranteed ) -> T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.