Validate method visibility, final overrides and effective virtual contracts across C3 MRO
Build / AerScript (push) Failing after 40s

This commit is contained in:
2026-10-24 13:50:32 +02:00
parent 5f02a34b10
commit b306409a37
2 changed files with 101 additions and 13 deletions
+1 -2
View File
@@ -895,8 +895,7 @@ static ph7_vm_func *VmOverload(
for(pLink = pEntry ? (ph7_vm_func *)pEntry->pUserData : 0; pLink; pLink = pLink->pNextName) {
pMeth = (ph7_class_method *)pLink;
if((pMeth->iFlags & PH7_CLASS_ATTR_VIRTUAL) ||
(bStatic && !(pMeth->iFlags & PH7_CLASS_ATTR_STATIC) &&
(pLookup->iFlags & (PH7_CLASS_FINAL | PH7_CLASS_VIRTUAL)) != (PH7_CLASS_FINAL | PH7_CLASS_VIRTUAL)) ||
(bStatic && !(pMeth->iFlags & PH7_CLASS_ATTR_STATIC)) ||
(!bInternal && !VmClassMemberAccess(pVm, pLink->pClass, pMeth->iProtection))) {
continue;
}