2019-08-23 11:56:54 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "BfSystem.h"
|
2020-06-02 05:46:56 -07:00
|
|
|
#include "BfResolvedTypeUtils.h"
|
2022-04-16 06:27:54 -07:00
|
|
|
#include "BfSourceClassifier.h"
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
NS_BF_BEGIN
|
|
|
|
|
|
|
|
enum BfResolveType
|
|
|
|
{
|
|
|
|
BfResolveType_None,
|
|
|
|
BfResolveType_Classify,
|
|
|
|
BfResolveType_ClassifyFullRefresh,
|
|
|
|
BfResolveType_Autocomplete,
|
|
|
|
BfResolveType_Autocomplete_HighPri,
|
|
|
|
BfResolveType_GoToDefinition,
|
|
|
|
BfResolveType_GetSymbolInfo,
|
|
|
|
BfResolveType_RenameSymbol,
|
|
|
|
BfResolveType_ShowFileSymbolReferences,
|
|
|
|
BfResolveType_GetNavigationData,
|
|
|
|
BfResolveType_GetCurrentLocation,
|
|
|
|
BfResolveType_GetFixits,
|
|
|
|
BfResolveType_GetTypeDefList,
|
|
|
|
BfResolveType_GetTypeDefInto,
|
2019-12-24 13:13:04 -08:00
|
|
|
BfResolveType_GetResultString,
|
2022-02-21 18:32:23 -08:00
|
|
|
BfResolveType_VerifyTypeName
|
2019-08-23 11:56:54 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
class BfLocalVariable;
|
|
|
|
|
|
|
|
enum BfGetSymbolReferenceKind
|
|
|
|
{
|
|
|
|
BfGetSymbolReferenceKind_None,
|
|
|
|
BfGetSymbolReferenceKind_Local,
|
|
|
|
BfGetSymbolReferenceKind_Method,
|
|
|
|
BfGetSymbolReferenceKind_Field,
|
|
|
|
BfGetSymbolReferenceKind_Property,
|
|
|
|
BfGetSymbolReferenceKind_Type,
|
|
|
|
BfGetSymbolReferenceKind_TypeGenericParam,
|
2020-05-31 07:12:17 -07:00
|
|
|
BfGetSymbolReferenceKind_MethodGenericParam,
|
|
|
|
BfGetSymbolReferenceKind_Namespace
|
2019-08-23 11:56:54 -07:00
|
|
|
};
|
|
|
|
|
2022-04-16 06:27:54 -07:00
|
|
|
class BfEmitEmbedEntry
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int mCursorIdx;
|
|
|
|
int mRevision;
|
|
|
|
BfParser* mParser;
|
|
|
|
Array<BfSourceClassifier::CharData> mCharData;
|
|
|
|
|
|
|
|
public:
|
|
|
|
BfEmitEmbedEntry()
|
|
|
|
{
|
|
|
|
mCursorIdx = -1;
|
|
|
|
mRevision = -1;
|
|
|
|
mParser = NULL;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
class BfResolvePassData
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
BfResolveType mResolveType;
|
|
|
|
|
2022-04-16 06:27:54 -07:00
|
|
|
Array<BfParser*> mParsers;
|
2019-08-23 11:56:54 -07:00
|
|
|
BfAutoComplete* mAutoComplete;
|
|
|
|
Array<BfTypeDef*> mAutoCompleteTempTypes; // Contains multiple values when we have nested types
|
2020-06-02 05:46:56 -07:00
|
|
|
Dictionary<BfTypeDef*, BfStaticSearch> mStaticSearchMap;
|
2022-04-16 06:27:54 -07:00
|
|
|
Dictionary<BfTypeDef*, BfInternalAccessSet> mInternalAccessMap;
|
2019-08-23 11:56:54 -07:00
|
|
|
Array<BfAstNode*> mExteriorAutocompleteCheckNodes;
|
|
|
|
|
|
|
|
BfGetSymbolReferenceKind mGetSymbolReferenceKind;
|
|
|
|
String mQueuedReplaceTypeDef;
|
2020-05-31 07:12:17 -07:00
|
|
|
BfTypeDef* mSymbolReferenceTypeDef;
|
|
|
|
String mQueuedSymbolReferenceNamespace;
|
|
|
|
BfAtomComposite mSymbolReferenceNamespace;
|
2019-08-23 11:56:54 -07:00
|
|
|
int mSymbolReferenceLocalIdx;
|
|
|
|
int mSymbolReferenceFieldIdx;
|
|
|
|
int mSymbolReferenceMethodIdx;
|
|
|
|
int mSymbolReferencePropertyIdx;
|
|
|
|
int mSymbolMethodGenericParamIdx;
|
|
|
|
int mSymbolTypeGenericParamIdx;
|
2022-04-16 06:27:54 -07:00
|
|
|
bool mIsClassifying;
|
|
|
|
bool mHasCursorIdx;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
typedef Dictionary<BfParserData*, String> FoundSymbolReferencesParserDataMap;
|
|
|
|
FoundSymbolReferencesParserDataMap mFoundSymbolReferencesParserData;
|
|
|
|
//std::vector<BfIdentifierNode*> mSymbolReferenceIdentifiers;
|
|
|
|
|
2022-04-16 06:27:54 -07:00
|
|
|
Dictionary<String, BfEmitEmbedEntry> mEmitEmbedEntries;
|
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
public:
|
|
|
|
void RecordReplaceNode(BfParserData* parser, int srcStart, int srcLen);
|
|
|
|
void RecordReplaceNode(BfAstNode* node);
|
2020-05-31 07:12:17 -07:00
|
|
|
BfAstNode* FindBaseNode(BfAstNode* node);
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
public:
|
|
|
|
BfResolvePassData();
|
2022-04-16 06:27:54 -07:00
|
|
|
~BfResolvePassData();
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
void HandleLocalReference(BfIdentifierNode* identifier, BfTypeDef* typeDef, BfMethodDef* methodDef, int localVarIdx);
|
|
|
|
void HandleLocalReference(BfIdentifierNode* identifier, BfIdentifierNode* origNameNode, BfTypeDef* typeDef, BfMethodDef* methodDef, int localVarIdx);
|
|
|
|
void HandleTypeGenericParam(BfAstNode* node, BfTypeDef* typeDef, int genericParamIdx);
|
|
|
|
void HandleMethodGenericParam(BfAstNode* node, BfTypeDef* typeDef, BfMethodDef* methodDef, int genericParamIdx);
|
|
|
|
void HandleMethodReference(BfAstNode* node, BfTypeDef* typeDef, BfMethodDef* methodDef);
|
|
|
|
void HandleFieldReference(BfAstNode* node, BfTypeDef* typeDef, BfFieldDef* fieldDef);
|
|
|
|
void HandlePropertyReference(BfAstNode* node, BfTypeDef* typeDef, BfPropertyDef* propDef);
|
|
|
|
void HandleTypeReference(BfAstNode* node, BfTypeDef* typeDef);
|
2020-05-31 07:12:17 -07:00
|
|
|
void HandleNamespaceReference(BfAstNode* node, const BfAtomComposite& namespaceName);
|
2019-08-23 11:56:54 -07:00
|
|
|
|
2022-04-16 06:27:54 -07:00
|
|
|
BfSourceClassifier* GetSourceClassifier(BfAstNode* astNode);
|
|
|
|
BfSourceClassifier* GetSourceClassifier(BfParser* parser);
|
2019-08-23 11:56:54 -07:00
|
|
|
//void ReplaceIdentifiers();
|
|
|
|
};
|
|
|
|
|
|
|
|
NS_BF_END
|