Skip to content

proto_merger: Keep reserved fields of deleted types in deleted_fields - #7208

Open
andrabivolaru wants to merge 2 commits into
mainfrom
dev/andrabivolaru/fix-proto-merger-offsets
Open

proto_merger: Keep reserved fields of deleted types in deleted_fields#7208
andrabivolaru wants to merge 2 commits into
mainfrom
dev/andrabivolaru/fix-proto-merger-offsets

Conversation

@andrabivolaru

Copy link
Copy Markdown
Contributor

When a field is reserved upstream and its type is a deleted nested message/enum (not present upstream), proto_merger previously moved it to fields, causing it to be serialized before its type definition.

This change keeps reserved fields of deleted types in deleted_fields with [deprecated = true] so they are serialized after their nested type definitions.

Added unit test ReservedUpstreamFieldWithDeletedTypeIsPlacedInDeletedFields in proto_file_serializer_unittest.cc.

@andrabivolaru
andrabivolaru requested a review from a team as a code owner August 25, 2026 11:52
@andrabivolaru andrabivolaru self-assigned this Aug 25, 2026
@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

@andrabivolaru
andrabivolaru force-pushed the dev/andrabivolaru/fix-proto-merger-offsets branch 2 times, most recently from 0a08c2c to 1f611fd Compare August 26, 2026 08:08
Comment thread src/tools/proto_merger/proto_merger.cc Outdated
Comment thread src/tools/proto_merger/proto_merger.cc Outdated
Comment thread src/tools/proto_merger/proto_file_serializer_unittest.cc Outdated
andrabivolaru added a commit that referenced this pull request Aug 31, 2026
- Use std::unordered_set for known_enums, allowlisted_options, and deleted_type_names
- Group parameters into MergeContext and FieldParams structs
- Handle deleted_type_names in oneof merges and mark deleted oneof fields with deleted types as deprecated
- Refactor ReservedUpstreamFieldWithDeletedTypeIsPlacedInDeletedFields to in-memory test setup
- Add DeletedOneofFieldWithDeletedTypeIsMarkedDeprecated unit test
…#7208)

- Handle reserved fields with deleted types by placing them in deleted_fields as deprecated
- Use std::unordered_set for known_enums, allowlisted_options, and deleted_type_names
- Group parameters into MergeContext and FieldParams structs
- Handle deleted_type_names in oneof merges and mark deleted oneof fields with deleted types as deprecated
- Add unit tests for reserved fields, deleted types, and oneofs
@andrabivolaru
andrabivolaru force-pushed the dev/andrabivolaru/fix-proto-merger-offsets branch from 171bb4c to 9b59c43 Compare August 31, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants