mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2025-01-04 02:38:50 +00:00
reflect/protodesc: only check enum dependency syntax if resolved
For proto3 messages with an enum field that could not be resolved, do not check the syntax of that enum dependency. Change-Id: I7c646539351edc35243ab950d335f4018cc4c0e9 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/186001 Reviewed-by: Damien Neil <dneil@google.com>
This commit is contained in:
parent
e182c917f0
commit
67da21c7ab
@ -159,7 +159,7 @@ func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.Desc
|
||||
if f.Cardinality() == protoreflect.Required {
|
||||
return errors.New("message field %q using proto3 semantics cannot be required", f.FullName())
|
||||
}
|
||||
if f.Enum() != nil && f.Enum().Syntax() != protoreflect.Proto3 {
|
||||
if f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().Syntax() != protoreflect.Proto3 {
|
||||
return errors.New("message field %q using proto3 semantics may only depend on a proto3 enum", f.FullName())
|
||||
}
|
||||
}
|
||||
|
@ -831,6 +831,20 @@ func TestNewFile(t *testing.T) {
|
||||
]
|
||||
}]}]
|
||||
`),
|
||||
}, {
|
||||
label: "proto3 message with unresolved enum",
|
||||
inDesc: mustParseFile(`
|
||||
name: "test.proto"
|
||||
package: ""
|
||||
syntax: "proto3"
|
||||
message_type: [{
|
||||
name: "M"
|
||||
field: [
|
||||
{name:"enum" number:1 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:".fizz.buzz.Enum"}
|
||||
]
|
||||
}]
|
||||
`),
|
||||
inOpts: []option{allowUnresolvable()},
|
||||
// TODO: Test field and oneof handling in validateMessageDeclarations
|
||||
// TODO: Test unmarshalDefault
|
||||
// TODO: Test validateExtensionDeclarations
|
||||
|
Loading…
Reference in New Issue
Block a user