mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-11 04:52:21 +02:00
Small failure case fixes
This commit is contained in:
parent
d0de4776f3
commit
57c50635a0
2 changed files with 20 additions and 13 deletions
|
@ -2051,20 +2051,27 @@ bool BfMethodMatcher::CheckMethod(BfTypeInstance* targetTypeInstance, BfTypeInst
|
||||||
|
|
||||||
for (int genericArgIdx = uniqueGenericStartIdx; genericArgIdx < (int)checkMethod->mGenericParams.size(); genericArgIdx++)
|
for (int genericArgIdx = uniqueGenericStartIdx; genericArgIdx < (int)checkMethod->mGenericParams.size(); genericArgIdx++)
|
||||||
{
|
{
|
||||||
auto& genericArg = mCheckMethodGenericArguments[genericArgIdx];
|
if (genericArgIdx >= mCheckMethodGenericArguments.mSize)
|
||||||
if (genericArg == NULL)
|
|
||||||
{
|
{
|
||||||
auto genericParam = methodInstance->mMethodInfoEx->mGenericParams[genericArgIdx];
|
failed = true;
|
||||||
InferFromGenericConstraints(methodInstance, genericParam, &mCheckMethodGenericArguments);
|
}
|
||||||
if (genericArg != NULL)
|
else
|
||||||
|
{
|
||||||
|
auto& genericArg = mCheckMethodGenericArguments[genericArgIdx];
|
||||||
|
if (genericArg == NULL)
|
||||||
{
|
{
|
||||||
if (inferredAllGenericArguments)
|
auto genericParam = methodInstance->mMethodInfoEx->mGenericParams[genericArgIdx];
|
||||||
genericInferContext.InferGenericArguments(methodInstance, genericArgIdx);
|
InferFromGenericConstraints(methodInstance, genericParam, &mCheckMethodGenericArguments);
|
||||||
madeProgress = true;
|
if (genericArg != NULL)
|
||||||
|
{
|
||||||
|
if (inferredAllGenericArguments)
|
||||||
|
genericInferContext.InferGenericArguments(methodInstance, genericArgIdx);
|
||||||
|
madeProgress = true;
|
||||||
|
}
|
||||||
|
hasUninferred = true;
|
||||||
|
if (!allowEmptyGenericSet.Contains(genericArgIdx))
|
||||||
|
failed = true;
|
||||||
}
|
}
|
||||||
hasUninferred = true;
|
|
||||||
if (!allowEmptyGenericSet.Contains(genericArgIdx))
|
|
||||||
failed = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3623,7 +3623,7 @@ void BfModule::VisitCodeBlock(BfBlock* block)
|
||||||
exprEvaluator->FinishExpressionResult();
|
exprEvaluator->FinishExpressionResult();
|
||||||
|
|
||||||
if ((exprEvaluator->mResult) && (!exprEvaluator->mResult.mType->IsValuelessType()) && (!exprEvaluator->mResult.mValue.IsConst()) &&
|
if ((exprEvaluator->mResult) && (!exprEvaluator->mResult.mType->IsValuelessType()) && (!exprEvaluator->mResult.mValue.IsConst()) &&
|
||||||
(!exprEvaluator->mResult.IsAddr()) && (!exprEvaluator->mResult.mValue.IsFake()))
|
(!exprEvaluator->mResult.IsAddr()) && (exprEvaluator->mResult.mValue) && (!exprEvaluator->mResult.mValue.IsFake()))
|
||||||
{
|
{
|
||||||
if ((mCurMethodState->mCurScope != NULL) && (mCurMethodState->mCurScope->mPrevScope != NULL))
|
if ((mCurMethodState->mCurScope != NULL) && (mCurMethodState->mCurScope->mPrevScope != NULL))
|
||||||
{
|
{
|
||||||
|
@ -3642,7 +3642,7 @@ void BfModule::VisitCodeBlock(BfBlock* block)
|
||||||
mBfIRBuilder->SetInsertPoint(prevInsertBlock);
|
mBfIRBuilder->SetInsertPoint(prevInsertBlock);
|
||||||
if (exprEvaluator->mResult.IsSplat())
|
if (exprEvaluator->mResult.IsSplat())
|
||||||
AggregateSplatIntoAddr(exprEvaluator->mResult, tempVar);
|
AggregateSplatIntoAddr(exprEvaluator->mResult, tempVar);
|
||||||
else
|
else if (!exprEvaluator->mResult.mType->IsValuelessType())
|
||||||
mBfIRBuilder->CreateAlignedStore(exprEvaluator->mResult.mValue, tempVar, exprEvaluator->mResult.mType->mAlign);
|
mBfIRBuilder->CreateAlignedStore(exprEvaluator->mResult.mValue, tempVar, exprEvaluator->mResult.mType->mAlign);
|
||||||
exprEvaluator->mResult = BfTypedValue(tempVar, exprEvaluator->mResult.mType,
|
exprEvaluator->mResult = BfTypedValue(tempVar, exprEvaluator->mResult.mType,
|
||||||
exprEvaluator->mResult.IsThis() ?
|
exprEvaluator->mResult.IsThis() ?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue