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..7fecbc0800085e9296d3c63da3d08f889ee18968 |
--- /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 don't warn when xxxLAST constants are last. |
+enum GoodOne { |
+ kGoodOneInvalid = -1, |
+ kGoodOneRed, |
+ kGoodOneGreen, |
+ kGoodOneBlue, |
+ kGoodOneLast = kGoodOneBlue |
+}; |
+ |
+// We don't warn when xxx_LAST constants are last. |
+enum GoodTwo { |
+ GOOD_TWO_INVALID, |
+ GOOD_TWO_RED, |
+ GOOD_TWO_GREEN, |
+ GOOD_TWO_BLUE = 0xfffffffc, |
+ GOOD_TWO_LAST = GOOD_TWO_BLUE |
+}; |