Index: tools/clang/plugins/tests/enum_last_value_from_c.c |
diff --git a/tools/clang/plugins/tests/enum_last_value_from_c.c b/tools/clang/plugins/tests/enum_last_value_from_c.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7da59ce883ed4787861e18887a1e9c2367cf6a58 |
--- /dev/null |
+++ b/tools/clang/plugins/tests/enum_last_value_from_c.c |
@@ -0,0 +1,40 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// We warn when xxxLAST constants aren't last. |
+enum BadOne { |
+ kBadOneInvalid = -1, |
+ kBadOneRed, |
+ kBadOneGreen, |
+ kBadOneBlue, |
+ kBadOneLast = kBadOneGreen |
+}; |
+ |
+// We don't handle this case when called from C due to sign mismatch issues. |
+// No matter; we're not looking for this issue outside of C++. |
+enum FailOne { |
+ FAIL_ONE_INVALID, |
+ FAIL_ONE_RED, |
+ FAIL_ONE_GREEN, |
+ FAIL_ONE_BLUE = 0xfffffffc, |
+ FAIL_ONE_LAST = FAIL_ONE_GREEN |
+}; |
+ |
+// We dont warn when xxxLAST constants are last. |
Nico
2014/03/28 03:31:51
don't
|
+enum GoodOne { |
+ kGoodOneInvalid = -1, |
+ kGoodOneRed, |
+ kGoodOneGreen, |
+ kGoodOneBlue, |
+ kGoodOneLast = kGoodOneBlue |
+}; |
+ |
+// We dont warn when xxx_LAST constants are last. |
Nico
2014/03/28 03:31:51
don't
|
+enum GoodTwo { |
+ GOOD_TWO_INVALID, |
+ GOOD_TWO_RED, |
+ GOOD_TWO_GREEN, |
+ GOOD_TWO_BLUE = 0xfffffffc, |
+ GOOD_TWO_LAST = GOOD_TWO_BLUE |
+}; |