aboutsummaryrefslogtreecommitdiff
path: root/protoc-gen-go/testdata/my_test/test.proto
blob: af69c47f4daf5711c383440aed9f922ff6d2f64e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Go support for Protocol Buffers - Google's data interchange format
//
// Copyright 2010 The Go Authors.  All rights reserved.
// https://github.com/golang/protobuf
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

package my.test;  // dotted package name

//import "imp.proto";
import "multi/multi1.proto";  // unused import

enum HatType {
  // deliberately skipping 0
  FEDORA = 1;
  FEZ = 2;
}

// This enum represents days of the week.
enum Days {
  option allow_alias = true;

  MONDAY = 1;
  TUESDAY = 2;
  LUNDI = 1;  // same value as MONDAY
}

// This is a message that might be sent somewhere.
message Request {
  enum Color {
    RED = 0;
    GREEN = 1;
    BLUE = 2;
  }
  repeated int64 key = 1;
//  optional imp.ImportedMessage imported_message = 2;
  optional Color hue = 3; // no default
  optional HatType hat = 4 [default=FEDORA];
//  optional imp.ImportedMessage.Owner owner = 6;
  optional float deadline = 7 [default=inf];
  optional group SomeGroup = 8 {
    optional int32 group_field = 9;
  }

  // These foreign types are in imp2.proto,
  // which is publicly imported by imp.proto.
//  optional imp.PubliclyImportedMessage pub = 10;
//  optional imp.PubliclyImportedEnum pub_enum = 13 [default=HAIR];


  // This is a map field. It will generate map[int32]string.
  map<int32, string> name_mapping = 14;
  // This is a map field whose value type is a message.
  map<sint64, Reply> msg_mapping = 15;

  optional int32 reset = 12;
}

message Reply {
  message Entry {
    required int64 key_that_needs_1234camel_CasIng = 1;
    optional int64 value = 2 [default=7];
    optional int64 _my_field_name_2 = 3;
    enum Game {
      FOOTBALL = 1;
      TENNIS = 2;
    }
  }
  repeated Entry found = 1;
  repeated int32 compact_keys = 2 [packed=true];
  extensions 100 to max;
}

message OtherBase {
  optional string name = 1;
  extensions 100 to max;
}

message ReplyExtensions {
  extend Reply {
    optional double time = 101;
    optional ReplyExtensions carrot = 105;
  }
  extend OtherBase {
    optional ReplyExtensions donut = 101;
  }
}

message OtherReplyExtensions {
  optional int32 key = 1;
}

// top-level extension
extend Reply {
  optional string tag = 103;
  optional OtherReplyExtensions donut = 106;
//  optional imp.ImportedMessage elephant = 107;  // extend with message from another file.
}

message OldReply {
  // Extensions will be encoded in MessageSet wire format.
  option message_set_wire_format = true;
  extensions 100 to max;
}