MCPcopy Create free account
hub / github.com/PHPantom-dev/phpantom_lsp / apply_virtual_members

Function apply_virtual_members

src/virtual_members/mod.rs:500–514  ·  view source on GitHub ↗

Apply all registered providers to a base-resolved class. Iterates over `providers` in order (highest priority first) and merges each provider's virtual members into `class`. Because [`merge_virtual_members`] skips members that already exist, higher-priority providers' contributions shadow lower-priority ones.

(
    class: &mut ClassInfo,
    class_loader: &dyn Fn(&str) -> Option<Arc<ClassInfo>>,
    providers: &[Box<dyn VirtualMemberProvider>],
    cache: Option<&ResolvedClassCache>,
)

Source from the content-addressed store, hash-verified

498/// [`merge_virtual_members`] skips members that already exist,
499/// higher-priority providers' contributions shadow lower-priority ones.
500pub fn apply_virtual_members(
501 class: &mut ClassInfo,
502 class_loader: &dyn Fn(&str) -> Option<Arc<ClassInfo>>,
503 providers: &[Box<dyn VirtualMemberProvider>],
504 cache: Option<&ResolvedClassCache>,
505) {
506 for provider in providers {
507 if provider.applies_to(class, class_loader) {
508 let virtual_members = provider.provide(class, class_loader, cache);
509 if !virtual_members.is_empty() {
510 merge_virtual_members(class, virtual_members);
511 }
512 }
513 }
514}
515
516/// Return the default set of virtual member providers in priority order.
517///

Calls 4

merge_virtual_membersFunction · 0.85
applies_toMethod · 0.45
provideMethod · 0.45
is_emptyMethod · 0.45