Skip to content

feat: support reserved enum values#688

Merged
anthony-swirldslabs merged 1 commit intomainfrom
339-reservedEnum
Nov 18, 2025
Merged

feat: support reserved enum values#688
anthony-swirldslabs merged 1 commit intomainfrom
339-reservedEnum

Conversation

@anthony-swirldslabs
Copy link
Copy Markdown
Contributor

Description:
Introducing rudimentary support for reserved enum values. The grammar is able to parse them instead of treating them as regular enum values, and the code generator simply ignores them because PBJ doesn't support unknown enum values currently.

A new enum_reserved.proto is added to integration tests. W/o the fix, the model would produce a generated test that would fail because the output of the JSON codec would differ from what ProtoC generates.

Also, I'm fixing a bunch of useless warning messages that PBJ used to produce for dangling comments and similar items.

Related issue(s):

Fixes #339

Notes for reviewer:
All tests should pass.

Checklist

  • Documented (Code comments, README, etc.)
  • Tested (unit, integration, etc.)

Signed-off-by: Anthony Petrov <anthony@swirldslabs.com>
@anthony-swirldslabs anthony-swirldslabs self-assigned this Nov 18, 2025
@anthony-swirldslabs anthony-swirldslabs requested review from a team as code owners November 18, 2025 01:22
@github-actions
Copy link
Copy Markdown

JUnit Test Report

   78 files  ±0     78 suites  ±0   4m 5s ⏱️ -1s
1 350 tests ±0  1 346 ✅ ±0   4 💤 ±0  0 ❌ ±0 
7 227 runs  ±0  7 207 ✅ ±0  20 💤 ±0  0 ❌ ±0 

Results for commit f071ae0. ± Comparison against base commit 6b108a7.

This pull request removes 2 and adds 1 tests. Note that renamed tests count towards both.
, 1
com.hedera.pbj.runtime.Utf8ToolsTest ‑ [4] 
com.hedera.pbj.runtime.Utf8ToolsTest ‑ [4] 
, 1

@github-actions
Copy link
Copy Markdown

Integration Test Report

    410 files  +1      410 suites  +1   20m 17s ⏱️ + 3m 52s
114 861 tests +8  114 861 ✅ +8  0 💤 ±0  0 ❌ ±0 
115 102 runs  +8  115 102 ✅ +8  0 💤 ±0  0 ❌ ±0 

Results for commit f071ae0. ± Comparison against base commit 6b108a7.

This pull request removes 3 and adds 11 tests. Note that renamed tests count towards both.
com.hedera.pbj.integration.test.ParserNeverWrapsTest ‑ [1] com.hedera.pbj.integration.test.ParserNeverWrapsTest$$Lambda/0x00007fcf17bbd518@15dbf6f4
com.hedera.pbj.integration.test.ParserNeverWrapsTest ‑ [2] com.hedera.pbj.integration.test.ParserNeverWrapsTest$$Lambda/0x00007fcf17bbd748@493b2893
com.hedera.pbj.integration.test.ParserNeverWrapsTest ‑ [3] com.hedera.pbj.integration.test.ParserNeverWrapsTest$$Lambda/0x00007fcf17bbd978@60e56cf9
com.hedera.pbj.integration.test.ParserNeverWrapsTest ‑ [1] com.hedera.pbj.integration.test.ParserNeverWrapsTest$$Lambda/0x00007f5afbb64a78@793ce65c
com.hedera.pbj.integration.test.ParserNeverWrapsTest ‑ [2] com.hedera.pbj.integration.test.ParserNeverWrapsTest$$Lambda/0x00007f5afbb64ca8@34354757
com.hedera.pbj.integration.test.ParserNeverWrapsTest ‑ [3] com.hedera.pbj.integration.test.ParserNeverWrapsTest$$Lambda/0x00007f5afbb64ed8@24baa7c2
pbj.integ.test.enumeration.reserved.pbj.integration.tests.tests.MessageWithReservedEnumTest ‑ [1] NoToStringWrapper{pbj.integ.test.enumeration.reserved.pbj.integration.tests.MessageWithReservedEnum}
pbj.integ.test.enumeration.reserved.pbj.integration.tests.tests.MessageWithReservedEnumTest ‑ [2] NoToStringWrapper{pbj.integ.test.enumeration.reserved.pbj.integration.tests.MessageWithReservedEnum}
pbj.integ.test.enumeration.reserved.pbj.integration.tests.tests.MessageWithReservedEnumTest ‑ [3] NoToStringWrapper{pbj.integ.test.enumeration.reserved.pbj.integration.tests.MessageWithReservedEnum}
pbj.integ.test.enumeration.reserved.pbj.integration.tests.tests.MessageWithReservedEnumTest ‑ [4] NoToStringWrapper{pbj.integ.test.enumeration.reserved.pbj.integration.tests.MessageWithReservedEnum}
pbj.integ.test.enumeration.reserved.pbj.integration.tests.tests.MessageWithReservedEnumTest ‑ [5] NoToStringWrapper{pbj.integ.test.enumeration.reserved.pbj.integration.tests.MessageWithReservedEnum}
pbj.integ.test.enumeration.reserved.pbj.integration.tests.tests.MessageWithReservedEnumTest ‑ [6] NoToStringWrapper{pbj.integ.test.enumeration.reserved.pbj.integration.tests.MessageWithReservedEnum}
pbj.integ.test.enumeration.reserved.pbj.integration.tests.tests.MessageWithReservedEnumTest ‑ testCodecGetDefaultValueMethod()
…

@anthony-swirldslabs anthony-swirldslabs merged commit f5bb21d into main Nov 18, 2025
12 checks passed
@anthony-swirldslabs anthony-swirldslabs deleted the 339-reservedEnum branch November 18, 2025 18:08
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.

JSON serialization unit tests generated for enum with reserved ordinals fail

3 participants