1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00
Beef/IDEHelper/Compiler/BfResolvePass.h

91 lines
3 KiB
C
Raw Normal View History

2019-08-23 11:56:54 -07:00
#pragma once
#include "BfSystem.h"
2020-06-02 05:46:56 -07:00
#include "BfResolvedTypeUtils.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,
BfResolveType_GetResultString,
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
};
class BfResolvePassData
{
public:
BfResolveType mResolveType;
BfParser* mParser;
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;
2019-08-23 11:56:54 -07:00
BfSourceClassifier* mSourceClassifier;
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;
typedef Dictionary<BfParserData*, String> FoundSymbolReferencesParserDataMap;
FoundSymbolReferencesParserDataMap mFoundSymbolReferencesParserData;
//std::vector<BfIdentifierNode*> mSymbolReferenceIdentifiers;
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();
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
//void ReplaceIdentifiers();
};
NS_BF_END