Consider a method with compiled default value associated as a candidate to call. Fixes #37.
The build was successful. Details

This commit is contained in:
Rafal Kupiec 2018-08-08 09:00:24 +02:00
parent e15166d940
commit 8f7fc71027
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
1 changed files with 9 additions and 3 deletions

View File

@ -601,6 +601,7 @@ static ph7_vm_func *VmOverload(
int iTarget, i, j, iArgs, iCur, iMax; int iTarget, i, j, iArgs, iCur, iMax;
ph7_vm_func *apSet[10]; /* Maximum number of candidates */ ph7_vm_func *apSet[10]; /* Maximum number of candidates */
ph7_vm_func *pLink; ph7_vm_func *pLink;
ph7_vm_func_arg *pFuncArg;
SyString sArgSig; SyString sArgSig;
SyBlob sSig; SyBlob sSig;
pLink = pList; pLink = pList;
@ -612,12 +613,17 @@ static ph7_vm_func *VmOverload(
} }
iArgs = (int) SySetUsed(&pLink->aArgs); iArgs = (int) SySetUsed(&pLink->aArgs);
if(nArg == iArgs) { if(nArg == iArgs) {
/* Exact amount of parameters, a candidate for overloading */ /* Exact amount of parameters, a candidate to call */
apSet[i++] = pLink; apSet[i++] = pLink;
} else if(nArg < iArgs) { } else if(nArg < iArgs) {
/* Fewer parameters passed, check if all are required */ /* Fewer parameters passed, check if all are required */
/* Temporarily a candidate for overloading to fix master branch */ pFuncArg = (ph7_vm_func_arg *) SySetAt(&pLink->aArgs, nArg);
apSet[i++] = pLink; if(pFuncArg) {
if(SySetUsed(&pFuncArg->aByteCode) >= 1) {
/* First missing parameter has a compiled default value associated, a candidate to call */
apSet[i++] = pLink;
}
}
} }
/* Point to the next entry */ /* Point to the next entry */
pLink = pLink->pNextName; pLink = pLink->pNextName;