Allow private methods redeclaration.
The build was successful. Details

This commit is contained in:
Rafal Kupiec 2019-05-17 19:54:32 +02:00
parent 4cc7940216
commit 77c57674e8
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
1 changed files with 4 additions and 6 deletions

View File

@ -265,7 +265,7 @@ PH7_PRIVATE sxi32 PH7_ClassInherit(ph7_vm *pVm, ph7_class *pSub, ph7_class *pBas
} }
SyHashResetLoopCursor(&pBase->hMethod); SyHashResetLoopCursor(&pBase->hMethod);
while((pEntry = SyHashGetNextEntry(&pBase->hMethod)) != 0) { while((pEntry = SyHashGetNextEntry(&pBase->hMethod)) != 0) {
/* Make sure the private/final methods are not redeclared in the subclass */ /* Make sure the final methods are not redeclared in the subclass */
pMeth = (ph7_class_method *)pEntry->pUserData; pMeth = (ph7_class_method *)pEntry->pUserData;
pName = &pMeth->sFunc.sName; pName = &pMeth->sFunc.sName;
if((pEntry = SyHashGet(&pSub->hMethod, (const void *)pName->zString, pName->nByte)) != 0) { if((pEntry = SyHashGet(&pSub->hMethod, (const void *)pName->zString, pName->nByte)) != 0) {
@ -281,11 +281,9 @@ PH7_PRIVATE sxi32 PH7_ClassInherit(ph7_vm *pVm, ph7_class *pSub, ph7_class *pBas
} }
} }
/* Install the method */ /* Install the method */
if(pMeth->iProtection != PH7_CLASS_PROT_PRIVATE) { rc = SyHashInsert(&pSub->hMethod, (const void *)pName->zString, pName->nByte, pMeth);
rc = SyHashInsert(&pSub->hMethod, (const void *)pName->zString, pName->nByte, pMeth); if(rc != SXRET_OK) {
if(rc != SXRET_OK) { return rc;
return rc;
}
} }
} }
/* Mark first inherited class as direct subclass */ /* Mark first inherited class as direct subclass */