Skip to content

Commit f36d4e4

Browse files
fix: support for nested messages and enums within group blocks (#1790)
* fix: support for nested messages and enums within group blocks * test: support for nested messages and enums within group blocks Co-authored-by: Joshua Wise <[email protected]>
1 parent d87978b commit f36d4e4

File tree

3 files changed

+75
-7
lines changed

3 files changed

+75
-7
lines changed

src/parse.js

+8
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,14 @@ function parse(source, root, options) {
443443
}
444444
break;
445445

446+
case "message":
447+
parseType(type, token);
448+
break;
449+
450+
case "enum":
451+
parseEnum(type, token);
452+
break;
453+
446454
/* istanbul ignore next */
447455
default:
448456
throw illegal(token); // there are no groups with proto3 semantics

tests/data/test.json

+51-4
Original file line numberDiff line numberDiff line change
@@ -412,18 +412,26 @@
412412
"type": "OptionalGroup",
413413
"id": 3
414414
},
415+
"messageInGroup": {
416+
"type": "MessageInGroup",
417+
"id": 4
418+
},
419+
"enumInGroup": {
420+
"type": "EnumInGroup",
421+
"id": 5
422+
},
415423
"id": {
416424
"type": "string",
417-
"id": 4
425+
"id": 6
418426
},
419427
"requiredSimple": {
420428
"rule": "required",
421429
"type": "Simple2",
422-
"id": 5
430+
"id": 7
423431
},
424432
"optionalSimple": {
425433
"type": "Simple2",
426-
"id": 6
434+
"id": 8
427435
}
428436
},
429437
"nested": {
@@ -464,6 +472,45 @@
464472
}
465473
},
466474
"group": true
475+
},
476+
"MessageInGroup": {
477+
"fields": {
478+
"id": {
479+
"rule": "required",
480+
"type": "NetedMessage",
481+
"id": 1
482+
}
483+
},
484+
"nested": {
485+
"NetedMessage": {
486+
"fields": {
487+
"id": {
488+
"rule": "optional",
489+
"type": "string",
490+
"id": 1
491+
}
492+
}
493+
}
494+
},
495+
"group": true
496+
},
497+
"EnumInGroup": {
498+
"fields": {
499+
"id": {
500+
"rule": "required",
501+
"type": "NestedEnum",
502+
"id": 1
503+
}
504+
},
505+
"nested": {
506+
"NestedEnum": {
507+
"values": {
508+
"first": 0,
509+
"second": 1
510+
}
511+
}
512+
},
513+
"group": true
467514
}
468515
}
469516
},
@@ -1514,4 +1561,4 @@
15141561
}
15151562
}
15161563
}
1517-
}
1564+
}

tests/data/test.proto

+16-3
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,22 @@ message TestGroup {
182182
optional group OptionalGroup = 3 {
183183
required string id = 1;
184184
}
185-
optional string id = 4;
186-
required Simple2 required_simple = 5;
187-
optional Simple2 optional_simple = 6;
185+
optional group MessageInGroup = 4 {
186+
message NestedMessage {
187+
optional string id = 1;
188+
}
189+
required NestedMessage id = 1;
190+
}
191+
optional group EnumInGroup = 5 {
192+
enum NestedEnum {
193+
first = 0;
194+
second = 1;
195+
}
196+
required NestedEnum id = 1;
197+
}
198+
optional string id = 6;
199+
required Simple2 required_simple = 7;
200+
optional Simple2 optional_simple = 8;
188201
}
189202

190203
message TestGroup1 {

0 commit comments

Comments
 (0)