internal: generate extension numbers, fix editions parsing
Before this commit, message-level Go editions features were not parsed
correctly.
Change-Id: I94ead5428fadae5fd70ed991fa405ce9388e9660
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/603015
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Stapelberg <stapelberg@google.com>
Reviewed-by: Lasse Folger <lassefolger@google.com>
diff --git a/internal/cmd/generate-protos/main.go b/internal/cmd/generate-protos/main.go
index b2d0803..071dc73 100644
--- a/internal/cmd/generate-protos/main.go
+++ b/internal/cmd/generate-protos/main.go
@@ -311,6 +311,7 @@
var processEnums func([]*protogen.Enum)
var processMessages func([]*protogen.Message)
+ var processExtensions func([]*protogen.Extension)
const protoreflectPackage = protogen.GoImportPath("google.golang.org/protobuf/reflect/protoreflect")
processEnums = func(enums []*protogen.Enum) {
for _, enum := range enums {
@@ -377,10 +378,24 @@
processEnums(message.Enums)
processMessages(message.Messages)
+ processExtensions(message.Extensions)
}
}
+ processExtensions = func(extensions []*protogen.Extension) {
+ if len(extensions) == 0 {
+ return
+ }
+
+ g.P("// Extension numbers")
+ g.P("const (")
+ for _, ext := range extensions {
+ g.P(ext.Extendee.GoIdent.GoName, "_", ext.GoName, "_ext_number ", protoreflectPackage.Ident("FieldNumber"), " = ", ext.Desc.Number())
+ }
+ g.P(")")
+ }
processEnums(file.Enums)
processMessages(file.Messages)
+ processExtensions(file.Extensions)
}
// generateSourceContextStringer generates the implementation for the
diff --git a/internal/filedesc/editions.go b/internal/filedesc/editions.go
index 11f5f35..fd4d0c8 100644
--- a/internal/filedesc/editions.go
+++ b/internal/filedesc/editions.go
@@ -68,7 +68,7 @@
v, m := protowire.ConsumeBytes(b)
b = b[m:]
switch num {
- case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number:
+ case genid.FeatureSet_Go_ext_number:
parent = unmarshalGoFeature(v, parent)
}
}
diff --git a/internal/genid/go_features_gen.go b/internal/genid/go_features_gen.go
index 546388c..7f67cbb 100644
--- a/internal/genid/go_features_gen.go
+++ b/internal/genid/go_features_gen.go
@@ -29,3 +29,8 @@
const (
GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1
)
+
+// Extension numbers
+const (
+ FeatureSet_Go_ext_number protoreflect.FieldNumber = 1002
+)