pub struct StubSlice {
pub classes: Vec<Arc<ClassDef>>,
pub interfaces: Vec<Arc<InterfaceDef>>,
pub traits: Vec<Arc<TraitDef>>,
pub enums: Vec<Arc<EnumDef>>,
pub functions: Vec<Arc<FunctionDef>>,
pub constants: Vec<(Arc<str>, Type)>,
pub file: Option<Arc<str>>,
pub global_vars: Vec<(Arc<str>, Type)>,
pub namespace: Option<Arc<str>>,
pub imports: Arc<FxHashMap<Name, Name>>,
pub is_deduped: bool,
}Expand description
A snapshot of all PHP definitions contributed by a single stub file set.
Produced by mir-stubs-gen at code-generation time and deserialized at
runtime to ingest definitions into the salsa db via
MirDatabase::ingest_stub_slice.
Fields§
§classes: Vec<Arc<ClassDef>>§interfaces: Vec<Arc<InterfaceDef>>§traits: Vec<Arc<TraitDef>>§enums: Vec<Arc<EnumDef>>§functions: Vec<Arc<FunctionDef>>§constants: Vec<(Arc<str>, Type)>§file: Option<Arc<str>>Source file this slice was collected from. None for bundled stub slices
that were pre-computed and are not tied to a specific on-disk file.
global_vars: Vec<(Arc<str>, Type)>Types of @var-annotated global variables collected from this file.
Populated by DefinitionCollector; ingested into the salsa db’s
global_vars table by ingest_stub_slice when file is Some.
namespace: Option<Arc<str>>The first namespace declared in this file (e.g. "App\\Service").
Populated by DefinitionCollector; ingested into the salsa db’s
file_namespaces table by ingest_stub_slice when file is Some.
imports: Arc<FxHashMap<Name, Name>>use alias map for this file: alias → FQCN.
Stored as Arc<FxHashMap<Name, Name>> so that file_imports()
returns a cheap Arc clone instead of deep-cloning the map on every
resolve_name call (which fires once per symbol reference in
Pass 2). Name keys/values shrink each entry from ~108 bytes
(two String headers + two heap allocs averaging ~30 chars) to
16 bytes (two Ustr u64 handles); the global ustr interner holds
one copy of each unique alias / FQCN string for the whole session.
is_deduped: boolSet to true after deduplicate_params_in_slice has run on this slice.
ingest_stub_slice skips the clone+re-dedup when this flag is set.