// 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 = "proto3";

package google.golang.org;
option go_package = "google.golang.org/protobuf/internal/testprotos/legacy";

// This file imports other files generated from a build of protoc-gen-go
// locked to a specific version. For all imports, they were built using
// Go v1.11 and protoc v3.5.1. This package is used to test compatibility with
// checked in generated code that cannot easily change.
// As such, there should never be a need to update these generated files.
//
// The specific version of protoc-gen-go used is encoded in the file path:
//	$NAME.$VERSION-$COMMIT_DATE-$COMMIT_HASH/test.proto
//
// To avoid a dependency on the v1 module, we perform the following
// import path replacement to all generated .pb.go files:
//	"github.com/golang/protobuf/proto" => "google.golang.org/protobuf/internal/protolegacy"

// The oldest supported version of protoc-gen-go is 2fc053c5,
// which finished adding descriptor methods to all protobuf types.
import "legacy/proto2.v0.0.0-20160225-2fc053c5/test.proto";
import "legacy/proto3.v0.0.0-20160225-2fc053c5/test.proto";
// Changes from 20160225 to 20160519:
//	* Nothing noteworthy to generated code
import "legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.proto";
import "legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.proto";
// Changes from 20160519 to 20180125:
//	* Removed ExtensionMap method and XXX_extensions field from messages
//	* Added embedded proto.XXX_InternalExtensions field to messages
//	* Added proto.ExtensionDesc.Filename field
//	* Added registration for file descriptor
//	* Added Get accessor methods for all fields in proto3 messages
//	* Proto3 repeated primitives are packed by default
import "legacy/proto2.v1.0.0-20180125-92554152/test.proto";
import "legacy/proto3.v1.0.0-20180125-92554152/test.proto";
// Changes from 20180125 to 20180430:
//	* Added XXX_unrecognized field to proto3 messages
//	* Added XXX_NoUnkeyedLiteral field to messages
//	* Added XXX_sizecache field to messages
//	* Added XXX_Unmarshal method to messages
//	* Added XXX_Marshal method to messages
//	* Added XXX_Merge method to messages
//	* Added XXX_Size method to messages
//	* Added XXX_DiscardUnknown method to messages
//	* Added dependency on proto.InternalMessageInfo for table-driven logic
//	* Added registration for map types
import "legacy/proto2.v1.1.0-20180430-b4deda09/test.proto";
import "legacy/proto3.v1.1.0-20180430-b4deda09/test.proto";
// Changes from 20180430 to 20180814:
//	* Added "proto3" struct tag to all fields in proto3 messages
import "legacy/proto2.v1.2.0-20180814-aa810b61/test.proto";
import "legacy/proto3.v1.2.0-20180814-aa810b61/test.proto";
// Changes from 20180814 to 20181126:
//	* Changed the XXX_OneofFuncs method to XXX_OneofWrappers
//	* Various syntactical changes to make the output more consistent
import "legacy/proto2.v1.2.1-20181126-8d0c54c1/test.proto";
import "legacy/proto3.v1.2.1-20181126-8d0c54c1/test.proto";

message Legacy {
	google.golang.org.proto2_20160225.Message f1 = 1;
	google.golang.org.proto3_20160225.Message f2 = 2;
	google.golang.org.proto2_20160519.Message f3 = 3;
	google.golang.org.proto3_20160519.Message f4 = 4;
	google.golang.org.proto2_20180125.Message f5 = 5;
	google.golang.org.proto3_20180125.Message f6 = 6;
	google.golang.org.proto2_20180430.Message f7 = 7;
	google.golang.org.proto3_20180430.Message f8 = 8;
	google.golang.org.proto2_20180814.Message f9 = 9;
	google.golang.org.proto3_20180814.Message f10 = 10;
	google.golang.org.proto2_20181126.Message f11 = 11;
	google.golang.org.proto3_20181126.Message f12 = 12;
}
