brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · 34a39d2 Raw
212 lines · cpp
1//===- CallbacksCompoundAssignOperator.cpp --------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "CallbacksCommon.h"10 11TEST(RecursiveASTVisitor, StmtCallbacks_TraverseCompoundAssignOperator) {12  class RecordingVisitor : public RecordingVisitorBase<RecordingVisitor> {13  public:14    RecordingVisitor(ShouldTraversePostOrder ShouldTraversePostOrderValue)15        : RecordingVisitorBase(ShouldTraversePostOrderValue) {}16 17    bool TraverseCompoundAssignOperator(CompoundAssignOperator *CAO) {18      recordCallback(__func__, CAO, [&]() {19        RecordingVisitorBase::TraverseCompoundAssignOperator(CAO);20      });21      return true;22    }23 24    bool WalkUpFromStmt(Stmt *S) {25      recordCallback(__func__, S,26                     [&]() { RecordingVisitorBase::WalkUpFromStmt(S); });27      return true;28    }29  };30 31  StringRef Code = R"cpp(32void test(int a) {33  1;34  a += 2;35  3;36}37)cpp";38 39  EXPECT_TRUE(visitorCallbackLogEqual(40      RecordingVisitor(ShouldTraversePostOrder::No), Code,41      R"txt(42WalkUpFromStmt CompoundStmt43WalkUpFromStmt IntegerLiteral(1)44TraverseCompoundAssignOperator CompoundAssignOperator(+=)45  WalkUpFromStmt CompoundAssignOperator(+=)46  WalkUpFromStmt DeclRefExpr(a)47  WalkUpFromStmt IntegerLiteral(2)48WalkUpFromStmt IntegerLiteral(3)49)txt"));50 51  EXPECT_TRUE(visitorCallbackLogEqual(52      RecordingVisitor(ShouldTraversePostOrder::Yes), Code,53      R"txt(54WalkUpFromStmt IntegerLiteral(1)55TraverseCompoundAssignOperator CompoundAssignOperator(+=)56  WalkUpFromStmt DeclRefExpr(a)57  WalkUpFromStmt IntegerLiteral(2)58  WalkUpFromStmt CompoundAssignOperator(+=)59WalkUpFromStmt IntegerLiteral(3)60WalkUpFromStmt CompoundStmt61)txt"));62}63 64TEST(65    RecursiveASTVisitor,66    StmtCallbacks_TraverseCompoundAssignOperator_WalkUpFromCompoundAssignOperator) {67  class RecordingVisitor : public RecordingVisitorBase<RecordingVisitor> {68  public:69    RecordingVisitor(ShouldTraversePostOrder ShouldTraversePostOrderValue)70        : RecordingVisitorBase(ShouldTraversePostOrderValue) {}71 72    bool TraverseCompoundAssignOperator(CompoundAssignOperator *CAO) {73      recordCallback(__func__, CAO, [&]() {74        RecordingVisitorBase::TraverseCompoundAssignOperator(CAO);75      });76      return true;77    }78 79    bool WalkUpFromStmt(Stmt *S) {80      recordCallback(__func__, S,81                     [&]() { RecordingVisitorBase::WalkUpFromStmt(S); });82      return true;83    }84 85    bool WalkUpFromExpr(Expr *E) {86      recordCallback(__func__, E,87                     [&]() { RecordingVisitorBase::WalkUpFromExpr(E); });88      return true;89    }90 91    bool WalkUpFromCompoundAssignOperator(CompoundAssignOperator *CAO) {92      recordCallback(__func__, CAO, [&]() {93        RecordingVisitorBase::WalkUpFromCompoundAssignOperator(CAO);94      });95      return true;96    }97  };98 99  StringRef Code = R"cpp(100void test(int a) {101  1;102  a += 2;103  3;104}105)cpp";106 107  EXPECT_TRUE(visitorCallbackLogEqual(108      RecordingVisitor(ShouldTraversePostOrder::No), Code,109      R"txt(110WalkUpFromStmt CompoundStmt111WalkUpFromExpr IntegerLiteral(1)112  WalkUpFromStmt IntegerLiteral(1)113TraverseCompoundAssignOperator CompoundAssignOperator(+=)114  WalkUpFromCompoundAssignOperator CompoundAssignOperator(+=)115    WalkUpFromExpr CompoundAssignOperator(+=)116      WalkUpFromStmt CompoundAssignOperator(+=)117  WalkUpFromExpr DeclRefExpr(a)118    WalkUpFromStmt DeclRefExpr(a)119  WalkUpFromExpr IntegerLiteral(2)120    WalkUpFromStmt IntegerLiteral(2)121WalkUpFromExpr IntegerLiteral(3)122  WalkUpFromStmt IntegerLiteral(3)123)txt"));124 125  EXPECT_TRUE(visitorCallbackLogEqual(126      RecordingVisitor(ShouldTraversePostOrder::Yes), Code,127      R"txt(128WalkUpFromExpr IntegerLiteral(1)129  WalkUpFromStmt IntegerLiteral(1)130TraverseCompoundAssignOperator CompoundAssignOperator(+=)131  WalkUpFromExpr DeclRefExpr(a)132    WalkUpFromStmt DeclRefExpr(a)133  WalkUpFromExpr IntegerLiteral(2)134    WalkUpFromStmt IntegerLiteral(2)135  WalkUpFromCompoundAssignOperator CompoundAssignOperator(+=)136    WalkUpFromExpr CompoundAssignOperator(+=)137      WalkUpFromStmt CompoundAssignOperator(+=)138WalkUpFromExpr IntegerLiteral(3)139  WalkUpFromStmt IntegerLiteral(3)140WalkUpFromStmt CompoundStmt141)txt"));142}143 144TEST(RecursiveASTVisitor, StmtCallbacks_WalkUpFromCompoundAssignOperator) {145  class RecordingVisitor : public RecordingVisitorBase<RecordingVisitor> {146  public:147    RecordingVisitor(ShouldTraversePostOrder ShouldTraversePostOrderValue)148        : RecordingVisitorBase(ShouldTraversePostOrderValue) {}149 150    bool WalkUpFromStmt(Stmt *S) {151      recordCallback(__func__, S,152                     [&]() { RecordingVisitorBase::WalkUpFromStmt(S); });153      return true;154    }155 156    bool WalkUpFromExpr(Expr *E) {157      recordCallback(__func__, E,158                     [&]() { RecordingVisitorBase::WalkUpFromExpr(E); });159      return true;160    }161 162    bool WalkUpFromCompoundAssignOperator(CompoundAssignOperator *CAO) {163      recordCallback(__func__, CAO, [&]() {164        RecordingVisitorBase::WalkUpFromCompoundAssignOperator(CAO);165      });166      return true;167    }168  };169 170  StringRef Code = R"cpp(171void test(int a) {172  1;173  a += 2;174  3;175}176)cpp";177 178  EXPECT_TRUE(visitorCallbackLogEqual(179      RecordingVisitor(ShouldTraversePostOrder::No), Code,180      R"txt(181WalkUpFromStmt CompoundStmt182WalkUpFromExpr IntegerLiteral(1)183  WalkUpFromStmt IntegerLiteral(1)184WalkUpFromCompoundAssignOperator CompoundAssignOperator(+=)185  WalkUpFromExpr CompoundAssignOperator(+=)186    WalkUpFromStmt CompoundAssignOperator(+=)187WalkUpFromExpr DeclRefExpr(a)188  WalkUpFromStmt DeclRefExpr(a)189WalkUpFromExpr IntegerLiteral(2)190  WalkUpFromStmt IntegerLiteral(2)191WalkUpFromExpr IntegerLiteral(3)192  WalkUpFromStmt IntegerLiteral(3)193)txt"));194 195  EXPECT_TRUE(visitorCallbackLogEqual(196      RecordingVisitor(ShouldTraversePostOrder::Yes), Code,197      R"txt(198WalkUpFromExpr IntegerLiteral(1)199  WalkUpFromStmt IntegerLiteral(1)200WalkUpFromExpr DeclRefExpr(a)201  WalkUpFromStmt DeclRefExpr(a)202WalkUpFromExpr IntegerLiteral(2)203  WalkUpFromStmt IntegerLiteral(2)204WalkUpFromCompoundAssignOperator CompoundAssignOperator(+=)205  WalkUpFromExpr CompoundAssignOperator(+=)206    WalkUpFromStmt CompoundAssignOperator(+=)207WalkUpFromExpr IntegerLiteral(3)208  WalkUpFromStmt IntegerLiteral(3)209WalkUpFromStmt CompoundStmt210)txt"));211}212