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

Function resolve_static_owner_class

src/completion/resolver.rs:1414–1437  ·  view source on GitHub ↗

Resolve a static class reference (`self`, `static`, `parent`, or a class name) to its `ClassInfo`. Handles the `self`/`static`/`parent` keywords and falls back to `class_loader` then `resolve_target_classes` for named classes.

(
    class: &str,
    rctx: &ResolutionCtx<'_>,
)

Source from the content-addressed store, hash-verified

1412/// Handles the `self`/`static`/`parent` keywords and falls back to
1413/// `class_loader` then `resolve_target_classes` for named classes.
1414pub(in crate::completion) fn resolve_static_owner_class(
1415 class: &str,
1416 rctx: &ResolutionCtx<'_>,
1417) -> Option<Arc<ClassInfo>> {
1418 if is_self_or_static(class) {
1419 rctx.current_class.map(|cc| Arc::new(cc.clone()))
1420 } else if let Some(resolved_name) = resolve_class_keyword(class, rctx.current_class) {
1421 // parent — load via class_loader so we get the full parent ClassInfo
1422 (rctx.class_loader)(&resolved_name)
1423 } else {
1424 find_class_by_name(rctx.all_classes, class)
1425 .map(Arc::clone)
1426 .or_else(|| (rctx.class_loader)(class))
1427 .or_else(|| {
1428 resolved_to_arcs(resolve_target_classes(
1429 class,
1430 crate::AccessKind::DoubleColon,
1431 rctx,
1432 ))
1433 .into_iter()
1434 .next()
1435 })
1436 }
1437}
1438
1439/// Apply instanceof / assert narrowing for a property-access path.
1440///

Calls 9

is_self_or_staticFunction · 0.85
resolve_class_keywordFunction · 0.85
find_class_by_nameFunction · 0.85
resolved_to_arcsFunction · 0.85
resolve_target_classesFunction · 0.85
cloneMethod · 0.80
nextMethod · 0.80
into_iterMethod · 0.80
mapMethod · 0.45

Tested by

no test coverage detected