diff --git a/src/parse.js b/src/parse.js index 9c3cc2753..e82f1b559 100644 --- a/src/parse.js +++ b/src/parse.js @@ -398,6 +398,10 @@ function parse(source, root, options) { readRanges(type.reserved || (type.reserved = []), true); break; + case ";": + // Skip extra semicolons + break; + default: /* istanbul ignore if */ if (edition === "proto2" || !typeRefRe.test(token)) { @@ -527,6 +531,10 @@ function parse(source, root, options) { readRanges(type.reserved || (type.reserved = []), true); break; + case ";": + // Skip extra semicolons + break; + /* istanbul ignore next */ default: throw illegal(token); // there are no groups with proto3 semantics @@ -586,6 +594,8 @@ function parse(source, root, options) { if (token === "option") { parseOption(oneof, token); skip(";"); + } else if (token === ";") { + // Skip extra semicolons } else { push(token); parseField(oneof, "optional"); @@ -613,6 +623,10 @@ function parse(source, root, options) { if(enm.reserved === undefined) enm.reserved = []; break; + case ";": + // Skip extra semicolons + break; + default: parseEnumValue(enm, token); } @@ -795,6 +809,8 @@ function parse(source, root, options) { /* istanbul ignore else */ if (token === "rpc") parseMethod(service, token); + else if (token === ";") + ; // Skip extra semicolons else throw illegal(token); });