From 68beff1e8c01c89b0eddb9ac7865a336aab4f864 Mon Sep 17 00:00:00 2001 From: Jonathan Ioffe <51321373+jonathan-ioffe@users.noreply.github.com> Date: Fri, 11 Apr 2025 20:34:00 +0300 Subject: [PATCH 1/2] fix: reserved field inside group blocks fail parsing --- src/parse.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/parse.js b/src/parse.js index 3ac4c9cb9..441e7f279 100644 --- a/src/parse.js +++ b/src/parse.js @@ -513,6 +513,10 @@ function parse(source, root, options) { parseEnum(type, token); break; + case "reserved": + readRanges(type.reserved || (type.reserved = []), true); + break; + /* istanbul ignore next */ default: throw illegal(token); // there are no groups with proto3 semantics From 25f9855c76417b307015a171c0af54263aa94587 Mon Sep 17 00:00:00 2001 From: Mike Kruskal <62662355+mkruskal-google@users.noreply.github.com> Date: Wed, 7 May 2025 14:27:23 -0700 Subject: [PATCH 2/2] Add test case from issue --- tests/data/uncommon.proto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/data/uncommon.proto b/tests/data/uncommon.proto index 764e07801..759fab45f 100644 --- a/tests/data/uncommon.proto +++ b/tests/data/uncommon.proto @@ -82,3 +82,11 @@ service Test6 { option (custom).bar = ""; rpc DoSomethingElse( stream DoSomethingRequest ) returns (DoSomethingResponse); /// post rpc DoSomethingEntirelyDifferent(DoSomethingRequest ) returns ( stream DoSomethingResponse ); /// post }; + +message Test7 { + repeated group RepeatedGroup = 1 { + optional string id = 2; + reserved 3; + optional string info = 4; + } +}