brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 310e57e Raw
61 lines · cpp
1// RUN: %check_clang_tidy -std=c++20 %s modernize-loop-convert %t -- -- -I %S/Inputs/loop-convert2 3namespace std {4struct strong_ordering {5  int n;6  constexpr operator int() const { return n; }7  static const strong_ordering equal, greater, less;8};9constexpr strong_ordering strong_ordering::equal = {0};10constexpr strong_ordering strong_ordering::greater = {1};11constexpr strong_ordering strong_ordering::less = {-1};12} // namespace std13 14struct HasSpaceshipMem {15  typedef int value_type;16 17  struct iterator {18    value_type &operator*();19    const value_type &operator*() const;20    iterator &operator++();21    void insert(value_type);22    value_type X;23    constexpr auto operator<=>(const HasSpaceshipMem::iterator &) const = default;24  };25 26  iterator begin();27  iterator end();28};29 30struct OpEqOnly {31  typedef int value_type;32  struct iterator {33    value_type &operator*();34    const value_type &operator*() const;35    iterator &operator++();36    bool operator==(const iterator &other) const;37    void insert(value_type);38    value_type X;39  };40  iterator begin();41  iterator end();42};43 44void rewritten() {45  OpEqOnly Oeo;46  for (OpEqOnly::iterator It = Oeo.begin(), E = Oeo.end(); It != E; ++It) {47    (void)*It;48  }49  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead50  // CHECK-FIXES: for (int & It : Oeo) {51  // CHECK-FIXES-NEXT: (void)It;52 53  HasSpaceshipMem Hsm;54  for (HasSpaceshipMem::iterator It = Hsm.begin(), E = Hsm.end(); It != E; ++It) {55    (void)*It;56  }57  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead58  // CHECK-FIXES: for (int & It : Hsm) {59  // CHECK-FIXES-NEXT: (void)It;60}61