1*b687fddaSAlexander Shaposhnikov // RUN: clang-reorder-fields -record-name bar::Derived -fields-order z,y %s -- 2>&1 | FileCheck --check-prefix=CHECK-MESSAGES %s 2*b687fddaSAlexander Shaposhnikov // FIXME: clang-reorder-fields should provide -verify mode to make writing these checks 3*b687fddaSAlexander Shaposhnikov // easier and more accurate, for now we follow clang-tidy's approach. 4*b687fddaSAlexander Shaposhnikov 5*b687fddaSAlexander Shaposhnikov namespace bar { 6*b687fddaSAlexander Shaposhnikov struct Base { 7*b687fddaSAlexander Shaposhnikov int x; 8*b687fddaSAlexander Shaposhnikov int p; 9*b687fddaSAlexander Shaposhnikov }; 10*b687fddaSAlexander Shaposhnikov 11*b687fddaSAlexander Shaposhnikov class Derived : public Base { 12*b687fddaSAlexander Shaposhnikov public: 13*b687fddaSAlexander Shaposhnikov Derived(long ny); 14*b687fddaSAlexander Shaposhnikov Derived(char nz); 15*b687fddaSAlexander Shaposhnikov private: 16*b687fddaSAlexander Shaposhnikov long y; 17*b687fddaSAlexander Shaposhnikov char z; 18*b687fddaSAlexander Shaposhnikov }; 19*b687fddaSAlexander Shaposhnikov Derived(long ny)20*b687fddaSAlexander ShaposhnikovDerived::Derived(long ny) : 21*b687fddaSAlexander Shaposhnikov Base(), 22*b687fddaSAlexander Shaposhnikov y(ny), 23*b687fddaSAlexander Shaposhnikov z(static_cast<char>(y)) 24*b687fddaSAlexander Shaposhnikov // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: reordering field y after z makes y uninitialized when used in init expression 25*b687fddaSAlexander Shaposhnikov {} 26*b687fddaSAlexander Shaposhnikov Derived(char nz)27*b687fddaSAlexander ShaposhnikovDerived::Derived(char nz) : 28*b687fddaSAlexander Shaposhnikov Base(), 29*b687fddaSAlexander Shaposhnikov y(nz), 30*b687fddaSAlexander Shaposhnikov // Check that base class fields are correctly ignored in reordering checks 31*b687fddaSAlexander Shaposhnikov // x has field index 1 and so would improperly warn if this wasn't the case since the command for this file swaps field indexes 1 and 2 32*b687fddaSAlexander Shaposhnikov z(x) 33*b687fddaSAlexander Shaposhnikov // CHECK-MESSAGES-NOT: :[[@LINE-1]]:3: warning: reordering field x after z makes x uninitialized when used in init expression 34*b687fddaSAlexander Shaposhnikov {} 35*b687fddaSAlexander Shaposhnikov 36*b687fddaSAlexander Shaposhnikov } // namespace bar 37