Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Side by Side Diff: tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp

Issue 1765783002: rewrite_to_chrome_style: Rewrite references to members through the class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/clang/rewrite_to_chrome_style/tests/methods-expected.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Changes Blink-style names to Chrome-style names. Currently transforms: 5 // Changes Blink-style names to Chrome-style names. Currently transforms:
6 // fields: 6 // fields:
7 // int m_operationCount => int operation_count_ 7 // int m_operationCount => int operation_count_
8 // variables (including parameters): 8 // variables (including parameters):
9 // int mySuperVariable => int my_super_variable 9 // int mySuperVariable => int my_super_variable
10 // constants: 10 // constants:
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 376
377 template <typename Type> 377 template <typename Type>
378 struct TargetNodeTraits; 378 struct TargetNodeTraits;
379 379
380 template <> 380 template <>
381 struct TargetNodeTraits<clang::NamedDecl> { 381 struct TargetNodeTraits<clang::NamedDecl> {
382 static const char kName[]; 382 static const char kName[];
383 static clang::SourceLocation GetLoc(const clang::NamedDecl& decl) { 383 static clang::SourceLocation GetLoc(const clang::NamedDecl& decl) {
384 return decl.getLocation(); 384 return decl.getLocation();
385 } 385 }
386 static const char* GetType() { return "NamedDecl"; }
386 }; 387 };
387 const char TargetNodeTraits<clang::NamedDecl>::kName[] = "decl"; 388 const char TargetNodeTraits<clang::NamedDecl>::kName[] = "decl";
388 389
389 template <> 390 template <>
390 struct TargetNodeTraits<clang::MemberExpr> { 391 struct TargetNodeTraits<clang::MemberExpr> {
391 static const char kName[]; 392 static const char kName[];
392 static clang::SourceLocation GetLoc(const clang::MemberExpr& expr) { 393 static clang::SourceLocation GetLoc(const clang::MemberExpr& expr) {
393 return expr.getMemberLoc(); 394 return expr.getMemberLoc();
394 } 395 }
396 static const char* GetType() { return "MemberExpr"; }
395 }; 397 };
396 const char TargetNodeTraits<clang::MemberExpr>::kName[] = "expr"; 398 const char TargetNodeTraits<clang::MemberExpr>::kName[] = "expr";
397 399
398 template <> 400 template <>
399 struct TargetNodeTraits<clang::DeclRefExpr> { 401 struct TargetNodeTraits<clang::DeclRefExpr> {
400 static const char kName[]; 402 static const char kName[];
401 static clang::SourceLocation GetLoc(const clang::DeclRefExpr& expr) { 403 static clang::SourceLocation GetLoc(const clang::DeclRefExpr& expr) {
402 return expr.getLocation(); 404 return expr.getLocation();
403 } 405 }
406 static const char* GetType() { return "DeclRefExpr"; }
404 }; 407 };
405 const char TargetNodeTraits<clang::DeclRefExpr>::kName[] = "expr"; 408 const char TargetNodeTraits<clang::DeclRefExpr>::kName[] = "expr";
406 409
407 template <> 410 template <>
408 struct TargetNodeTraits<clang::CXXCtorInitializer> { 411 struct TargetNodeTraits<clang::CXXCtorInitializer> {
409 static const char kName[]; 412 static const char kName[];
410 static clang::SourceLocation GetLoc(const clang::CXXCtorInitializer& init) { 413 static clang::SourceLocation GetLoc(const clang::CXXCtorInitializer& init) {
411 assert(init.isWritten()); 414 assert(init.isWritten());
412 return init.getSourceLocation(); 415 return init.getSourceLocation();
413 } 416 }
417 static const char* GetType() { return "CXXCtorInitializer"; }
414 }; 418 };
415 const char TargetNodeTraits<clang::CXXCtorInitializer>::kName[] = "initializer"; 419 const char TargetNodeTraits<clang::CXXCtorInitializer>::kName[] = "initializer";
416 420
417 template <typename DeclNode, typename TargetNode> 421 template <typename DeclNode, typename TargetNode>
418 class RewriterBase : public MatchFinder::MatchCallback { 422 class RewriterBase : public MatchFinder::MatchCallback {
419 public: 423 public:
420 explicit RewriterBase(Replacements* replacements) 424 explicit RewriterBase(Replacements* replacements)
421 : replacements_(replacements) {} 425 : replacements_(replacements) {}
422 426
423 void run(const MatchFinder::MatchResult& result) override { 427 void run(const MatchFinder::MatchResult& result) override {
(...skipping 29 matching lines...) Expand all
453 457
454 private: 458 private:
455 Replacements* const replacements_; 459 Replacements* const replacements_;
456 std::unordered_map<std::string, std::string> replacement_names_; 460 std::unordered_map<std::string, std::string> replacement_names_;
457 }; 461 };
458 462
459 using FieldDeclRewriter = RewriterBase<clang::FieldDecl, clang::NamedDecl>; 463 using FieldDeclRewriter = RewriterBase<clang::FieldDecl, clang::NamedDecl>;
460 using VarDeclRewriter = RewriterBase<clang::VarDecl, clang::NamedDecl>; 464 using VarDeclRewriter = RewriterBase<clang::VarDecl, clang::NamedDecl>;
461 using MemberRewriter = RewriterBase<clang::FieldDecl, clang::MemberExpr>; 465 using MemberRewriter = RewriterBase<clang::FieldDecl, clang::MemberExpr>;
462 using DeclRefRewriter = RewriterBase<clang::VarDecl, clang::DeclRefExpr>; 466 using DeclRefRewriter = RewriterBase<clang::VarDecl, clang::DeclRefExpr>;
467 using FieldDeclRefRewriter = RewriterBase<clang::FieldDecl, clang::DeclRefExpr>;
463 using FunctionDeclRewriter = 468 using FunctionDeclRewriter =
464 RewriterBase<clang::FunctionDecl, clang::NamedDecl>; 469 RewriterBase<clang::FunctionDecl, clang::NamedDecl>;
465 using FunctionRefRewriter = 470 using FunctionRefRewriter =
466 RewriterBase<clang::FunctionDecl, clang::DeclRefExpr>; 471 RewriterBase<clang::FunctionDecl, clang::DeclRefExpr>;
467 using ConstructorInitializerRewriter = 472 using ConstructorInitializerRewriter =
468 RewriterBase<clang::FieldDecl, clang::CXXCtorInitializer>; 473 RewriterBase<clang::FieldDecl, clang::CXXCtorInitializer>;
469 474
470 using MethodDeclRewriter = RewriterBase<clang::CXXMethodDecl, clang::NamedDecl>; 475 using MethodDeclRewriter = RewriterBase<clang::CXXMethodDecl, clang::NamedDecl>;
471 using MethodRefRewriter = 476 using MethodRefRewriter =
472 RewriterBase<clang::CXXMethodDecl, clang::DeclRefExpr>; 477 RewriterBase<clang::CXXMethodDecl, clang::DeclRefExpr>;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 557
553 MemberRewriter member_rewriter(&replacements); 558 MemberRewriter member_rewriter(&replacements);
554 match_finder.addMatcher(member_matcher, &member_rewriter); 559 match_finder.addMatcher(member_matcher, &member_rewriter);
555 560
556 DeclRefRewriter decl_ref_rewriter(&replacements); 561 DeclRefRewriter decl_ref_rewriter(&replacements);
557 match_finder.addMatcher(decl_ref_matcher, &decl_ref_rewriter); 562 match_finder.addMatcher(decl_ref_matcher, &decl_ref_rewriter);
558 563
559 EnumConstantDeclRefRewriter enum_member_ref_rewriter(&replacements); 564 EnumConstantDeclRefRewriter enum_member_ref_rewriter(&replacements);
560 match_finder.addMatcher(enum_member_ref_matcher, &enum_member_ref_rewriter); 565 match_finder.addMatcher(enum_member_ref_matcher, &enum_member_ref_rewriter);
561 566
567 // Member references in a non-member context ========
568 // Given
569 // struct S {
570 // typedef int U::*UnspecifiedBoolType;
571 // operator UnspecifiedBoolType() { return s_ ? &U::s_ : 0; }
572 // int s_;
573 // };
574 // matches |&U::s_| but not |s_|.
575 auto member_ref_matcher = id(
576 "expr",
577 declRefExpr(
578 to(field_decl_matcher),
579 // Needed to avoid matching member references in functions (which will
580 // be an ancestor of the member reference) synthesized by the
581 // compiler, such as a synthesized copy constructor.
582 // This skips explicitly defaulted functions as well, but that's OK:
583 // there's nothing interesting to rewrite in those either.
584 unless(hasAncestor(functionDecl(internal_hack::isDefaulted())))));
dcheng 2016/03/04 01:41:55 I think we might not need this, cause the things y
danakj 2016/03/04 01:55:51 I couldn't think of it offhand, but then I thought
585
586 FieldDeclRefRewriter member_ref_rewriter(&replacements);
587 match_finder.addMatcher(member_ref_matcher, &member_ref_rewriter);
588
562 // Non-method function declarations ======== 589 // Non-method function declarations ========
563 // Given 590 // Given
564 // void f(); 591 // void f();
565 // struct S { 592 // struct S {
566 // void g(); 593 // void g();
567 // }; 594 // };
568 // matches |f| but not |g|. 595 // matches |f| but not |g|.
569 auto function_decl_matcher = id( 596 auto function_decl_matcher = id(
570 "decl", 597 "decl",
571 functionDecl( 598 functionDecl(
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 for (const auto& r : replacements) { 739 for (const auto& r : replacements) {
713 std::string replacement_text = r.getReplacementText().str(); 740 std::string replacement_text = r.getReplacementText().str();
714 std::replace(replacement_text.begin(), replacement_text.end(), '\n', '\0'); 741 std::replace(replacement_text.begin(), replacement_text.end(), '\n', '\0');
715 llvm::outs() << "r:::" << r.getFilePath() << ":::" << r.getOffset() 742 llvm::outs() << "r:::" << r.getFilePath() << ":::" << r.getOffset()
716 << ":::" << r.getLength() << ":::" << replacement_text << "\n"; 743 << ":::" << r.getLength() << ":::" << replacement_text << "\n";
717 } 744 }
718 llvm::outs() << "==== END EDITS ====\n"; 745 llvm::outs() << "==== END EDITS ====\n";
719 746
720 return 0; 747 return 0;
721 } 748 }
OLDNEW
« no previous file with comments | « no previous file | tools/clang/rewrite_to_chrome_style/tests/methods-expected.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698