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

Function apply_providers_property_priority

src/virtual_members/tests.rs:792–824  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

790
791#[test]
792fn apply_providers_property_priority() {
793 let mut class = make_class("Foo");
794
795 let high_priority = Box::new(TestProvider {
796 methods: Vec::new(),
797 properties: vec![make_property("name", Some("string"))],
798 }) as Box<dyn VirtualMemberProvider>;
799
800 let low_priority = Box::new(TestProvider {
801 methods: Vec::new(),
802 properties: vec![
803 make_property("name", Some("mixed")),
804 make_property("email", Some("string")),
805 ],
806 }) as Box<dyn VirtualMemberProvider>;
807
808 let providers: Vec<Box<dyn VirtualMemberProvider>> = vec![high_priority, low_priority];
809 let class_loader = |_: &str| -> Option<Arc<ClassInfo>> { None };
810
811 apply_virtual_members(&mut class, &class_loader, &providers, None);
812
813 assert_eq!(class.properties.len(), 2);
814
815 let name = class.properties.iter().find(|p| p.name == "name").unwrap();
816 assert_eq!(
817 name.type_hint,
818 Some(PhpType::parse("string")),
819 "higher-priority provider property should win"
820 );
821
822 let email = class.properties.iter().find(|p| p.name == "email").unwrap();
823 assert_eq!(email.type_hint, Some(PhpType::parse("string")));
824}
825
826/// When a higher-priority provider contributes a `mixed` property and
827/// a lower-priority provider has a specific type, the specific type

Callers

nothing calls this directly

Calls 5

apply_virtual_membersFunction · 0.85
iterMethod · 0.80
make_classFunction · 0.50
unwrapMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected