Home | History | Annotate | Download | only in rewrite_scoped_refptr

Lines Matching full:clang

5 // This implements a Clang tool to rewrite all instances of
14 #include "clang/AST/ASTContext.h"
15 #include "clang/ASTMatchers/ASTMatchers.h"
16 #include "clang/ASTMatchers/ASTMatchersMacros.h"
17 #include "clang/ASTMatchers/ASTMatchFinder.h"
18 #include "clang/Basic/SourceManager.h"
19 #include "clang/Frontend/FrontendActions.h"
20 #include "clang/Lex/Lexer.h"
21 #include "clang/Tooling/CommonOptionsParser.h"
22 #include "clang/Tooling/Refactoring.h"
23 #include "clang/Tooling/Tooling.h"
27 using namespace clang::ast_matchers;
28 using clang::tooling::CommonOptionsParser;
29 using clang::tooling::Replacement;
30 using clang::tooling::Replacements;
33 namespace clang {
44 } // namespace clang
50 bool NeedsParens(const clang::Expr* expr) {
51 if (llvm::dyn_cast<clang::UnaryOperator>(expr) ||
52 llvm::dyn_cast<clang::BinaryOperator>(expr) ||
53 llvm::dyn_cast<clang::ConditionalOperator>(expr)) {
58 if (const clang::CXXOperatorCallExpr* op =
59 llvm::dyn_cast<clang::CXXOperatorCallExpr>(expr)) {
60 return op->getOperator() != clang::OO_Call &&
61 op->getOperator() != clang::OO_Subscript;
68 const clang::Expr* expr) {
69 clang::CharSourceRange range = clang::CharSourceRange::getTokenRange(
78 if (const clang::UnaryOperator* op =
79 llvm::dyn_cast<clang::UnaryOperator>(expr)) {
80 if (op->getOpcode() == clang::UO_Deref) {
81 const clang::Expr* const sub_expr =
83 clang::CharSourceRange sub_expr_range =
84 clang::CharSourceRange::getTokenRange(
89 std::string inner_text = clang::Lexer::getSourceText(
101 std::string text = clang::Lexer::getSourceText(
108 if (const clang::CXXBindTemporaryExpr* op =
109 llvm::dyn_cast<clang::CXXBindTemporaryExpr>(expr)) {
115 if (const clang::CXXOperatorCallExpr* op =
116 llvm::dyn_cast<clang::CXXOperatorCallExpr>(expr)) {
117 if (op->getOperator() == clang::OO_Star) {
139 clang::SourceLocation begin,
140 clang::SourceLocation end) {
141 clang::CharSourceRange range = clang::CharSourceRange::getTokenRange(
146 std::string text = clang::Lexer::getSourceText(
168 const clang::Expr* arg = result.Nodes.getNodeAs<clang::Expr>("arg");
186 const clang::DeclaratorDecl* const var_decl =
187 result.Nodes.getNodeAs<clang::DeclaratorDecl>("var");
190 const clang::TypeSourceInfo* tsi = var_decl->getTypeSourceInfo();
220 const clang::FunctionDecl* const function_decl =
221 result.Nodes.getNodeAs<clang::FunctionDecl>("fn");
228 const clang::VarDecl* const var_decl =
229 result.Nodes.getNodeAs<clang::VarDecl>("var");
234 for (clang::FunctionDecl* f : function_decl->redecls()) {
235 clang::SourceRange range = f->getReturnTypeSourceRange();
253 const clang::Expr* const expr = result.Nodes.getNodeAs<clang::Expr>("expr");
265 // TODO(dcheng): Clang tooling should do this itself.
271 clang::tooling::ClangTool tool(options.getCompilations(),
422 std::unique_ptr<clang::tooling::FrontendActionFactory> factory =
423 clang::tooling::newFrontendActionFactory(&match_finder);
428 // Serialization format is documented in tools/clang/scripts/run_tool.py