Struct rustc_middle::ty::context::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, KEY: Copy> TyCtxtFeed<'tcx, KEY>
impl<'tcx, KEY: Copy> TyCtxtFeed<'tcx, KEY>
source§impl<'tcx> TyCtxtFeed<'tcx, LocalDefId>
impl<'tcx> TyCtxtFeed<'tcx, LocalDefId>
pub fn def_id(&self) -> LocalDefId
pub fn feed_owner_id(&self) -> TyCtxtFeed<'tcx, OwnerId>
source§impl<'tcx, K: IntoQueryParam<LocalDefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<LocalDefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn local_def_id_to_hir_id(self, value: ProvidedValue<'tcx>)
pub fn local_def_id_to_hir_id(self, value: ProvidedValue<'tcx>)
Returns HIR ID for the given LocalDefId
.
source§impl<'tcx, K: IntoQueryParam<LocalDefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<LocalDefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn opt_hir_owner_nodes(self, value: ProvidedValue<'tcx>)
pub fn opt_hir_owner_nodes(self, value: ProvidedValue<'tcx>)
Gives access to the HIR nodes and bodies inside key
if it’s a HIR owner.
This can be conveniently accessed by methods on tcx.hir()
.
Avoid calling this query directly.
source§impl<'tcx, K: IntoQueryParam<OwnerId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<OwnerId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn hir_attrs(self, value: ProvidedValue<'tcx>)
pub fn hir_attrs(self, value: ProvidedValue<'tcx>)
Gives access to the HIR attributes inside the HIR owner key
.
This can be conveniently accessed by methods on tcx.hir()
.
Avoid calling this query directly.
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 eval_static_initializer(self, value: ProvidedValue<'tcx>)
pub fn eval_static_initializer(self, value: ProvidedValue<'tcx>)
Evaluate a static’s initializer, returning the allocation of the initializer’s memory.
source§impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>
sourcepub fn def_kind(self, value: ProvidedValue<'tcx>)
pub fn 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 codegen_fn_attrs(self, value: ProvidedValue<'tcx>)
pub fn codegen_fn_attrs(self, value: ProvidedValue<'tcx>)
[query description - consider adding a doc-comment!] computing codegen attributes 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 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
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 moresource§impl<KEY: Copy, CTX> !HashStable<CTX> for TyCtxtFeed<'_, KEY>
impl<KEY: Copy, CTX> !HashStable<CTX> for TyCtxtFeed<'_, KEY>
Never return a Feed
from a query. Only queries that create a DefId
are
allowed to feed queries for that DefId
.
fn hash_stable(&self, hcx: &mut CTX, hasher: &mut StableHasher)
impl<'tcx, KEY: Copy + Copy> Copy for TyCtxtFeed<'tcx, KEY>
Auto Trait Implementations§
impl<'tcx, KEY> DynSend for TyCtxtFeed<'tcx, KEY>where
KEY: DynSend,
impl<'tcx, KEY> DynSync for TyCtxtFeed<'tcx, KEY>where
KEY: DynSync,
impl<'tcx, KEY> Freeze for TyCtxtFeed<'tcx, KEY>where
KEY: Freeze,
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<'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
§impl<T> Filterable for T
impl<T> Filterable for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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
§impl<T> Pointable for T
impl<T> Pointable 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_error: &CycleError, _guar: ErrorGuaranteed ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
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.