reflect/protoreflect: drop the ProtoEnum type
Drop the protoreflect.ProtoEnum type (containing a single method
returning a protoreflect.Enum) and make generated enum types
directly implement protoreflect.Enum instead.
Messages have a two-level type split (ProtoMessage and Message) to
minimize conflicts between reflection methods and field names. Enums
need no such split, since enums do not have fields and therefore have
no source of conflicts.
Change-Id: I2b6222e9404253e6bfef2217859e1b760ffcd29b
Reviewed-on: https://go-review.googlesource.com/c/156902
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/cmd/protoc-gen-go/internal_gengo/reflect.go b/cmd/protoc-gen-go/internal_gengo/reflect.go
index 4cc1089..69de0df 100644
--- a/cmd/protoc-gen-go/internal_gengo/reflect.go
+++ b/cmd/protoc-gen-go/internal_gengo/reflect.go
@@ -191,7 +191,7 @@
for i, enum := range f.allEnums {
g.P(prototypePackage.Ident("GoEnum"), "(")
g.P(enumDescsVar, "[", i, "].Reference(),")
- g.P("func(_ ", protoreflectPackage.Ident("EnumType"), ", n ", protoreflectPackage.Ident("EnumNumber"), ") ", protoreflectPackage.Ident("ProtoEnum"), " {")
+ g.P("func(_ ", protoreflectPackage.Ident("EnumType"), ", n ", protoreflectPackage.Ident("EnumNumber"), ") ", protoreflectPackage.Ident("Enum"), " {")
g.P("return ", enum.GoIdent, "(n)")
g.P("},")
g.P("),")
@@ -352,19 +352,12 @@
return
}
- shadowType := shadowTypeName(enum.GoIdent)
- g.P("type ", shadowType, " ", enum.GoIdent)
- g.P()
-
idx := f.allEnumsByPtr[enum]
typesVar := enumTypesVarName(f)
- g.P("func (e ", enum.GoIdent, ") ProtoReflect() ", protoreflectPackage.Ident("Enum"), " {")
- g.P("return (", shadowType, ")(e)")
- g.P("}")
- g.P("func (e ", shadowType, ") Type() ", protoreflectPackage.Ident("EnumType"), " {")
+ g.P("func (e ", enum.GoIdent, ") Type() ", protoreflectPackage.Ident("EnumType"), " {")
g.P("return ", typesVar, "[", idx, "]")
g.P("}")
- g.P("func (e ", shadowType, ") Number() ", protoreflectPackage.Ident("EnumNumber"), " {")
+ g.P("func (e ", enum.GoIdent, ") Number() ", protoreflectPackage.Ident("EnumNumber"), " {")
g.P("return ", protoreflectPackage.Ident("EnumNumber"), "(e)")
g.P("}")
}
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
index ef72ffd..ddba63c 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
@@ -22,15 +22,10 @@
AnnotationsTestEnum_ANNOTATIONS_TEST_ENUM_VALUE AnnotationsTestEnum = 0
)
-type xxx_AnnotationsTestEnum AnnotationsTestEnum
-
-func (e AnnotationsTestEnum) ProtoReflect() protoreflect.Enum {
- return (xxx_AnnotationsTestEnum)(e)
-}
-func (e xxx_AnnotationsTestEnum) Type() protoreflect.EnumType {
+func (e AnnotationsTestEnum) Type() protoreflect.EnumType {
return xxx_Annotations_ProtoFile_EnumTypes[0]
}
-func (e xxx_AnnotationsTestEnum) Number() protoreflect.EnumNumber {
+func (e AnnotationsTestEnum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -167,7 +162,7 @@
var xxx_Annotations_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Annotations_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return AnnotationsTestEnum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
index ae3d74b..b981bae 100644
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
@@ -21,15 +21,10 @@
DeprecatedEnum_DEPRECATED DeprecatedEnum = 0 // Deprecated: Do not use.
)
-type xxx_DeprecatedEnum DeprecatedEnum
-
-func (e DeprecatedEnum) ProtoReflect() protoreflect.Enum {
- return (xxx_DeprecatedEnum)(e)
-}
-func (e xxx_DeprecatedEnum) Type() protoreflect.EnumType {
+func (e DeprecatedEnum) Type() protoreflect.EnumType {
return xxx_Deprecated_ProtoFile_EnumTypes[0]
}
-func (e xxx_DeprecatedEnum) Number() protoreflect.EnumNumber {
+func (e DeprecatedEnum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -153,7 +148,7 @@
var xxx_Deprecated_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Deprecated_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return DeprecatedEnum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
index 2a948e1..fc1c914 100644
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
@@ -24,15 +24,10 @@
Enum_ZERO Enum = 0
)
-type xxx_Enum Enum
-
-func (e Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum)(e)
-}
-func (e xxx_Enum) Type() protoreflect.EnumType {
+func (e Enum) Type() protoreflect.EnumType {
return xxx_Ext_ProtoFile_EnumTypes[0]
}
-func (e xxx_Enum) Number() protoreflect.EnumNumber {
+func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -1058,7 +1053,7 @@
var xxx_Ext_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Ext_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
index aa8b177..550921b 100644
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
@@ -23,15 +23,10 @@
Enum_ZERO Enum = 0
)
-type xxx_Enum Enum
-
-func (e Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum)(e)
-}
-func (e xxx_Enum) Type() protoreflect.EnumType {
+func (e Enum) Type() protoreflect.EnumType {
return xxx_Ext3_ProtoFile_EnumTypes[0]
}
-func (e xxx_Enum) Number() protoreflect.EnumNumber {
+func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -523,7 +518,7 @@
var xxx_Ext3_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Ext3_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
index 3e83c85..87b3229 100644
--- a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
@@ -28,15 +28,10 @@
E_ZERO E = 0
)
-type xxx_E E
-
-func (e E) ProtoReflect() protoreflect.Enum {
- return (xxx_E)(e)
-}
-func (e xxx_E) Type() protoreflect.EnumType {
+func (e E) Type() protoreflect.EnumType {
return xxx_A_ProtoFile_EnumTypes[0]
}
-func (e xxx_E) Number() protoreflect.EnumNumber {
+func (e E) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -77,15 +72,10 @@
M_M_ZERO M_Subenum = 0
)
-type xxx_M_Subenum M_Subenum
-
-func (e M_Subenum) ProtoReflect() protoreflect.Enum {
- return (xxx_M_Subenum)(e)
-}
-func (e xxx_M_Subenum) Type() protoreflect.EnumType {
+func (e M_Subenum) Type() protoreflect.EnumType {
return xxx_A_ProtoFile_EnumTypes[1]
}
-func (e xxx_M_Subenum) Number() protoreflect.EnumNumber {
+func (e M_Subenum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -126,15 +116,10 @@
M_Submessage_M_SUBMESSAGE_ZERO M_Submessage_Submessage_Subenum = 0
)
-type xxx_M_Submessage_Submessage_Subenum M_Submessage_Submessage_Subenum
-
-func (e M_Submessage_Submessage_Subenum) ProtoReflect() protoreflect.Enum {
- return (xxx_M_Submessage_Submessage_Subenum)(e)
-}
-func (e xxx_M_Submessage_Submessage_Subenum) Type() protoreflect.EnumType {
+func (e M_Submessage_Submessage_Subenum) Type() protoreflect.EnumType {
return xxx_A_ProtoFile_EnumTypes[2]
}
-func (e xxx_M_Submessage_Submessage_Subenum) Number() protoreflect.EnumNumber {
+func (e M_Submessage_Submessage_Subenum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -491,19 +476,19 @@
var xxx_A_ProtoFile_EnumTypes = [3]protoreflect.EnumType{
prototype.GoEnum(
xxx_A_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return E(n)
},
),
prototype.GoEnum(
xxx_A_ProtoFile_EnumDescs[1].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return M_Subenum(n)
},
),
prototype.GoEnum(
xxx_A_ProtoFile_EnumDescs[2].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return M_Submessage_Submessage_Subenum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
index 91da206..1cc319c 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
@@ -22,15 +22,10 @@
E1_E1_ZERO E1 = 0
)
-type xxx_E1 E1
-
-func (e E1) ProtoReflect() protoreflect.Enum {
- return (xxx_E1)(e)
-}
-func (e xxx_E1) Type() protoreflect.EnumType {
+func (e E1) Type() protoreflect.EnumType {
return xxx_M1_ProtoFile_EnumTypes[0]
}
-func (e xxx_E1) Number() protoreflect.EnumNumber {
+func (e E1) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -201,7 +196,7 @@
var xxx_M1_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_M1_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return E1(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
index 6bfdcee..b1f2540 100644
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
+++ b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
@@ -22,15 +22,10 @@
Enum_ZERO Enum = 0
)
-type xxx_Enum Enum
-
-func (e Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum)(e)
-}
-func (e xxx_Enum) Type() protoreflect.EnumType {
+func (e Enum) Type() protoreflect.EnumType {
return xxx_Nopackage_ProtoFile_EnumTypes[0]
}
-func (e xxx_Enum) Number() protoreflect.EnumNumber {
+func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -174,7 +169,7 @@
var xxx_Nopackage_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Nopackage_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
index f5d0dd4..7e70607 100644
--- a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
@@ -26,15 +26,10 @@
EnumType1_TWO EnumType1 = 2
)
-type xxx_EnumType1 EnumType1
-
-func (e EnumType1) ProtoReflect() protoreflect.Enum {
- return (xxx_EnumType1)(e)
-}
-func (e xxx_EnumType1) Type() protoreflect.EnumType {
+func (e EnumType1) Type() protoreflect.EnumType {
return xxx_Enum_ProtoFile_EnumTypes[0]
}
-func (e xxx_EnumType1) Number() protoreflect.EnumNumber {
+func (e EnumType1) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -78,15 +73,10 @@
EnumType2_duplicate2 EnumType2 = 1
)
-type xxx_EnumType2 EnumType2
-
-func (e EnumType2) ProtoReflect() protoreflect.Enum {
- return (xxx_EnumType2)(e)
-}
-func (e xxx_EnumType2) Type() protoreflect.EnumType {
+func (e EnumType2) Type() protoreflect.EnumType {
return xxx_Enum_ProtoFile_EnumTypes[1]
}
-func (e xxx_EnumType2) Number() protoreflect.EnumNumber {
+func (e EnumType2) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -131,15 +121,10 @@
EnumContainerMessage1_NESTED_1A_VALUE EnumContainerMessage1_NestedEnumType1A = 0
)
-type xxx_EnumContainerMessage1_NestedEnumType1A EnumContainerMessage1_NestedEnumType1A
-
-func (e EnumContainerMessage1_NestedEnumType1A) ProtoReflect() protoreflect.Enum {
- return (xxx_EnumContainerMessage1_NestedEnumType1A)(e)
-}
-func (e xxx_EnumContainerMessage1_NestedEnumType1A) Type() protoreflect.EnumType {
+func (e EnumContainerMessage1_NestedEnumType1A) Type() protoreflect.EnumType {
return xxx_Enum_ProtoFile_EnumTypes[2]
}
-func (e xxx_EnumContainerMessage1_NestedEnumType1A) Number() protoreflect.EnumNumber {
+func (e EnumContainerMessage1_NestedEnumType1A) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -180,15 +165,10 @@
EnumContainerMessage1_NESTED_1B_VALUE EnumContainerMessage1_NestedEnumType1B = 0
)
-type xxx_EnumContainerMessage1_NestedEnumType1B EnumContainerMessage1_NestedEnumType1B
-
-func (e EnumContainerMessage1_NestedEnumType1B) ProtoReflect() protoreflect.Enum {
- return (xxx_EnumContainerMessage1_NestedEnumType1B)(e)
-}
-func (e xxx_EnumContainerMessage1_NestedEnumType1B) Type() protoreflect.EnumType {
+func (e EnumContainerMessage1_NestedEnumType1B) Type() protoreflect.EnumType {
return xxx_Enum_ProtoFile_EnumTypes[3]
}
-func (e xxx_EnumContainerMessage1_NestedEnumType1B) Number() protoreflect.EnumNumber {
+func (e EnumContainerMessage1_NestedEnumType1B) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -231,15 +211,10 @@
EnumContainerMessage1_EnumContainerMessage2_NESTED_2A_VALUE EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A = 0
)
-type xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A
-
-func (e EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) ProtoReflect() protoreflect.Enum {
- return (xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A)(e)
-}
-func (e xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Type() protoreflect.EnumType {
+func (e EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Type() protoreflect.EnumType {
return xxx_Enum_ProtoFile_EnumTypes[4]
}
-func (e xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Number() protoreflect.EnumNumber {
+func (e EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -280,15 +255,10 @@
EnumContainerMessage1_EnumContainerMessage2_NESTED_2B_VALUE EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B = 0
)
-type xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B
-
-func (e EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) ProtoReflect() protoreflect.Enum {
- return (xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B)(e)
-}
-func (e xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Type() protoreflect.EnumType {
+func (e EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Type() protoreflect.EnumType {
return xxx_Enum_ProtoFile_EnumTypes[5]
}
-func (e xxx_EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Number() protoreflect.EnumNumber {
+func (e EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -509,37 +479,37 @@
var xxx_Enum_ProtoFile_EnumTypes = [6]protoreflect.EnumType{
prototype.GoEnum(
xxx_Enum_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return EnumType1(n)
},
),
prototype.GoEnum(
xxx_Enum_ProtoFile_EnumDescs[1].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return EnumType2(n)
},
),
prototype.GoEnum(
xxx_Enum_ProtoFile_EnumDescs[2].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return EnumContainerMessage1_NestedEnumType1A(n)
},
),
prototype.GoEnum(
xxx_Enum_ProtoFile_EnumDescs[3].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return EnumContainerMessage1_NestedEnumType1B(n)
},
),
prototype.GoEnum(
xxx_Enum_ProtoFile_EnumDescs[4].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A(n)
},
),
prototype.GoEnum(
xxx_Enum_ProtoFile_EnumDescs[5].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
index 0e51367..3adf069 100644
--- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
@@ -24,15 +24,10 @@
FieldTestMessage_ONE FieldTestMessage_Enum = 1
)
-type xxx_FieldTestMessage_Enum FieldTestMessage_Enum
-
-func (e FieldTestMessage_Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_FieldTestMessage_Enum)(e)
-}
-func (e xxx_FieldTestMessage_Enum) Type() protoreflect.EnumType {
+func (e FieldTestMessage_Enum) Type() protoreflect.EnumType {
return xxx_Fields_ProtoFile_EnumTypes[0]
}
-func (e xxx_FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
+func (e FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -1608,7 +1603,7 @@
var xxx_Fields_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Fields_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return FieldTestMessage_Enum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
index 328a439..dcb4a9e 100644
--- a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
@@ -24,15 +24,10 @@
Enum_TWO Enum = 2
)
-type xxx_Enum Enum
-
-func (e Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum)(e)
-}
-func (e xxx_Enum) Type() protoreflect.EnumType {
+func (e Enum) Type() protoreflect.EnumType {
return xxx_Enum_ProtoFile_EnumTypes[0]
}
-func (e xxx_Enum) Number() protoreflect.EnumNumber {
+func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -95,7 +90,7 @@
var xxx_Enum_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Enum_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum(n)
},
),
diff --git a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
index 1701832..6d47099 100644
--- a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
@@ -22,15 +22,10 @@
FieldTestMessage_ZERO FieldTestMessage_Enum = 0
)
-type xxx_FieldTestMessage_Enum FieldTestMessage_Enum
-
-func (e FieldTestMessage_Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_FieldTestMessage_Enum)(e)
-}
-func (e xxx_FieldTestMessage_Enum) Type() protoreflect.EnumType {
+func (e FieldTestMessage_Enum) Type() protoreflect.EnumType {
return xxx_Fields_ProtoFile_EnumTypes[0]
}
-func (e xxx_FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
+func (e FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -542,7 +537,7 @@
var xxx_Fields_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Fields_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return FieldTestMessage_Enum(n)
},
),
diff --git a/encoding/textpb/testprotos/pb2/test.pb.go b/encoding/textpb/testprotos/pb2/test.pb.go
index 61388ba..e3e9dea 100644
--- a/encoding/textpb/testprotos/pb2/test.pb.go
+++ b/encoding/textpb/testprotos/pb2/test.pb.go
@@ -31,15 +31,10 @@
Enum_TENTH Enum = 10
)
-type xxx_Enum Enum
-
-func (e Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum)(e)
-}
-func (e xxx_Enum) Type() protoreflect.EnumType {
+func (e Enum) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[0]
}
-func (e xxx_Enum) Number() protoreflect.EnumNumber {
+func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -88,15 +83,10 @@
Enums_DIEZ Enums_NestedEnum = 10
)
-type xxx_Enums_NestedEnum Enums_NestedEnum
-
-func (e Enums_NestedEnum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enums_NestedEnum)(e)
-}
-func (e xxx_Enums_NestedEnum) Type() protoreflect.EnumType {
+func (e Enums_NestedEnum) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[1]
}
-func (e xxx_Enums_NestedEnum) Number() protoreflect.EnumNumber {
+func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -2216,13 +2206,13 @@
var xxx_Test_ProtoFile_EnumTypes = [2]protoreflect.EnumType{
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum(n)
},
),
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[1].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enums_NestedEnum(n)
},
),
diff --git a/encoding/textpb/testprotos/pb3/test.pb.go b/encoding/textpb/testprotos/pb3/test.pb.go
index 30123ab..839054b 100644
--- a/encoding/textpb/testprotos/pb3/test.pb.go
+++ b/encoding/textpb/testprotos/pb3/test.pb.go
@@ -25,15 +25,10 @@
Enum_TEN Enum = 10
)
-type xxx_Enum Enum
-
-func (e Enum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum)(e)
-}
-func (e xxx_Enum) Type() protoreflect.EnumType {
+func (e Enum) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[0]
}
-func (e xxx_Enum) Number() protoreflect.EnumNumber {
+func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -68,15 +63,10 @@
Enums_DIEZ Enums_NestedEnum = 10
)
-type xxx_Enums_NestedEnum Enums_NestedEnum
-
-func (e Enums_NestedEnum) ProtoReflect() protoreflect.Enum {
- return (xxx_Enums_NestedEnum)(e)
-}
-func (e xxx_Enums_NestedEnum) Type() protoreflect.EnumType {
+func (e Enums_NestedEnum) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[1]
}
-func (e xxx_Enums_NestedEnum) Number() protoreflect.EnumNumber {
+func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -535,13 +525,13 @@
var xxx_Test_ProtoFile_EnumTypes = [2]protoreflect.EnumType{
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum(n)
},
),
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[1].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enums_NestedEnum(n)
},
),
diff --git a/internal/impl/export.go b/internal/impl/export.go
index 7e2d392..0a153c4 100644
--- a/internal/impl/export.go
+++ b/internal/impl/export.go
@@ -18,8 +18,8 @@
// ProtoReflect method, otherwise it wraps the v1 enum to implement
// the v2 reflective interface.
func (Export) EnumOf(e interface{}) pref.Enum {
- if ev, ok := e.(pref.ProtoEnum); ok {
- return ev.ProtoReflect()
+ if ev, ok := e.(pref.Enum); ok {
+ return ev
}
return legacyWrapper.EnumOf(e)
}
@@ -29,8 +29,8 @@
// calling the ProtoReflect.Type method, otherwise it derives an enum type
// from the v1 named int32 type.
func (Export) EnumTypeOf(e interface{}) pref.EnumType {
- if ev, ok := e.(pref.ProtoEnum); ok {
- return ev.ProtoReflect().Type()
+ if ev, ok := e.(pref.Enum); ok {
+ return ev.Type()
}
return legacyWrapper.EnumTypeOf(e)
}
@@ -67,8 +67,8 @@
switch t := t.(type) {
case nil:
return ptype.GoExtension(d, nil, nil)
- case pref.ProtoEnum:
- return ptype.GoExtension(d, t.ProtoReflect().Type(), nil)
+ case pref.Enum:
+ return ptype.GoExtension(d, t.Type(), nil)
case pref.ProtoMessage:
return ptype.GoExtension(d, nil, t.ProtoReflect().Type())
}
diff --git a/internal/impl/message_test.go b/internal/impl/message_test.go
index 97fbabd..b98fe65 100644
--- a/internal/impl/message_test.go
+++ b/internal/impl/message_test.go
@@ -936,7 +936,7 @@
FullName: "EnumProto2",
Values: []ptype.EnumValue{{Name: "DEAD", Number: 0xdead}, {Name: "BEEF", Number: 0xbeef}},
}),
- func(_ pref.EnumType, n pref.EnumNumber) pref.ProtoEnum {
+ func(_ pref.EnumType, n pref.EnumNumber) pref.Enum {
return EnumProto2(n)
},
)
@@ -944,7 +944,6 @@
func (e EnumProto2) Enum() *EnumProto2 { return &e }
func (e EnumProto2) Type() pref.EnumType { return enumProto2Type }
func (e EnumProto2) Number() pref.EnumNumber { return pref.EnumNumber(e) }
-func (e EnumProto2) ProtoReflect() pref.Enum { return e }
type EnumProto3 int32
@@ -954,7 +953,7 @@
FullName: "EnumProto3",
Values: []ptype.EnumValue{{Name: "ALPHA", Number: 0}, {Name: "BRAVO", Number: 1}},
}),
- func(_ pref.EnumType, n pref.EnumNumber) pref.ProtoEnum {
+ func(_ pref.EnumType, n pref.EnumNumber) pref.Enum {
return EnumProto3(n)
},
)
@@ -962,7 +961,6 @@
func (e EnumProto3) Enum() *EnumProto3 { return &e }
func (e EnumProto3) Type() pref.EnumType { return enumProto3Type }
func (e EnumProto3) Number() pref.EnumNumber { return pref.EnumNumber(e) }
-func (e EnumProto3) ProtoReflect() pref.Enum { return e }
type EnumMessages struct {
EnumP2 *EnumProto2 `protobuf:"1"`
diff --git a/internal/legacy/enum.go b/internal/legacy/enum.go
index e71bc2a..89b5c87 100644
--- a/internal/legacy/enum.go
+++ b/internal/legacy/enum.go
@@ -17,9 +17,9 @@
descriptorpb "github.com/golang/protobuf/v2/types/descriptor"
)
-// wrapEnum wraps v as a protoreflect.ProtoEnum,
+// wrapEnum wraps v as a protoreflect.Enum,
// where v must be a int32 kind and not implement the v2 API already.
-func wrapEnum(v reflect.Value) pref.ProtoEnum {
+func wrapEnum(v reflect.Value) pref.Enum {
et := loadEnumType(v.Type())
return et.New(pref.EnumNumber(v.Int()))
}
@@ -37,9 +37,9 @@
// Slow-path: derive enum descriptor and initialize EnumType.
var m sync.Map // map[protoreflect.EnumNumber]proto.Enum
ed := loadEnumDesc(t)
- et := ptype.GoEnum(ed, func(et pref.EnumType, n pref.EnumNumber) pref.ProtoEnum {
+ et := ptype.GoEnum(ed, func(et pref.EnumType, n pref.EnumNumber) pref.Enum {
if e, ok := m.Load(n); ok {
- return e.(pref.ProtoEnum)
+ return e.(pref.Enum)
}
e := &enumWrapper{num: n, pbTyp: et, goTyp: t}
m.Store(n, e)
@@ -72,7 +72,6 @@
var (
_ pref.Enum = (*enumWrapper)(nil)
- _ pref.ProtoEnum = (*enumWrapper)(nil)
_ pvalue.Unwrapper = (*enumWrapper)(nil)
)
@@ -99,7 +98,7 @@
// Derive the enum descriptor from the raw descriptor proto.
e := new(ptype.StandaloneEnum)
ev := reflect.Zero(t).Interface()
- if _, ok := ev.(pref.ProtoEnum); ok {
+ if _, ok := ev.(pref.Enum); ok {
panic(fmt.Sprintf("%v already implements proto.Enum", t))
}
if ed, ok := ev.(enumV1); ok {
diff --git a/internal/legacy/export.go b/internal/legacy/export.go
index f51a33a..c5114f0 100644
--- a/internal/legacy/export.go
+++ b/internal/legacy/export.go
@@ -18,7 +18,7 @@
type Export struct{}
func (Export) EnumOf(e interface{}) pvalue.LegacyEnum {
- return wrapEnum(reflect.ValueOf(e)).ProtoReflect().(pvalue.LegacyEnum)
+ return wrapEnum(reflect.ValueOf(e)).(pvalue.LegacyEnum)
}
func (Export) EnumTypeOf(e interface{}) pref.EnumType {
diff --git a/internal/legacy/message.go b/internal/legacy/message.go
index f4b358f..5158374 100644
--- a/internal/legacy/message.go
+++ b/internal/legacy/message.go
@@ -219,8 +219,8 @@
// Populate EnumType and MessageType.
if f.EnumType == nil && f.Kind == pref.EnumKind {
- if ev, ok := reflect.Zero(t).Interface().(pref.ProtoEnum); ok {
- f.EnumType = ev.ProtoReflect().Type()
+ if ev, ok := reflect.Zero(t).Interface().(pref.Enum); ok {
+ f.EnumType = ev.Type()
} else {
f.EnumType = loadEnumDesc(t)
}
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index f1a3ce3..bb71643 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -25,15 +25,10 @@
TestAllTypes_NEG TestAllTypes_NestedEnum = -1
)
-type xxx_TestAllTypes_NestedEnum TestAllTypes_NestedEnum
-
-func (e TestAllTypes_NestedEnum) ProtoReflect() protoreflect.Enum {
- return (xxx_TestAllTypes_NestedEnum)(e)
-}
-func (e xxx_TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
+func (e TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[0]
}
-func (e xxx_TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
+func (e TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -1622,7 +1617,7 @@
var xxx_Test_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return TestAllTypes_NestedEnum(n)
},
),
diff --git a/internal/value/convert.go b/internal/value/convert.go
index 1722d01..9e40ac2 100644
--- a/internal/value/convert.go
+++ b/internal/value/convert.go
@@ -31,7 +31,7 @@
stringType = reflect.TypeOf(string(""))
bytesType = reflect.TypeOf([]byte(nil))
- enumIfaceV2 = reflect.TypeOf((*pref.ProtoEnum)(nil)).Elem()
+ enumIfaceV2 = reflect.TypeOf((*pref.Enum)(nil)).Elem()
messageIfaceV1 = reflect.TypeOf((*papi.Message)(nil)).Elem()
messageIfaceV2 = reflect.TypeOf((*pref.ProtoMessage)(nil)).Elem()
@@ -122,14 +122,14 @@
case pref.EnumKind:
// Handle v2 enums, which must satisfy the proto.Enum interface.
if t.Kind() != reflect.Ptr && t.Implements(enumIfaceV2) {
- et := reflect.Zero(t).Interface().(pref.ProtoEnum).ProtoReflect().Type()
+ et := reflect.Zero(t).Interface().(pref.Enum).Type()
return Converter{
PBValueOf: func(v reflect.Value) pref.Value {
if v.Type() != t {
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), t))
}
- e := v.Interface().(pref.ProtoEnum)
- return pref.ValueOf(e.ProtoReflect().Number())
+ e := v.Interface().(pref.Enum)
+ return pref.ValueOf(e.Number())
},
GoValueOf: func(v pref.Value) reflect.Value {
rv := reflect.ValueOf(et.New(v.Enum()))
diff --git a/reflect/protoreflect/proto.go b/reflect/protoreflect/proto.go
index 0746c11..8cf9df7 100644
--- a/reflect/protoreflect/proto.go
+++ b/reflect/protoreflect/proto.go
@@ -41,11 +41,6 @@
// use the proto.Message type instead, which aliases this type.
type ProtoMessage interface{ ProtoReflect() Message }
-// ProtoEnum is the top-level interface that all proto enums implement.
-// This is declared in the protoreflect package to avoid a cyclic dependency;
-// use the proto.Enum type instead, which aliases this type.
-type ProtoEnum interface{ ProtoReflect() Enum }
-
// Syntax is the language version of the proto file.
type Syntax syntax
diff --git a/reflect/protoreflect/type.go b/reflect/protoreflect/type.go
index 2cc7f70..573a610 100644
--- a/reflect/protoreflect/type.go
+++ b/reflect/protoreflect/type.go
@@ -470,7 +470,7 @@
EnumDescriptor
// New returns an instance of this enum type with its value set to n.
- New(n EnumNumber) ProtoEnum
+ New(n EnumNumber) Enum
// GoType returns the Go type of the enum value.
//
diff --git a/reflect/protoreflect/value_union.go b/reflect/protoreflect/value_union.go
index 1fc3993..320742b 100644
--- a/reflect/protoreflect/value_union.go
+++ b/reflect/protoreflect/value_union.go
@@ -96,7 +96,7 @@
case Message, List, Map:
return valueOfIface(v)
default:
- // TODO: Special case ProtoEnum, ProtoMessage, *[]T, and *map[K]V?
+ // TODO: Special case Enum, ProtoMessage, *[]T, and *map[K]V?
// Note: this would violate the documented invariant in Interface.
panic(fmt.Sprintf("invalid type: %v", reflect.TypeOf(v)))
}
diff --git a/reflect/protoregistry/registry_test.go b/reflect/protoregistry/registry_test.go
index 5be19b1..c7ddae4 100644
--- a/reflect/protoregistry/registry_test.go
+++ b/reflect/protoregistry/registry_test.go
@@ -326,9 +326,9 @@
mt1 := (&testpb.Message1{}).ProtoReflect().Type()
mt2 := (&testpb.Message2{}).ProtoReflect().Type()
mt3 := (&testpb.Message3{}).ProtoReflect().Type()
- et1 := testpb.Enum1_ONE.ProtoReflect().Type()
- et2 := testpb.Enum2_UNO.ProtoReflect().Type()
- et3 := testpb.Enum3_YI.ProtoReflect().Type()
+ et1 := testpb.Enum1_ONE.Type()
+ et2 := testpb.Enum2_UNO.Type()
+ et3 := testpb.Enum3_YI.Type()
// Suffix indicates field number.
xt11 := extensionType(testpb.E_StringField)
xt12 := extensionType(testpb.E_EnumField)
diff --git a/reflect/protoregistry/testprotos/test.pb.go b/reflect/protoregistry/testprotos/test.pb.go
index 94362b3..d0d9dc2 100644
--- a/reflect/protoregistry/testprotos/test.pb.go
+++ b/reflect/protoregistry/testprotos/test.pb.go
@@ -22,15 +22,10 @@
Enum1_ONE Enum1 = 1
)
-type xxx_Enum1 Enum1
-
-func (e Enum1) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum1)(e)
-}
-func (e xxx_Enum1) Type() protoreflect.EnumType {
+func (e Enum1) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[0]
}
-func (e xxx_Enum1) Number() protoreflect.EnumNumber {
+func (e Enum1) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -71,15 +66,10 @@
Enum2_UNO Enum2 = 1
)
-type xxx_Enum2 Enum2
-
-func (e Enum2) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum2)(e)
-}
-func (e xxx_Enum2) Type() protoreflect.EnumType {
+func (e Enum2) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[1]
}
-func (e xxx_Enum2) Number() protoreflect.EnumNumber {
+func (e Enum2) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -120,15 +110,10 @@
Enum3_YI Enum3 = 1
)
-type xxx_Enum3 Enum3
-
-func (e Enum3) ProtoReflect() protoreflect.Enum {
- return (xxx_Enum3)(e)
-}
-func (e xxx_Enum3) Type() protoreflect.EnumType {
+func (e Enum3) Type() protoreflect.EnumType {
return xxx_Test_ProtoFile_EnumTypes[2]
}
-func (e xxx_Enum3) Number() protoreflect.EnumNumber {
+func (e Enum3) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -492,19 +477,19 @@
var xxx_Test_ProtoFile_EnumTypes = [3]protoreflect.EnumType{
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum1(n)
},
),
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[1].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum2(n)
},
),
prototype.GoEnum(
xxx_Test_ProtoFile_EnumDescs[2].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return Enum3(n)
},
),
diff --git a/reflect/prototype/go_type.go b/reflect/prototype/go_type.go
index 2776aa3..81e1241 100644
--- a/reflect/prototype/go_type.go
+++ b/reflect/prototype/go_type.go
@@ -16,7 +16,7 @@
// GoEnum creates a new protoreflect.EnumType by combining the provided
// protoreflect.EnumDescriptor with the provided constructor function.
-func GoEnum(ed protoreflect.EnumDescriptor, fn func(protoreflect.EnumType, protoreflect.EnumNumber) protoreflect.ProtoEnum) protoreflect.EnumType {
+func GoEnum(ed protoreflect.EnumDescriptor, fn func(protoreflect.EnumType, protoreflect.EnumNumber) protoreflect.Enum) protoreflect.EnumType {
if ed.IsPlaceholder() {
panic("enum descriptor must not be a placeholder")
}
@@ -25,7 +25,7 @@
type goEnum struct {
protoreflect.EnumDescriptor
- new func(protoreflect.EnumType, protoreflect.EnumNumber) protoreflect.ProtoEnum
+ new func(protoreflect.EnumType, protoreflect.EnumNumber) protoreflect.Enum
once sync.Once
typ reflect.Type
@@ -35,7 +35,7 @@
t.New(0) // initialize t.typ
return t.typ
}
-func (t *goEnum) New(n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+func (t *goEnum) New(n protoreflect.EnumNumber) protoreflect.Enum {
e := t.new(t, n)
t.once.Do(func() { t.typ = reflect.TypeOf(e) })
if t.typ != reflect.TypeOf(e) {
@@ -208,7 +208,7 @@
return t.enumType.New(t.Default().Enum())
}
t.valueOf = func(v interface{}) protoreflect.Value {
- ev := v.(protoreflect.ProtoEnum).ProtoReflect()
+ ev := v.(protoreflect.Enum)
return protoreflect.ValueOf(ev.Number())
}
t.interfaceOf = func(pv protoreflect.Value) interface{} {
diff --git a/types/descriptor/descriptor.pb.go b/types/descriptor/descriptor.pb.go
index 35679c3..3b07d56 100644
--- a/types/descriptor/descriptor.pb.go
+++ b/types/descriptor/descriptor.pb.go
@@ -44,15 +44,10 @@
FieldDescriptorProto_TYPE_SINT64 FieldDescriptorProto_Type = 18
)
-type xxx_FieldDescriptorProto_Type FieldDescriptorProto_Type
-
-func (e FieldDescriptorProto_Type) ProtoReflect() protoreflect.Enum {
- return (xxx_FieldDescriptorProto_Type)(e)
-}
-func (e xxx_FieldDescriptorProto_Type) Type() protoreflect.EnumType {
+func (e FieldDescriptorProto_Type) Type() protoreflect.EnumType {
return xxx_Descriptor_ProtoFile_EnumTypes[0]
}
-func (e xxx_FieldDescriptorProto_Type) Number() protoreflect.EnumNumber {
+func (e FieldDescriptorProto_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -130,15 +125,10 @@
FieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3
)
-type xxx_FieldDescriptorProto_Label FieldDescriptorProto_Label
-
-func (e FieldDescriptorProto_Label) ProtoReflect() protoreflect.Enum {
- return (xxx_FieldDescriptorProto_Label)(e)
-}
-func (e xxx_FieldDescriptorProto_Label) Type() protoreflect.EnumType {
+func (e FieldDescriptorProto_Label) Type() protoreflect.EnumType {
return xxx_Descriptor_ProtoFile_EnumTypes[1]
}
-func (e xxx_FieldDescriptorProto_Label) Number() protoreflect.EnumNumber {
+func (e FieldDescriptorProto_Label) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -187,15 +177,10 @@
FileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3
)
-type xxx_FileOptions_OptimizeMode FileOptions_OptimizeMode
-
-func (e FileOptions_OptimizeMode) ProtoReflect() protoreflect.Enum {
- return (xxx_FileOptions_OptimizeMode)(e)
-}
-func (e xxx_FileOptions_OptimizeMode) Type() protoreflect.EnumType {
+func (e FileOptions_OptimizeMode) Type() protoreflect.EnumType {
return xxx_Descriptor_ProtoFile_EnumTypes[2]
}
-func (e xxx_FileOptions_OptimizeMode) Number() protoreflect.EnumNumber {
+func (e FileOptions_OptimizeMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -243,15 +228,10 @@
FieldOptions_STRING_PIECE FieldOptions_CType = 2
)
-type xxx_FieldOptions_CType FieldOptions_CType
-
-func (e FieldOptions_CType) ProtoReflect() protoreflect.Enum {
- return (xxx_FieldOptions_CType)(e)
-}
-func (e xxx_FieldOptions_CType) Type() protoreflect.EnumType {
+func (e FieldOptions_CType) Type() protoreflect.EnumType {
return xxx_Descriptor_ProtoFile_EnumTypes[3]
}
-func (e xxx_FieldOptions_CType) Number() protoreflect.EnumNumber {
+func (e FieldOptions_CType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -301,15 +281,10 @@
FieldOptions_JS_NUMBER FieldOptions_JSType = 2
)
-type xxx_FieldOptions_JSType FieldOptions_JSType
-
-func (e FieldOptions_JSType) ProtoReflect() protoreflect.Enum {
- return (xxx_FieldOptions_JSType)(e)
-}
-func (e xxx_FieldOptions_JSType) Type() protoreflect.EnumType {
+func (e FieldOptions_JSType) Type() protoreflect.EnumType {
return xxx_Descriptor_ProtoFile_EnumTypes[4]
}
-func (e xxx_FieldOptions_JSType) Number() protoreflect.EnumNumber {
+func (e FieldOptions_JSType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -359,15 +334,10 @@
MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2
)
-type xxx_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel
-
-func (e MethodOptions_IdempotencyLevel) ProtoReflect() protoreflect.Enum {
- return (xxx_MethodOptions_IdempotencyLevel)(e)
-}
-func (e xxx_MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {
+func (e MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {
return xxx_Descriptor_ProtoFile_EnumTypes[5]
}
-func (e xxx_MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber {
+func (e MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
@@ -3035,37 +3005,37 @@
var xxx_Descriptor_ProtoFile_EnumTypes = [6]protoreflect.EnumType{
prototype.GoEnum(
xxx_Descriptor_ProtoFile_EnumDescs[0].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return FieldDescriptorProto_Type(n)
},
),
prototype.GoEnum(
xxx_Descriptor_ProtoFile_EnumDescs[1].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return FieldDescriptorProto_Label(n)
},
),
prototype.GoEnum(
xxx_Descriptor_ProtoFile_EnumDescs[2].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return FileOptions_OptimizeMode(n)
},
),
prototype.GoEnum(
xxx_Descriptor_ProtoFile_EnumDescs[3].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return FieldOptions_CType(n)
},
),
prototype.GoEnum(
xxx_Descriptor_ProtoFile_EnumDescs[4].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return FieldOptions_JSType(n)
},
),
prototype.GoEnum(
xxx_Descriptor_ProtoFile_EnumDescs[5].Reference(),
- func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
+ func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
return MethodOptions_IdempotencyLevel(n)
},
),