cmd/protoc-gen-go: refactor logic to be more compartmentalized

This CL makes no feature changes except to move code around.
The only change to the actual generated code is the placement of
the default constants and variables. They move because the new logic
generates all methods together, while previously the constants
were interspersed in-between.

Change-Id: I45932d5aeec5ba45180fb255ea17898beb6c3bd2
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/186878
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go b/internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go
index bfcd724..4f1975c 100644
--- a/internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go
@@ -64,6 +64,31 @@
 	unknownFields protoimpl.UnknownFields
 }
 
+const Default_GoogleMessage1_Field80 bool = false
+const Default_GoogleMessage1_Field81 bool = true
+const Default_GoogleMessage1_Field6 int32 = 0
+const Default_GoogleMessage1_Field59 bool = false
+const Default_GoogleMessage1_Field130 int32 = 0
+const Default_GoogleMessage1_Field12 bool = true
+const Default_GoogleMessage1_Field17 bool = true
+const Default_GoogleMessage1_Field13 bool = true
+const Default_GoogleMessage1_Field14 bool = true
+const Default_GoogleMessage1_Field104 int32 = 0
+const Default_GoogleMessage1_Field100 int32 = 0
+const Default_GoogleMessage1_Field101 int32 = 0
+const Default_GoogleMessage1_Field29 int32 = 0
+const Default_GoogleMessage1_Field30 bool = false
+const Default_GoogleMessage1_Field60 int32 = -1
+const Default_GoogleMessage1_Field271 int32 = -1
+const Default_GoogleMessage1_Field272 int32 = -1
+const Default_GoogleMessage1_Field23 int32 = 0
+const Default_GoogleMessage1_Field24 bool = false
+const Default_GoogleMessage1_Field25 int32 = 0
+const Default_GoogleMessage1_Field67 int32 = 0
+const Default_GoogleMessage1_Field128 int32 = 0
+const Default_GoogleMessage1_Field129 string = "xxxxxxxxxxxxxxxxxxxxx"
+const Default_GoogleMessage1_Field131 int32 = 0
+
 func (x *GoogleMessage1) Reset() {
 	*x = GoogleMessage1{}
 }
@@ -91,31 +116,6 @@
 	return file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescGZIP(), []int{0}
 }
 
-const Default_GoogleMessage1_Field80 bool = false
-const Default_GoogleMessage1_Field81 bool = true
-const Default_GoogleMessage1_Field6 int32 = 0
-const Default_GoogleMessage1_Field59 bool = false
-const Default_GoogleMessage1_Field130 int32 = 0
-const Default_GoogleMessage1_Field12 bool = true
-const Default_GoogleMessage1_Field17 bool = true
-const Default_GoogleMessage1_Field13 bool = true
-const Default_GoogleMessage1_Field14 bool = true
-const Default_GoogleMessage1_Field104 int32 = 0
-const Default_GoogleMessage1_Field100 int32 = 0
-const Default_GoogleMessage1_Field101 int32 = 0
-const Default_GoogleMessage1_Field29 int32 = 0
-const Default_GoogleMessage1_Field30 bool = false
-const Default_GoogleMessage1_Field60 int32 = -1
-const Default_GoogleMessage1_Field271 int32 = -1
-const Default_GoogleMessage1_Field272 int32 = -1
-const Default_GoogleMessage1_Field23 int32 = 0
-const Default_GoogleMessage1_Field24 bool = false
-const Default_GoogleMessage1_Field25 int32 = 0
-const Default_GoogleMessage1_Field67 int32 = 0
-const Default_GoogleMessage1_Field128 int32 = 0
-const Default_GoogleMessage1_Field129 string = "xxxxxxxxxxxxxxxxxxxxx"
-const Default_GoogleMessage1_Field131 int32 = 0
-
 func (x *GoogleMessage1) GetField1() string {
 	if x != nil && x.Field1 != nil {
 		return *x.Field1
@@ -429,6 +429,16 @@
 	unknownFields protoimpl.UnknownFields
 }
 
+const Default_GoogleMessage1SubMessage_Field1 int32 = 0
+const Default_GoogleMessage1SubMessage_Field2 int32 = 0
+const Default_GoogleMessage1SubMessage_Field3 int32 = 0
+const Default_GoogleMessage1SubMessage_Field12 bool = true
+const Default_GoogleMessage1SubMessage_Field19 int32 = 2
+const Default_GoogleMessage1SubMessage_Field20 bool = true
+const Default_GoogleMessage1SubMessage_Field28 bool = true
+const Default_GoogleMessage1SubMessage_Field23 bool = false
+const Default_GoogleMessage1SubMessage_Field206 bool = false
+
 func (x *GoogleMessage1SubMessage) Reset() {
 	*x = GoogleMessage1SubMessage{}
 }
@@ -456,16 +466,6 @@
 	return file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescGZIP(), []int{1}
 }
 
-const Default_GoogleMessage1SubMessage_Field1 int32 = 0
-const Default_GoogleMessage1SubMessage_Field2 int32 = 0
-const Default_GoogleMessage1SubMessage_Field3 int32 = 0
-const Default_GoogleMessage1SubMessage_Field12 bool = true
-const Default_GoogleMessage1SubMessage_Field19 int32 = 2
-const Default_GoogleMessage1SubMessage_Field20 bool = true
-const Default_GoogleMessage1SubMessage_Field28 bool = true
-const Default_GoogleMessage1SubMessage_Field23 bool = false
-const Default_GoogleMessage1SubMessage_Field206 bool = false
-
 func (x *GoogleMessage1SubMessage) GetField1() int32 {
 	if x != nil && x.Field1 != nil {
 		return *x.Field1
diff --git a/internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go b/internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go
index efa14bb..3d127a4 100644
--- a/internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go
@@ -53,6 +53,22 @@
 	unknownFields protoimpl.UnknownFields
 }
 
+const Default_GoogleMessage2_Field75 bool = false
+const Default_GoogleMessage2_Field21 int32 = 0
+const Default_GoogleMessage2_Field109 int32 = 0
+const Default_GoogleMessage2_Field210 int32 = 0
+const Default_GoogleMessage2_Field211 int32 = 0
+const Default_GoogleMessage2_Field212 int32 = 0
+const Default_GoogleMessage2_Field213 int32 = 0
+const Default_GoogleMessage2_Field216 int32 = 0
+const Default_GoogleMessage2_Field217 int32 = 0
+const Default_GoogleMessage2_Field218 int32 = 0
+const Default_GoogleMessage2_Field220 int32 = 0
+const Default_GoogleMessage2_Field221 int32 = 0
+const Default_GoogleMessage2_Field222 float32 = 0
+const Default_GoogleMessage2_Field205 bool = false
+const Default_GoogleMessage2_Field206 bool = false
+
 func (x *GoogleMessage2) Reset() {
 	*x = GoogleMessage2{}
 }
@@ -80,22 +96,6 @@
 	return file_datasets_google_message2_benchmark_message2_proto_rawDescGZIP(), []int{0}
 }
 
-const Default_GoogleMessage2_Field75 bool = false
-const Default_GoogleMessage2_Field21 int32 = 0
-const Default_GoogleMessage2_Field109 int32 = 0
-const Default_GoogleMessage2_Field210 int32 = 0
-const Default_GoogleMessage2_Field211 int32 = 0
-const Default_GoogleMessage2_Field212 int32 = 0
-const Default_GoogleMessage2_Field213 int32 = 0
-const Default_GoogleMessage2_Field216 int32 = 0
-const Default_GoogleMessage2_Field217 int32 = 0
-const Default_GoogleMessage2_Field218 int32 = 0
-const Default_GoogleMessage2_Field220 int32 = 0
-const Default_GoogleMessage2_Field221 int32 = 0
-const Default_GoogleMessage2_Field222 float32 = 0
-const Default_GoogleMessage2_Field205 bool = false
-const Default_GoogleMessage2_Field206 bool = false
-
 func (x *GoogleMessage2) GetField1() string {
 	if x != nil && x.Field1 != nil {
 		return *x.Field1
@@ -323,6 +323,10 @@
 	unknownFields protoimpl.UnknownFields
 }
 
+const Default_GoogleMessage2GroupedMessage_Field3 float32 = 0
+const Default_GoogleMessage2GroupedMessage_Field6 bool = true
+const Default_GoogleMessage2GroupedMessage_Field7 bool = false
+
 func (x *GoogleMessage2GroupedMessage) Reset() {
 	*x = GoogleMessage2GroupedMessage{}
 }
@@ -350,10 +354,6 @@
 	return file_datasets_google_message2_benchmark_message2_proto_rawDescGZIP(), []int{1}
 }
 
-const Default_GoogleMessage2GroupedMessage_Field3 float32 = 0
-const Default_GoogleMessage2GroupedMessage_Field6 bool = true
-const Default_GoogleMessage2GroupedMessage_Field7 bool = false
-
 func (x *GoogleMessage2GroupedMessage) GetField1() float32 {
 	if x != nil && x.Field1 != nil {
 		return *x.Field1
@@ -453,6 +453,8 @@
 	unknownFields protoimpl.UnknownFields
 }
 
+const Default_GoogleMessage2_Group1_Field20 int32 = 0
+
 func (x *GoogleMessage2_Group1) Reset() {
 	*x = GoogleMessage2_Group1{}
 }
@@ -480,8 +482,6 @@
 	return file_datasets_google_message2_benchmark_message2_proto_rawDescGZIP(), []int{0, 0}
 }
 
-const Default_GoogleMessage2_Group1_Field20 int32 = 0
-
 func (x *GoogleMessage2_Group1) GetField11() float32 {
 	if x != nil && x.Field11 != nil {
 		return *x.Field11
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index da84d37..a9fddef 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -333,6 +333,26 @@
 	unknownFields protoimpl.UnknownFields
 }
 
+const Default_TestAllTypes_DefaultInt32 int32 = 81
+const Default_TestAllTypes_DefaultInt64 int64 = 82
+const Default_TestAllTypes_DefaultUint32 uint32 = 83
+const Default_TestAllTypes_DefaultUint64 uint64 = 84
+const Default_TestAllTypes_DefaultSint32 int32 = -85
+const Default_TestAllTypes_DefaultSint64 int64 = 86
+const Default_TestAllTypes_DefaultFixed32 uint32 = 87
+const Default_TestAllTypes_DefaultFixed64 uint64 = 88
+const Default_TestAllTypes_DefaultSfixed32 int32 = 89
+const Default_TestAllTypes_DefaultSfixed64 int64 = -90
+const Default_TestAllTypes_DefaultFloat float32 = 91.5
+const Default_TestAllTypes_DefaultDouble float64 = 92000
+const Default_TestAllTypes_DefaultBool bool = true
+const Default_TestAllTypes_DefaultString string = "hello"
+
+var Default_TestAllTypes_DefaultBytes []byte = []byte("world")
+
+const Default_TestAllTypes_DefaultNestedEnum TestAllTypes_NestedEnum = TestAllTypes_BAR
+const Default_TestAllTypes_DefaultForeignEnum ForeignEnum = ForeignEnum_FOREIGN_BAR
+
 func (x *TestAllTypes) Reset() {
 	*x = TestAllTypes{}
 }
@@ -360,26 +380,6 @@
 	return file_test_test_proto_rawDescGZIP(), []int{0}
 }
 
-const Default_TestAllTypes_DefaultInt32 int32 = 81
-const Default_TestAllTypes_DefaultInt64 int64 = 82
-const Default_TestAllTypes_DefaultUint32 uint32 = 83
-const Default_TestAllTypes_DefaultUint64 uint64 = 84
-const Default_TestAllTypes_DefaultSint32 int32 = -85
-const Default_TestAllTypes_DefaultSint64 int64 = 86
-const Default_TestAllTypes_DefaultFixed32 uint32 = 87
-const Default_TestAllTypes_DefaultFixed64 uint64 = 88
-const Default_TestAllTypes_DefaultSfixed32 int32 = 89
-const Default_TestAllTypes_DefaultSfixed64 int64 = -90
-const Default_TestAllTypes_DefaultFloat float32 = 91.5
-const Default_TestAllTypes_DefaultDouble float64 = 92000
-const Default_TestAllTypes_DefaultBool bool = true
-const Default_TestAllTypes_DefaultString string = "hello"
-
-var Default_TestAllTypes_DefaultBytes []byte = []byte("world")
-
-const Default_TestAllTypes_DefaultNestedEnum TestAllTypes_NestedEnum = TestAllTypes_BAR
-const Default_TestAllTypes_DefaultForeignEnum ForeignEnum = ForeignEnum_FOREIGN_BAR
-
 func (x *TestAllTypes) GetOptionalInt32() int32 {
 	if x != nil && x.OptionalInt32 != nil {
 		return *x.OptionalInt32
@@ -1585,6 +1585,7 @@
 	}
 	return protoimpl.X.WeakNil("goproto.proto.test.weak.WeakImportMessage1")
 }
+
 func (x *TestWeak) GetWeakMessage2() protoiface.MessageV1 {
 	if x != nil {
 		v := x.XXX_weak[2]
@@ -1595,6 +1596,7 @@
 	}
 	return protoimpl.X.WeakNil("goproto.proto.test.weak.WeakImportMessage2")
 }
+
 func (x *TestWeak) SetWeakMessage1(v protoiface.MessageV1) {
 	if x.XXX_weak == nil {
 		x.XXX_weak = make(protoimpl.WeakFields)