Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 21 additions & 13 deletions compile.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,7 @@ func CompileFileDescriptorSet(fds *descriptorpb.FileDescriptorSet, messageName p
if err != nil {
return nil, err
}
desc, err := files.FindDescriptorByName(messageName)
if err != nil {
return nil, err
}
msgDesc, ok := desc.(protoreflect.MessageDescriptor)
if !ok {
return nil, protoregistry.NotFound
}

// Allow the caller to override the extension registry by placing our
// default registry first.
options = append([]CompileOption{WithExtensionsFromFiles(files)}, options...)
return CompileMessageDescriptor(msgDesc, options...), nil
return CompileFileRegistry(files, messageName, options...)
}

// CompileMessageDescriptor compiles a descriptor into a [MessageType], for optimized parsing.
Expand All @@ -68,6 +56,26 @@ func CompileMessageDescriptor(md protoreflect.MessageDescriptor, options ...Comp
return wrapType(ty)
}

// CompileFileRegistry looks up a [protoreflect.MessageDescriptor] from a [protoregistry.Files] and
// compiles a [MessageType] for it.
//
// Returns an error if no message type exists in the registry with that name.
func CompileFileRegistry(files *protoregistry.Files, messageName protoreflect.FullName, options ...CompileOption) (*MessageType, error) {
desc, err := files.FindDescriptorByName(messageName)
if err != nil {
return nil, err
}
msgDesc, ok := desc.(protoreflect.MessageDescriptor)
if !ok {
return nil, protoregistry.NotFound
}

// Allow the caller to override the extension registry by placing our
// default registry first.
options = append([]CompileOption{WithExtensionsFromFiles(files)}, options...)
return CompileMessageDescriptor(msgDesc, options...), nil
}

// backend implements the compiler backend interface.
type backend struct{}

Expand Down