diff --git a/IDEHelper/Compiler/BfDefBuilder.cpp b/IDEHelper/Compiler/BfDefBuilder.cpp index 3fe4a677..ff71fcf7 100644 --- a/IDEHelper/Compiler/BfDefBuilder.cpp +++ b/IDEHelper/Compiler/BfDefBuilder.cpp @@ -1555,6 +1555,7 @@ void BfDefBuilder::Visit(BfTypeDeclaration* typeDeclaration) mCurTypeDef->mSystem = mSystem; mCurTypeDef->mProject = mCurSource->mProject; + mCurTypeDef->mIsStatic = typeDeclaration->mStaticSpecifier != NULL; mCurTypeDef->mNamespace = mNamespace; mSystem->AddNamespaceUsage(mCurTypeDef->mNamespace, mCurTypeDef->mProject); if ((typeDeclaration->mTypeNode == NULL) && (!isAnonymous)) @@ -1571,10 +1572,15 @@ void BfDefBuilder::Visit(BfTypeDeclaration* typeDeclaration) if (mCurTypeDef->mName == NULL) { - // Global - mCurTypeDef->mName = mSystem->mGlobalsAtom; + if (mCurTypeDef->mIsStatic) + { + // Global + mCurTypeDef->mName = mSystem->mGlobalsAtom; + } + else + mCurTypeDef->mName = mSystem->mHiddenAtom; mCurTypeDef->mName->Ref(); - BF_ASSERT(mCurTypeDef->mSystem != NULL); + BF_ASSERT(mCurTypeDef->mSystem != NULL); } } else @@ -1791,8 +1797,7 @@ void BfDefBuilder::Visit(BfTypeDeclaration* typeDeclaration) mCurTypeDef->mSource = mCurSource; mCurTypeDef->mSource->mRefCount++; mCurTypeDef->mTypeDeclaration = typeDeclaration; - mCurTypeDef->mIsAbstract = (typeDeclaration->mAbstractSpecifier != NULL) && (typeDeclaration->mAbstractSpecifier->GetToken() == BfToken_Abstract); - mCurTypeDef->mIsStatic = typeDeclaration->mStaticSpecifier != NULL; + mCurTypeDef->mIsAbstract = (typeDeclaration->mAbstractSpecifier != NULL) && (typeDeclaration->mAbstractSpecifier->GetToken() == BfToken_Abstract); mCurTypeDef->mIsDelegate = false; mCurTypeDef->mIsFunction = false; diff --git a/IDEHelper/Compiler/BfSystem.cpp b/IDEHelper/Compiler/BfSystem.cpp index 2e7c6ec9..737c823f 100644 --- a/IDEHelper/Compiler/BfSystem.cpp +++ b/IDEHelper/Compiler/BfSystem.cpp @@ -2093,6 +2093,7 @@ BfSystem::BfSystem() mEmptyAtom = GetAtom(""); mBfAtom = GetAtom("bf"); mGlobalsAtom = GetAtom("@"); + mHiddenAtom = GetAtom("?"); mTypeDot = NULL; if (gBfParserCache == NULL) @@ -2159,6 +2160,7 @@ BfSystem::~BfSystem() delete project; ReleaseAtom(mGlobalsAtom); + ReleaseAtom(mHiddenAtom); ReleaseAtom(mBfAtom); ReleaseAtom(mEmptyAtom); ProcessAtomGraveyard(); @@ -2729,7 +2731,8 @@ BfTypeDef* BfSystem::FindTypeDef(const BfAtomComposite& findName, int numGeneric partialStartEntryIdx = -1; } - if ((typeDef->mFullName == qualifiedFindName) && (CheckTypeDefReference(typeDef, project))) + if ((typeDef->mFullName == qualifiedFindName) && (CheckTypeDefReference(typeDef, project)) /*&& + ((allowGlobal) || (!typeDef->IsGlobalsContainer()))*/) { int curPri = curNamespacePri; if (typeDef->mGenericParamDefs.size() != numGenericArgs) diff --git a/IDEHelper/Compiler/BfSystem.h b/IDEHelper/Compiler/BfSystem.h index 9ad8755c..41920c72 100644 --- a/IDEHelper/Compiler/BfSystem.h +++ b/IDEHelper/Compiler/BfSystem.h @@ -1818,6 +1818,7 @@ public: Array mCompilers; BfAtom* mGlobalsAtom; + BfAtom* mHiddenAtom; BfAtom* mEmptyAtom; BfAtom* mBfAtom; CritSect mSystemLock; // long-lived, hold while compiling