// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  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

edition = "2023";

// Treat all fields as implicit present by default (proto3 behavior).
option features.field_presence = IMPLICIT;

// This file contains definitions that have different behavior in proto3.

// We don't put this in a package within proto2 because we need to make sure
// that the generated code doesn't depend on being in the proto2 namespace.
// In map_test_util.h we do "using namespace unittest = protobuf_unittest".
package proto3_unittest;

message TestProto3BytesMap {
  map<int32, bytes> map_bytes = 1;
  map<int32, string> map_string = 2;
}

message TestI32StrMap {
  map<int32, string> m_32_str = 1;
}
