pub struct FragRef {Show 22 fields
pub kind: String,
pub name: String,
pub qualified: Option<String>,
pub member: Option<String>,
pub line: usize,
pub namespace: Option<String>,
pub type_arg_count: Option<usize>,
pub generic: bool,
pub receiver_type: Option<String>,
pub arg_count: Option<usize>,
pub receiver_args: Option<Vec<String>>,
pub outer_types: Vec<String>,
pub args: Option<Vec<String>>,
pub receiver_property_owner: Option<String>,
pub receiver_call_owner: Option<String>,
pub receiver_call_member: Option<String>,
pub receiver_base: bool,
pub receiver_awaited: bool,
pub receiver_local: bool,
pub receiver_lambda: Option<FragLambdaSlot>,
pub receiver_nullable: bool,
pub lambda_arg_arity: Option<Vec<Option<usize>>>,
}Expand description
Represents FragRef.
Fields§
§kind: StringThe kind value.
name: StringThe name value.
qualified: Option<String>The qualified value.
member: Option<String>The member value.
line: usizeThe line value.
namespace: Option<String>Always serialized, including when null (imports refs) – NOT
skip_serializing_if, unlike qualified/member which are omitted
entirely when absent. See extract.rs’s RefRecord doc comment.
type_arg_count: Option<usize>The type arg count value.
generic: boolType-certainty flag (see extract.rs’s RefRecord). Serialized last and
only when true; an absent key reads back as false, which also makes
an older fragment JSON parse safely.
receiver_type: Option<String>Receiver fact (see extract.rs’s RefRecord). Appended AFTER generic,
and set only when a fact actually fired – so it serializes last and
only when present, and an absent key reads back as “no fact”, the safe
default.
arg_count: Option<usize>The callee arg count (see extract.rs’s RefRecord). Appended AFTER
receiverType, set only when the member access was the callee of an
invocation – so it serializes last and only when present, and an
absent key reads back as “not a call”, which is what keeps a property
read out of the extension tier.
receiver_args: Option<Vec<String>>Receiver generic-arg descriptors (see extract.rs’s RefRecord). Appended
LAST, after argCount, set only when the receiver’s DECLARED type was
generic – an absent key reads back as “not generic”, which is what
makes a generic-vs-non-generic pairing fail to unify.
outer_types: Vec<String>Enclosing-type stack (see extract.rs’s RefRecord). Appended LAST, after
receiverArgs, and set only when non-empty. A Vec rather than an Option
because empty and absent mean the same thing here – a ref at namespace
level and an older cached fragment both read back as “no enclosing
type”, which is what keeps them off the step.
args: Option<Vec<String>>Generic-arg descriptors for a ‘ctor-param’ ref (see extract.rs’s
RefRecord). Appended LAST of all, after outerTypes, and set only when
the parameter’s type was generic.
receiver_property_owner: Option<String>(See extract.rs’s RefRecord.) The type whose PROPERTY the
qualifier’s last segment is, for a two-segment chain whose head the
enclosing scope could type. Appended after args, and never present
alongside receiverType.
receiver_call_owner: Option<String>(See extract.rs’s RefRecord.) The type whose METHOD a
var x = Q.M(...) initializer called, and that method’s name. Appended
LAST of all, always as a pair, and never alongside receiverType: an
absent pair reads back as “no call fact”, which is what leaves the local
taken-but-unknown.
receiver_call_member: Option<String>The receiver call member value.
receiver_base: booltrue for a base. qualifier – the member lookup starts at the
enclosing type’s bases and never considers the enclosing type
itself (see extract.rs’s RefRecord). Appended LAST of all, and
omitted when false – an absent key reads back as false, the
same as a plain this. receiver and as every ref kind that never
sets it, and also what makes a v15 cached fragment parse safely.
receiver_awaited: booltrue when receiverCallOwner/receiverCallMember came from an
AWAITED call (see extract.rs’s RefRecord). Appended LAST of all,
after receiverBase, and omitted when false – an absent key reads
back as false, the same as an unawaited call fact and as every ref
kind that never sets it, which is also what lets a cached fragment
from before this field existed parse safely with no cache-version
bump: it simply reads back as “not awaited”, the same answer the
resolver gave before this field existed.
receiver_local: booltrue when this ref’s qualifier is a bare identifier for which the
enclosing MEMBER’s own fact table (locals, parameters, lambda
parameters, patterns, out designations) holds ANY entry for the
name, typed or taken-but-unknown (see extract.rs’s RefRecord and
Scope::has_local_fact). Read ONLY by the bare-identifier
field/property fallback: a member-scoped name always shadows a
same-named field, whether or not anything vouches for its type, so
that fallback never runs when this is true. false for every
dotted or generic qualifier, for this./base. (never asked of the
enclosing scope’s local table at all), and for every ref kind but
uses-member. Appended LAST of all, after receiverAwaited, and
omitted when false – an absent key reads back as false, the
same as every ref kind that never sets it, which is also what lets a
cached fragment from before this field existed parse safely with no
cache-version bump.
receiver_lambda: Option<FragLambdaSlot>Set when this ref’s qualifier is an untyped lambda parameter whose
type is a delegate parameter of some OTHER callee (see extract.rs’s
RefRecord). Never present alongside receiverType or
receiverCallOwner. Appended LAST of all, after receiverLocal,
omitted when absent. Joined the schema with the v18 cache bump: a
v17 fragment read back carries none, and every untyped-lambda
callee-slot lookup this field backs would silently see no
candidate.
receiver_nullable: booltrue when receiverType came off a declaration whose own type
node carried a ? (see extract.rs’s RefRecord). Appended LAST of
all, after receiverLambda, and omitted when false – an absent
key reads back as false, the same as a non-nullable receiver and
as every ref kind that never sets it. Joined the schema with the
v20 cache bump: a v19 fragment read back carries none, so a
T? receiver’s own Nullable<T>.Value/HasValue/
GetValueOrDefault unwrap would silently keep resolving against
T’s own same-named member.
lambda_arg_arity: Option<Vec<Option<usize>>>The parameter count of each delegate-shaped argument of the
invocation this ref is the callee of – a lambda literal, or a
local function passed as a method group (see extract.rs’s
RefRecord). Appended LAST of all, after receiverNullable,
omitted when absent. Joined the schema with the v20 cache bump: a
v19 fragment read back carries none, and a candidate whose delegate
parameter shape the call’s own argument cannot fill would silently
keep earning a precise edge.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for FragRef
impl<'de> Deserialize<'de> for FragRef
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for FragRef
Auto Trait Implementations§
impl Freeze for FragRef
impl RefUnwindSafe for FragRef
impl Send for FragRef
impl Sync for FragRef
impl Unpin for FragRef
impl UnsafeUnpin for FragRef
impl UnwindSafe for FragRef
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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> ⓘ
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> ⓘ
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