chromium/tools/clang/plugins/tests/enum_max_value.cpp

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Don't warn for unscoped enums (for now).
enum UnscopedEnumIgnored {
  kMaxValue = -1,
  kOops = 0,
};

// Warn if kMaxValue doesn't have the highest enumerator value.
enum class NotHighest {
  kNegative = -1,
  kZero = 0,
  kMaxValue = kNegative,
};

// Also warn if kMaxValue has a unique value: it should share the highest value
// to avoid polluting switch statements.
enum class MaxValueIsUnique {
  kNegative = -1,
  kZero = 0,
  kMaxValue,
};

// No warning if everything is right.
enum class CorrectMaxValue {
  kNegative = -1,
  kZero = 0,
  kMaxValue = kZero,
};

// No warning if the enum does not contain kMaxValue.
enum class NoMaxValue {
  kNegative = -1,
  kZero = 0,
  kNotMaxValue = 1,
};