diff --git a/src/parse.js b/src/parse.js index bfdabf0a5..be9dd5a2f 100644 --- a/src/parse.js +++ b/src/parse.js @@ -443,6 +443,14 @@ function parse(source, root, options) { } break; + case "message": + parseType(type, token); + break; + + case "enum": + parseEnum(type, token); + break; + /* istanbul ignore next */ default: throw illegal(token); // there are no groups with proto3 semantics diff --git a/tests/data/test.json b/tests/data/test.json index c91edc0fc..5186ed4a2 100644 --- a/tests/data/test.json +++ b/tests/data/test.json @@ -412,18 +412,26 @@ "type": "OptionalGroup", "id": 3 }, + "messageInGroup": { + "type": "MessageInGroup", + "id": 4 + }, + "enumInGroup": { + "type": "EnumInGroup", + "id": 5 + }, "id": { "type": "string", - "id": 4 + "id": 6 }, "requiredSimple": { "rule": "required", "type": "Simple2", - "id": 5 + "id": 7 }, "optionalSimple": { "type": "Simple2", - "id": 6 + "id": 8 } }, "nested": { @@ -464,6 +472,45 @@ } }, "group": true + }, + "MessageInGroup": { + "fields": { + "id": { + "rule": "required", + "type": "NetedMessage", + "id": 1 + } + }, + "nested": { + "NetedMessage": { + "fields": { + "id": { + "rule": "optional", + "type": "string", + "id": 1 + } + } + } + }, + "group": true + }, + "EnumInGroup": { + "fields": { + "id": { + "rule": "required", + "type": "NestedEnum", + "id": 1 + } + }, + "nested": { + "NestedEnum": { + "values": { + "first": 0, + "second": 1 + } + } + }, + "group": true } } }, @@ -1514,4 +1561,4 @@ } } } -} \ No newline at end of file +} diff --git a/tests/data/test.proto b/tests/data/test.proto index 0d73a7a49..732f975f7 100644 --- a/tests/data/test.proto +++ b/tests/data/test.proto @@ -182,9 +182,22 @@ message TestGroup { optional group OptionalGroup = 3 { required string id = 1; } - optional string id = 4; - required Simple2 required_simple = 5; - optional Simple2 optional_simple = 6; + optional group MessageInGroup = 4 { + message NestedMessage { + optional string id = 1; + } + required NestedMessage id = 1; + } + optional group EnumInGroup = 5 { + enum NestedEnum { + first = 0; + second = 1; + } + required NestedEnum id = 1; + } + optional string id = 6; + required Simple2 required_simple = 7; + optional Simple2 optional_simple = 8; } message TestGroup1 {