Mercurial > hg > CbC > CbC_llvm
comparison clang-tools-extra/test/clang-reorder-fields/FieldDependencyWarning.cpp @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 // RUN: clang-reorder-fields -record-name bar::Foo -fields-order y,z,c,x %s -- 2>&1 | FileCheck --check-prefix=CHECK-MESSAGES %s | |
2 // FIXME: clang-reorder-fields should provide -verify mode to make writing these checks | |
3 // easier and more accurate, for now we follow clang-tidy's approach. | |
4 | |
5 namespace bar { | |
6 | |
7 struct Dummy { | |
8 Dummy(int x, char c) : x(x), c(c) {} | |
9 int x; | |
10 char c; | |
11 }; | |
12 | |
13 class Foo { | |
14 public: | |
15 Foo(int x, double y, char cin); | |
16 Foo(int nx); | |
17 Foo(); | |
18 int x; | |
19 double y; | |
20 char c; | |
21 Dummy z; | |
22 }; | |
23 | |
24 static char bar(char c) { | |
25 return c + 1; | |
26 } | |
27 | |
28 Foo::Foo() : x(), y(), c(), z(0, 'a') {} | |
29 | |
30 Foo::Foo(int x, double y, char cin) : | |
31 x(x), | |
32 y(y), | |
33 c(cin), | |
34 z(this->x, bar(c)) | |
35 // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: reordering field x after z makes x uninitialized when used in init expression | |
36 // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: reordering field c after z makes c uninitialized when used in init expression | |
37 {} | |
38 | |
39 Foo::Foo(int nx) : | |
40 x(nx), | |
41 y(x), | |
42 c(0), | |
43 z(bar(bar(x)), c) | |
44 // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: reordering field x after y makes x uninitialized when used in init expression | |
45 // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: reordering field x after z makes x uninitialized when used in init expression | |
46 // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: reordering field c after z makes c uninitialized when used in init expression | |
47 {} | |
48 | |
49 } // namespace bar | |
50 | |
51 int main() { | |
52 bar::Foo F(5, 12.8, 'c'); | |
53 return 0; | |
54 } |