1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Removed erroneous assertion in DoImplicitArgCapture

This commit is contained in:
Brian Fiete 2021-12-23 07:25:45 -05:00
parent e2337e7ac1
commit 6c2d03c898
3 changed files with 17 additions and 4 deletions

View file

@ -11481,7 +11481,6 @@ BfTypedValue BfExprEvaluator::DoImplicitArgCapture(BfAstNode* refNode, BfMethodI
return lookupVal;
}
}
BF_ASSERT(methodRefTarget.IsAddr());
if (paramType->IsComposite())
return BfTypedValue(mModule->mBfIRBuilder->CreateInBoundsGEP(methodRefTarget.mValue, 0, dataIdx), paramType, true);
return BfTypedValue(mModule->ExtractValue(methodRefTarget, dataIdx), paramType);

View file

@ -2627,9 +2627,11 @@ void BfIRBuilder::CreateTypeDeclaration(BfType* type, bool forceDbgDefine)
BfMethodInstance* methodInstance = methodRefType->mMethodRef;
String name = "_BF_MethodRef_";
if (methodInstance != NULL)
name += BfTypeUtils::HashEncode64(methodInstance->mIdHash).c_str();
if (wantDIData)
if ((wantDIData) && (methodInstance != NULL))
{
auto typeDeclaration = methodInstance->GetOwner()->mTypeDef->mTypeDeclaration;

View file

@ -57,6 +57,14 @@ namespace Tests
return dlg(val[0]);
}
static void TestWrap<T>(T del, bool b = false) where T : delegate void()
{
Action ac = scope () => {
del();
};
ac();
}
[Test]
public static void TestBasics()
{
@ -78,6 +86,10 @@ namespace Tests
List<float> fList = scope .() { 1.2f, 2.3f };
Test.Assert(DoOnListA(fList, (val) => val + 100) == 101.2f);
Test.Assert(DoOnListB((val) => val + 200, fList) == 201.2f);
int a = 222;
TestWrap(() => { a += 100; });
Test.Assert(a == 322);
}
struct MethodRefHolder<T> where T : delegate int(int num)