|
|
|
// 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;
|
|
|
|
}
|