diff --git a/.gitignore b/.gitignore index 86d16ab5..d05a24e8 100644 --- a/.gitignore +++ b/.gitignore @@ -34,9 +34,5 @@ .cache/ build* temp* -external/ +deps/ logs/ - -# vscode plugin -vscode-clice/dist/ -vscode-clice/node_modules/ diff --git a/include/AST/ParsedAST.h b/include/AST/ParsedAST.h index 98dd4de5..3705c8f5 100644 --- a/include/AST/ParsedAST.h +++ b/include/AST/ParsedAST.h @@ -5,15 +5,16 @@ namespace clice { struct ParsedAST { - clang::FileManager& fm; - clang::Preprocessor& pp; - clang::SourceManager& sm; clang::ASTContext& context; - clang::syntax::TokenBuffer tb; - clang::TranslationUnitDecl* tu; + clang::Preprocessor& preproc; + clang::FileManager& fileManager; + clang::SourceManager& sourceManager; + clang::syntax::TokenBuffer tokenBuffer; std::unique_ptr action; std::unique_ptr instance; + clang::TranslationUnitDecl* tuDecl; + static std::unique_ptr build(llvm::StringRef filename, llvm::StringRef content, std::vector& args, Preamble* preamble); }; diff --git a/src/AST/ParsedAST.cpp b/src/AST/ParsedAST.cpp index 5067aa27..95f7f88e 100644 --- a/src/AST/ParsedAST.cpp +++ b/src/AST/ParsedAST.cpp @@ -62,14 +62,15 @@ std::unique_ptr ParsedAST::build(llvm::StringRef filename, } auto result = new ParsedAST{ - .fm = instance->getFileManager(), - .pp = instance->getPreprocessor(), - .sm = instance->getSourceManager(), .context = instance->getASTContext(), - .tb = std::move(collector).consume(), - .tu = instance->getASTContext().getTranslationUnitDecl(), + .preproc = instance->getPreprocessor(), + .fileManager = instance->getFileManager(), + .sourceManager = instance->getSourceManager(), + .tokenBuffer = std::move(collector).consume(), .action = std::move(action), .instance = std::move(instance), + + .tuDecl = instance->getASTContext().getTranslationUnitDecl(), }; return std::unique_ptr{result}; diff --git a/src/Feature/SemanticTokens.cpp b/src/Feature/SemanticTokens.cpp index c3a18a96..1dd18973 100644 --- a/src/Feature/SemanticTokens.cpp +++ b/src/Feature/SemanticTokens.cpp @@ -14,16 +14,16 @@ class SemanticToken {}; class Highlighter : public clang::RecursiveASTVisitor { public: - Highlighter(ParsedAST& ast) : fm(ast.fm), pp(ast.pp), sm(ast.sm), context(ast.context), tb(ast.tb) {} + Highlighter(ParsedAST& ast) : fileManager(ast.fileManager), preproc(ast.preproc), sourceManager(ast.sourceManager), context(ast.context), tokenBuffer(ast.tokenBuffer) {} std::vector highlight(llvm::StringRef filepath) { std::vector result; - auto entry = fm.getFileRef(filepath); + auto entry = fileManager.getFileRef(filepath); if(auto error = entry.takeError()) { // TODO: } - auto fileID = sm.translateFile(entry.get()); + auto fileID = sourceManager.translateFile(entry.get()); this->fileID = fileID; this->result = &result; @@ -47,7 +47,7 @@ public: for(auto decl: node->decls()) { // we only need to highlight the token in main file. // so filter out the nodes which are in headers for better performance. - if(sm.isInFileID(decl->getLocation(), fileID)) { + if(sourceManager.isInFileID(decl->getLocation(), fileID)) { TraverseDecl(decl); } } @@ -147,11 +147,11 @@ public: } private: - clang::FileManager& fm; - clang::Preprocessor& pp; - clang::SourceManager& sm; + clang::FileManager& fileManager; + clang::Preprocessor& preproc; + clang::SourceManager& sourceManager; clang::ASTContext& context; - clang::syntax::TokenBuffer& tb; + clang::syntax::TokenBuffer& tokenBuffer; clang::FileID fileID; std::vector* result; diff --git a/src/main.cpp b/src/main.cpp index c7a7ede9..76f67636 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,6 +23,6 @@ int main(int argc, const char** argv) { "-Wall", }; auto preamble = clice::Preamble::build("main.cpp", source, args); - auto ast = clice::ParsedAST::build("main.cpp", source, args, preamble.get()); - ast->tu->dump(); + auto parsedAST = clice::ParsedAST::build("main.cpp", source, args, preamble.get()); + parsedAST->tuDecl->dump(); }