mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed issues autocompleting in extensions outside definition project
This commit is contained in:
parent
2daafa7b4c
commit
476df62a24
2 changed files with 16 additions and 15 deletions
|
@ -1252,6 +1252,17 @@ void BfAutoComplete::AddExtensionMethods(BfTypeInstance* targetType, BfTypeInsta
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BfProject* BfAutoComplete::GetActiveProject()
|
||||||
|
{
|
||||||
|
BfProject* bfProject = NULL;
|
||||||
|
auto activeTypeDef = mModule->GetActiveTypeDef();
|
||||||
|
if (activeTypeDef != NULL)
|
||||||
|
bfProject = activeTypeDef->mProject;
|
||||||
|
else
|
||||||
|
bfProject = mCompiler->mResolvePassData->mParser->mProject;
|
||||||
|
return bfProject;
|
||||||
|
}
|
||||||
|
|
||||||
void BfAutoComplete::AddTopLevelNamespaces(BfAstNode* identifierNode)
|
void BfAutoComplete::AddTopLevelNamespaces(BfAstNode* identifierNode)
|
||||||
{
|
{
|
||||||
String filter;
|
String filter;
|
||||||
|
@ -1262,11 +1273,7 @@ void BfAutoComplete::AddTopLevelNamespaces(BfAstNode* identifierNode)
|
||||||
mInsertEndIdx = identifierNode->GetSrcEnd();
|
mInsertEndIdx = identifierNode->GetSrcEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
BfProject* bfProject = NULL;
|
BfProject* bfProject = GetActiveProject();
|
||||||
if (mModule->mCurTypeInstance != NULL)
|
|
||||||
bfProject = mModule->mCurTypeInstance->mTypeDef->mProject;
|
|
||||||
else
|
|
||||||
bfProject = mCompiler->mResolvePassData->mParser->mProject;
|
|
||||||
|
|
||||||
auto _AddProjectNamespaces = [&](BfProject* project)
|
auto _AddProjectNamespaces = [&](BfProject* project)
|
||||||
{
|
{
|
||||||
|
@ -1923,12 +1930,7 @@ bool BfAutoComplete::CheckMemberReference(BfAstNode* target, BfAstNode* dotToken
|
||||||
BfAtomComposite targetComposite;
|
BfAtomComposite targetComposite;
|
||||||
bool isValid = mSystem->ParseAtomComposite(targetStr, targetComposite);
|
bool isValid = mSystem->ParseAtomComposite(targetStr, targetComposite);
|
||||||
|
|
||||||
BfProject* bfProject = NULL;
|
BfProject* bfProject = GetActiveProject();
|
||||||
if (mModule->mCurTypeInstance != NULL)
|
|
||||||
bfProject = mModule->mCurTypeInstance->mTypeDef->mProject;
|
|
||||||
else
|
|
||||||
bfProject = mCompiler->mResolvePassData->mParser->mProject;
|
|
||||||
|
|
||||||
auto _CheckProject = [&](BfProject* project)
|
auto _CheckProject = [&](BfProject* project)
|
||||||
{
|
{
|
||||||
if ((isValid) && (project->mNamespaces.ContainsKey(targetComposite)))
|
if ((isValid) && (project->mNamespaces.ContainsKey(targetComposite)))
|
||||||
|
@ -1946,14 +1948,12 @@ bool BfAutoComplete::CheckMemberReference(BfAstNode* target, BfAstNode* dotToken
|
||||||
|
|
||||||
if (!isUsingDirective)
|
if (!isUsingDirective)
|
||||||
{
|
{
|
||||||
BfTypeDef* curTypeDef = NULL;
|
BfProject* activeProject = GetActiveProject();
|
||||||
if (mModule->mCurTypeInstance != NULL)
|
|
||||||
curTypeDef = mModule->mCurTypeInstance->mTypeDef;
|
|
||||||
for (auto typeDef : mSystem->mTypeDefs)
|
for (auto typeDef : mSystem->mTypeDefs)
|
||||||
{
|
{
|
||||||
if ((typeDef->mNamespace == targetComposite) && (typeDef->mOuterType == NULL) &&
|
if ((typeDef->mNamespace == targetComposite) && (typeDef->mOuterType == NULL) &&
|
||||||
(!typeDef->mIsPartial) &&
|
(!typeDef->mIsPartial) &&
|
||||||
((curTypeDef == NULL) || (curTypeDef->mProject->ContainsReference(typeDef->mProject))))
|
((activeProject == NULL) || (activeProject->ContainsReference(typeDef->mProject))))
|
||||||
{
|
{
|
||||||
AddTypeDef(typeDef, filter, onlyAttribute);
|
AddTypeDef(typeDef, filter, onlyAttribute);
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,6 +207,7 @@ public:
|
||||||
int mDefTypeGenericParamIdx;
|
int mDefTypeGenericParamIdx;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
BfProject* GetActiveProject();
|
||||||
bool CheckProtection(BfProtection protection, BfTypeDef* typeDef, bool allowProtected, bool allowPrivate);
|
bool CheckProtection(BfProtection protection, BfTypeDef* typeDef, bool allowProtected, bool allowPrivate);
|
||||||
String GetFilter(BfAstNode* node);
|
String GetFilter(BfAstNode* node);
|
||||||
const char* GetTypeName(BfType* type);
|
const char* GetTypeName(BfType* type);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue