all: unify protoV1.ExtensionDesc and proto.ExtensionType

Change protoV1.ExtensionDesc to directly implement ExtensionType
rather than delegating to one.

Unify the previous types protoiface.ExtensionDescV1 and
filetype.Extension in impl.ExtensionInfo. The protoV1.ExtensionDesc
type becomes an alias to ExtensionInfo.

This gives us:

  - Just one implementation of ExtensionType.
  - Generated foopb.E_Ext vars are canonical ExtensionTypes.
  - Generated foopb.E_Ext vars are also v1.ExtensionDescs for backwards
    compatibility.
  - Conversion between legacy and modern representations happens
    transparently when lazily initializing an ExtensionInfo.

Overall, a simplification for users of generated code, since they can
mostly ignore the ExtensionDesc/ExtentionType distinction and use the
same value in either the old or new API.

This is change 3/5 in a series of commits changing protoV1.ExtensionDesc
to directly implement protoreflect.ExtensionType.

1. [v2] Add protoimpl.ExtensionInfo as an alias for
   protoiface.ExtensionDescV1.

2. [v1] Update references to protoimpl.ExtensionInfo to use
   protoiface.ExtensionInfo.

3. [v2] Create protoimpl.ExtensionInfo (an alias to a new type in
   the impl package) and remove protoiface.ExtensionDescV1.

4. [v1] Remove unneeded explicit conversions between ExtensionDesc and
   ExtensionType (since the former now directly implements the latter).

5. [v2] Remove stub conversion functions.

Change-Id: I96ee890541ec11b2412e1a72c9d7b96e4d7f66b4
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/189563
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/encoding/testprotos/pb2/test.pb.go b/encoding/testprotos/pb2/test.pb.go
index 1925bc4..2565c02 100644
--- a/encoding/testprotos/pb2/test.pb.go
+++ b/encoding/testprotos/pb2/test.pb.go
@@ -1442,7 +1442,7 @@
 	return 0
 }
 
-var file_pb2_test_proto_extDescs = []protoiface.ExtensionDescV1{
+var file_pb2_test_proto_extTypes = []protoimpl.ExtensionInfo{
 	{
 		ExtendedType:  (*Extensions)(nil),
 		ExtensionType: (*bool)(nil),
@@ -1616,55 +1616,55 @@
 // Extension fields to Extensions.
 var (
 	// optional bool opt_ext_bool = 21;
-	E_OptExtBool = &file_pb2_test_proto_extDescs[0]
+	E_OptExtBool = &file_pb2_test_proto_extTypes[0]
 	// optional string opt_ext_string = 22;
-	E_OptExtString = &file_pb2_test_proto_extDescs[1]
+	E_OptExtString = &file_pb2_test_proto_extTypes[1]
 	// optional pb2.Enum opt_ext_enum = 23;
-	E_OptExtEnum = &file_pb2_test_proto_extDescs[2]
+	E_OptExtEnum = &file_pb2_test_proto_extTypes[2]
 	// optional pb2.Nested opt_ext_nested = 24;
-	E_OptExtNested = &file_pb2_test_proto_extDescs[3]
+	E_OptExtNested = &file_pb2_test_proto_extTypes[3]
 	// optional pb2.PartialRequired opt_ext_partial = 25;
-	E_OptExtPartial = &file_pb2_test_proto_extDescs[4]
+	E_OptExtPartial = &file_pb2_test_proto_extTypes[4]
 	// repeated fixed32 rpt_ext_fixed32 = 31;
-	E_RptExtFixed32 = &file_pb2_test_proto_extDescs[5]
+	E_RptExtFixed32 = &file_pb2_test_proto_extTypes[5]
 	// repeated pb2.Enum rpt_ext_enum = 32;
-	E_RptExtEnum = &file_pb2_test_proto_extDescs[6]
+	E_RptExtEnum = &file_pb2_test_proto_extTypes[6]
 	// repeated pb2.Nested rpt_ext_nested = 33;
-	E_RptExtNested = &file_pb2_test_proto_extDescs[7]
+	E_RptExtNested = &file_pb2_test_proto_extTypes[7]
 	// optional bool opt_ext_bool = 51;
-	E_ExtensionsContainer_OptExtBool = &file_pb2_test_proto_extDescs[9]
+	E_ExtensionsContainer_OptExtBool = &file_pb2_test_proto_extTypes[9]
 	// optional string opt_ext_string = 52;
-	E_ExtensionsContainer_OptExtString = &file_pb2_test_proto_extDescs[10]
+	E_ExtensionsContainer_OptExtString = &file_pb2_test_proto_extTypes[10]
 	// optional pb2.Enum opt_ext_enum = 53;
-	E_ExtensionsContainer_OptExtEnum = &file_pb2_test_proto_extDescs[11]
+	E_ExtensionsContainer_OptExtEnum = &file_pb2_test_proto_extTypes[11]
 	// optional pb2.Nested opt_ext_nested = 54;
-	E_ExtensionsContainer_OptExtNested = &file_pb2_test_proto_extDescs[12]
+	E_ExtensionsContainer_OptExtNested = &file_pb2_test_proto_extTypes[12]
 	// optional pb2.PartialRequired opt_ext_partial = 55;
-	E_ExtensionsContainer_OptExtPartial = &file_pb2_test_proto_extDescs[13]
+	E_ExtensionsContainer_OptExtPartial = &file_pb2_test_proto_extTypes[13]
 	// repeated string rpt_ext_string = 61;
-	E_ExtensionsContainer_RptExtString = &file_pb2_test_proto_extDescs[14]
+	E_ExtensionsContainer_RptExtString = &file_pb2_test_proto_extTypes[14]
 	// repeated pb2.Enum rpt_ext_enum = 62;
-	E_ExtensionsContainer_RptExtEnum = &file_pb2_test_proto_extDescs[15]
+	E_ExtensionsContainer_RptExtEnum = &file_pb2_test_proto_extTypes[15]
 	// repeated pb2.Nested rpt_ext_nested = 63;
-	E_ExtensionsContainer_RptExtNested = &file_pb2_test_proto_extDescs[16]
+	E_ExtensionsContainer_RptExtNested = &file_pb2_test_proto_extTypes[16]
 )
 
 // Extension fields to MessageSet.
 var (
 	// optional pb2.FakeMessageSetExtension message_set_extension = 50;
-	E_MessageSetExtension = &file_pb2_test_proto_extDescs[8]
+	E_MessageSetExtension = &file_pb2_test_proto_extTypes[8]
 	// optional pb2.MessageSetExtension message_set_extension = 10;
-	E_MessageSetExtension_MessageSetExtension = &file_pb2_test_proto_extDescs[17]
+	E_MessageSetExtension_MessageSetExtension = &file_pb2_test_proto_extTypes[17]
 	// optional pb2.MessageSetExtension not_message_set_extension = 20;
-	E_MessageSetExtension_NotMessageSetExtension = &file_pb2_test_proto_extDescs[18]
+	E_MessageSetExtension_NotMessageSetExtension = &file_pb2_test_proto_extTypes[18]
 	// optional pb2.Nested ext_nested = 30;
-	E_MessageSetExtension_ExtNested = &file_pb2_test_proto_extDescs[19]
+	E_MessageSetExtension_ExtNested = &file_pb2_test_proto_extTypes[19]
 )
 
 // Extension fields to FakeMessageSet.
 var (
 	// optional pb2.FakeMessageSetExtension message_set_extension = 10;
-	E_FakeMessageSetExtension_MessageSetExtension = &file_pb2_test_proto_extDescs[20]
+	E_FakeMessageSetExtension_MessageSetExtension = &file_pb2_test_proto_extTypes[20]
 )
 
 var File_pb2_test_proto protoreflect.FileDescriptor
@@ -2406,7 +2406,7 @@
 		DependencyIndexes: file_pb2_test_proto_depIdxs,
 		EnumInfos:         file_pb2_test_proto_enumTypes,
 		MessageInfos:      file_pb2_test_proto_msgTypes,
-		LegacyExtensions:  file_pb2_test_proto_extDescs,
+		ExtensionInfos:    file_pb2_test_proto_extTypes,
 	}.Build()
 	File_pb2_test_proto = out.File
 	file_pb2_test_proto_rawDesc = nil