mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Fixed autocomplete crash with a generic delegate invocation
This commit is contained in:
parent
0720b9ad1a
commit
6f975686f7
1 changed files with 23 additions and 8 deletions
|
@ -7041,23 +7041,38 @@ void BfCompiler::GenerateAutocompleteInfo()
|
||||||
auto genericParamType = (BfGenericParamType*)type;
|
auto genericParamType = (BfGenericParamType*)type;
|
||||||
if (genericParamType->mGenericParamKind == BfGenericParamKind_Method)
|
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;
|
methodText += genericParamInstance->GetGenericParamDef()->mName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BfMethodInstance* curMethodInstance = methodEntry.mCurMethodInstance;
|
methodText += StrFormat("@M%d", genericParamType->mGenericParamIdx);
|
||||||
auto genericParamInstance = curMethodInstance->mMethodInfoEx->mGenericParams[genericParamType->mGenericParamIdx];
|
|
||||||
methodText += genericParamInstance->GetGenericParamDef()->mName;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BfGenericTypeInstance* genericType = (BfGenericTypeInstance*)methodEntry.mTypeInstance;
|
BfGenericTypeInstance* genericType = methodEntry.mTypeInstance->ToGenericTypeInstance();
|
||||||
auto genericParamInstance = genericType->mGenericParams[genericParamType->mGenericParamIdx];
|
if (genericType == NULL)
|
||||||
methodText += genericParamInstance->GetGenericParamDef()->mName;
|
{
|
||||||
|
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
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue