1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-29 12:55:59 +02:00

Base type null check fix

This commit is contained in:
Brian Fiete 2025-06-12 17:10:27 +02:00
parent 7fe6082686
commit 764c454261

View file

@ -2892,49 +2892,52 @@ void BfAutoComplete::AddCtorPassthroughs()
declMethods.Add(methodInst); declMethods.Add(methodInst);
} }
for (auto methodDef : baseType->mTypeDef->mMethods) if (baseType != NULL)
{ {
if (methodDef->mShow != BfShow_Show) for (auto methodDef : baseType->mTypeDef->mMethods)
continue;
if (methodDef->mProtection < BfProtection_Protected)
continue;
if (methodDef->mIsStatic)
continue;
auto& methodGroup = baseType->mMethodInstanceGroups[methodDef->mIdx];
auto methodInst = methodGroup.mDefault;
if (methodInst == NULL)
continue;
if (methodDef->mMethodType != BfMethodType_Ctor)
continue;
if (methodInst->GetParamCount() == 0)
continue;
bool hasDecl = false;
for (auto declMethod : declMethods)
{ {
if (mModule->CompareMethodSignatures(methodInst, declMethod)) if (methodDef->mShow != BfShow_Show)
continue;
if (methodDef->mProtection < BfProtection_Protected)
continue;
if (methodDef->mIsStatic)
continue;
auto& methodGroup = baseType->mMethodInstanceGroups[methodDef->mIdx];
auto methodInst = methodGroup.mDefault;
if (methodInst == NULL)
continue;
if (methodDef->mMethodType != BfMethodType_Ctor)
continue;
if (methodInst->GetParamCount() == 0)
continue;
bool hasDecl = false;
for (auto declMethod : declMethods)
{ {
hasDecl = true; if (mModule->CompareMethodSignatures(methodInst, declMethod))
break; {
hasDecl = true;
break;
}
} }
} if (hasDecl)
if (hasDecl) continue;
continue;
StringT<512> insertString; StringT<512> insertString;
GetMethodInfo(methodInst, &insertString, &insertString, true, false); GetMethodInfo(methodInst, &insertString, &insertString, true, false);
if (insertString.IsEmpty()) if (insertString.IsEmpty())
continue; continue;
AddEntry(AutoCompleteEntry("this", insertString), ""); AddEntry(AutoCompleteEntry("this", insertString), "");
int tabPos = (int)insertString.IndexOf('\t'); int tabPos = (int)insertString.IndexOf('\t');
if (tabPos >= 0) if (tabPos >= 0)
{ {
if (!totalInsertString.IsEmpty()) if (!totalInsertString.IsEmpty())
totalInsertString += "\r\r"; totalInsertString += "\r\r";
totalInsertString += insertString.Substring(tabPos + 1); totalInsertString += insertString.Substring(tabPos + 1);
}
} }
} }
@ -4087,7 +4090,7 @@ void BfAutoComplete::FixitAddConstructor(BfTypeInstance *typeInstance)
{ {
auto baseType = typeInstance->mBaseType; auto baseType = typeInstance->mBaseType;
auto parser = typeInstance->mTypeDef->GetDefinition()->mSource->ToParser(); auto parser = typeInstance->mTypeDef->GetDefinition()->mSource->ToParser();
if (parser != NULL) if ((parser != NULL) && (baseType != NULL))
{ {
for (auto methodDef : baseType->mTypeDef->mMethods) for (auto methodDef : baseType->mTypeDef->mMethods)
{ {