| // Protocol Buffers - Google's data interchange format |
| // Copyright 2023 Google LLC. All rights reserved. |
| // |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file or at |
| // https://developers.google.com/open-source/licenses/bsd |
| // LINT: LEGACY_NAMES |
| |
| // The names in this file are meant to test edge cases. |
| syntax = "proto3"; |
| |
| package enums; |
| |
| import "devtools/staticanalysis/pipeline/analyzers/proto_best_practices/proto/optouts.proto"; |
| |
| option (proto_best_practices.file_optouts) = { |
| categories: ENUM_DEFAULT_VALUE_NAME_CONFLICT |
| categories: ENUM_VALUE_NAMES |
| }; |
| |
| // This should result in an enum with these accessible values: |
| // - Unknown = 0 |
| // - Unrecognized = 0 |
| // - Foo = 1 |
| // - Bar = 2 |
| // - DifferentNameAlias = 2 |
| enum TestEnumWithDuplicateStrippedPrefixNames { |
| option allow_alias = true; |
| |
| UNKNOWN = 0; |
| TestEnumWithDuplicateStrippedPrefixNamesUNRECOGNIZED = 0; |
| |
| TestEnumWithDuplicateStrippedPrefixNames_FOO = 1; |
| TEST_ENUM_WITH_DUPLICATE_STRIPPED_PREFIX_NAMES_FOO = 1; |
| FOO = 1; |
| |
| TestEnumWithDuplicateStrippedPrefixNamesBAR = 2; |
| TEST_ENUM_WITH_DUPLICATE_STRIPPED_PREFIX_NAMESBar = 2; |
| BAR = 2; |
| TEST_ENUM_WITH_DUPLICATE_STRIPPED_PREFIX_NAMES_DIFFERENT_NAME_ALIAS = 2; |
| } |
| |
| // This should result in an enum with these accessible values: |
| // - Unknown = 0 |
| // - _2020 = 1 |
| // - _2021 = 2 |
| // - _2022 = 3 |
| enum TestEnumWithNumericNames { |
| TestEnumWithNumericNamesUNKNOWN = 0; |
| TestEnumWithNumericNames_2020 = 1; |
| TEST_ENUM_WITH_NUMERIC_NAMES_2021 = 2; |
| TEST_ENUM_WITH_NUMERIC_NAMES2022 = 3; |
| } |
| |
| // This should result in an enum with these accessible values: |
| // - Unknown = 0 |
| // - TestEnumValueNameSameAsEnum = 1 |
| enum TestEnumValueNameSameAsEnum { |
| TEST_ENUM_VALUE_NAME_SAME_AS_ENUM_UNKNOWN = 0; |
| TEST_ENUM_VALUE_NAME_SAME_AS_ENUM = 1; |
| } |
| |
| // Regression test for maps with nested enum as value. |
| message TestMapWithNestedEnum { |
| message InnerNested { |
| enum NestedEnum { |
| UNKNOWN = 0; |
| FOO = 1; |
| } |
| } |
| map<string, InnerNested.NestedEnum> string_map = 1; |
| } |