MCPcopy Create free account
hub / github.com/beefytech/Beef / VisitAutocompleteExteriorIdentifiers

Method VisitAutocompleteExteriorIdentifiers

IDEHelper/Compiler/BfCompiler.cpp:3891–3940  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3889}
3890
3891void BfCompiler::VisitAutocompleteExteriorIdentifiers()
3892{
3893 for (auto checkNode : mResolvePassData->mExteriorAutocompleteCheckNodes)
3894 {
3895 bool isUsingDirective = false;
3896 BfIdentifierNode* checkIdentifier = NULL;
3897 if (auto usingDirective = BfNodeDynCast<BfUsingDirective>(checkNode))
3898 {
3899 checkIdentifier = usingDirective->mNamespace;
3900 }
3901 else if (auto usingDirective = BfNodeDynCast<BfUsingModDirective>(checkNode))
3902 {
3903 if (usingDirective->mTypeRef != NULL)
3904 {
3905 BF_ASSERT(mContext->mScratchModule->mCurTypeInstance == NULL);
3906
3907 SetAndRestoreValue<BfTypeInstance*> prevCurTypeInstance(mContext->mScratchModule->mCurTypeInstance, NULL);
3908 SetAndRestoreValue<bool> prevIgnoreErrors(mContext->mScratchModule->mIgnoreErrors, true);
3909 mContext->mScratchModule->ResolveTypeRef(usingDirective->mTypeRef, NULL);
3910 if (mResolvePassData->mAutoComplete != NULL)
3911 mResolvePassData->mAutoComplete->CheckTypeRef(usingDirective->mTypeRef, false, isUsingDirective);
3912 continue;
3913 }
3914 }
3915 else
3916 checkIdentifier = BfNodeDynCast<BfIdentifierNode>(checkNode);
3917
3918 if (checkIdentifier == NULL)
3919 continue;
3920
3921 if (mResolvePassData->mAutoComplete != NULL)
3922 mResolvePassData->mAutoComplete->CheckIdentifier(checkIdentifier, false, isUsingDirective);
3923
3924 if (auto sourceClassifier = mResolvePassData->GetSourceClassifier(checkIdentifier))
3925 {
3926 if (isUsingDirective)
3927 {
3928 while (auto qualifiedNameNode = BfNodeDynCast<BfQualifiedNameNode>(checkIdentifier))
3929 {
3930 sourceClassifier->SetElementType(qualifiedNameNode->mRight, BfSourceElementType_Namespace);
3931 checkIdentifier = qualifiedNameNode->mLeft;
3932 }
3933
3934 if (checkIdentifier != NULL)
3935 sourceClassifier->SetElementType(checkIdentifier, BfSourceElementType_Namespace);
3936 }
3937 }
3938 }
3939 mResolvePassData->mExteriorAutocompleteCheckNodes.Clear();
3940}
3941
3942void BfCompiler::VisitSourceExteriorNodes()
3943{

Callers

nothing calls this directly

Calls 6

CheckTypeRefMethod · 0.80
CheckIdentifierMethod · 0.80
GetSourceClassifierMethod · 0.80
ResolveTypeRefMethod · 0.45
SetElementTypeMethod · 0.45
ClearMethod · 0.45

Tested by

no test coverage detected