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

syntax = "proto3";

package upb.test;

import "google/protobuf/descriptor.proto";

extend google.protobuf.MessageOptions {
  optional string my_option = 51235;
}

message MyMessage3 {
  option (my_option) = "Hello world!";
}

message TestMessage3 {
  optional int32 i32 = 1;
  repeated int32 r_i32 = 2;
  optional string str = 3;
  repeated string r_str = 4;
  optional TestMessage3 msg = 5;
  repeated TestMessage3 r_msg = 6;
}

// See the InitialFieldOneOf test in test_mini_table_oneof.cc.
message TestOneOfInitialField {
  oneof oneof_field {
    int32 a = 1;
    uint32 b = 2;
  }

  float c = 3;
}
