// Copyright 2018 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. syntax = "proto2"; package goproto.protoc.fieldnames; option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/fieldnames"; // Assorted edge cases in field name conflict resolution. // // Not all (or possibly any) of these behave in an easily-understood fashion. // This exists to demonstrate the current behavior and catch unintended // changes in it. message Message { // Various CamelCase conversions. optional string field_one = 1; optional string FieldTwo = 2; optional string fieldThree = 3; optional string field__four = 4; // Field names that conflict with standard methods on the message struct. optional string descriptor = 10; optional string marshal = 11; optional string unmarshal = 12; optional string proto_message = 13; // Field names that conflict with each other after CamelCasing. optional string CamelCase = 20; optional string CamelCase_ = 21; optional string camel_case = 22; // conflicts with 20, 21 optional string CamelCase__ = 23; // conflicts with 21, 21, renamed 22 // Field with a getter that conflicts with another field. optional string get_name = 30; optional string name = 31; // Oneof that conflicts with its first field: The oneof is renamed. oneof oneof_conflict_a { string OneofConflictA = 40; } // Oneof that conflicts with its second field: The field is renamed. oneof oneof_conflict_b { string oneof_no_conflict = 50; string OneofConflictB = 51; } // Oneof with a field name that conflicts with a nested message. oneof oneof_conflict_c { string oneof_message_conflict = 60; } message OneofMessageConflict {} }