Skip to content

Commit

Permalink
checkpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
elliotmjackson committed Aug 30, 2023
1 parent d8920e9 commit ae405eb
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 25 deletions.
4 changes: 2 additions & 2 deletions private/pkg/protosource/field.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,11 @@ func (f *field) ParentMessage() Message {
}

func (f *field) IsMap() bool {
isMap, err := isFieldAMapFromFiles(f, f.File())
fullNameToMessage, err := FullNameToMessage(f.file)
if err != nil {
return false
}
return isMap
return isFieldAMap(f, fullNameToMessage)
}

func (f *field) Number() int {
Expand Down
27 changes: 4 additions & 23 deletions private/pkg/protosource/protosource.go
Original file line number Diff line number Diff line change
Expand Up @@ -1254,17 +1254,7 @@ type tagRangeGroup struct {
end int
}

// isFieldAMapFromFiles checks if the field is a map field using file information.
func isFieldAMapFromFiles(field Field, files ...File) (bool, error) {
message, err := getMessageFromFiles(field, files...)
if err != nil {
return false, err
}
return isFieldAMapFromMessages(field, message), nil
}

// isFieldAMapFromMessages checks if the field is a map field using message information.
func isFieldAMapFromMessages(field Field, message Message) bool {
func isFieldAMap(field Field, fullNameToMessage map[string]Message) bool {
// For this to be a map field, it must be a repeated field
// with a synthetic message as the type, that synthetic message
// must be in the enclosing message for the field, and it must
Expand All @@ -1275,18 +1265,9 @@ func isFieldAMapFromMessages(field Field, message Message) bool {
if field.Type() != descriptorpb.FieldDescriptorProto_TYPE_MESSAGE {
return false
}
return message.IsMapEntry()
}

// getMessageFromFiles retrieves the Message associated with a field from a list of files.
func getMessageFromFiles(field Field, files ...File) (Message, error) {
fullNameToMessage, err := FullNameToMessage(files...)
if err != nil {
return nil, err
}
out, ok := fullNameToMessage[field.TypeName()]
message, ok := fullNameToMessage[field.TypeName()]
if !ok {
return nil, fmt.Errorf("message not found for field: %s", field.TypeName())
return false
}
return out, nil
return message.IsMapEntry()
}

0 comments on commit ae405eb

Please sign in to comment.