1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 03:28:20 +02:00

Fixed autocomplete crash with a generic delegate invocation

This commit is contained in:
Brian Fiete 2020-03-27 08:28:27 -07:00
parent 0720b9ad1a
commit 6f975686f7

View file

@ -7041,23 +7041,38 @@ void BfCompiler::GenerateAutocompleteInfo()
auto genericParamType = (BfGenericParamType*)type;
if (genericParamType->mGenericParamKind == BfGenericParamKind_Method)
{
if (methodInstance->GetNumGenericParams() > 0)
BfMethodInstance* checkMethodInstance = methodInstance;
if (checkMethodInstance->GetNumGenericParams() == 0)
checkMethodInstance = methodEntry.mCurMethodInstance;
if (genericParamType->mGenericParamIdx < checkMethodInstance->GetNumGenericParams())
{
auto genericParamInstance = methodInstance->mMethodInfoEx->mGenericParams[genericParamType->mGenericParamIdx];
auto genericParamInstance = checkMethodInstance->mMethodInfoEx->mGenericParams[genericParamType->mGenericParamIdx];
methodText += genericParamInstance->GetGenericParamDef()->mName;
}
else
{
BfMethodInstance* curMethodInstance = methodEntry.mCurMethodInstance;
auto genericParamInstance = curMethodInstance->mMethodInfoEx->mGenericParams[genericParamType->mGenericParamIdx];
methodText += genericParamInstance->GetGenericParamDef()->mName;
methodText += StrFormat("@M%d", genericParamType->mGenericParamIdx);
}
}
else
{
BfGenericTypeInstance* genericType = (BfGenericTypeInstance*)methodEntry.mTypeInstance;
auto genericParamInstance = genericType->mGenericParams[genericParamType->mGenericParamIdx];
methodText += genericParamInstance->GetGenericParamDef()->mName;
BfGenericTypeInstance* genericType = methodEntry.mTypeInstance->ToGenericTypeInstance();
if (genericType == NULL)
{
if (methodEntry.mCurMethodInstance != NULL)
genericType = methodEntry.mCurMethodInstance->GetOwner()->ToGenericTypeInstance();
}
if ((genericType != NULL) && (genericParamType->mGenericParamIdx < (int)genericType->mGenericParams.size()))
{
auto genericParamInstance = genericType->mGenericParams[genericParamType->mGenericParamIdx];
methodText += genericParamInstance->GetGenericParamDef()->mName;
}
else
{
methodText += StrFormat("@T%d", genericParamType->mGenericParamIdx);
}
}
}
else