Grammar error messages 2/3: Improve the infinite loop message

New wording is more explanatory.

Part of #371.
redux
David Majda 8 years ago
parent 85fb8aaa0e
commit f5e43f842c

@ -12,13 +12,19 @@ function reportInfiniteLoops(ast) {
var check = visitor.build({
zero_or_more: function(node) {
if (!asts.alwaysConsumesOnSuccess(ast, node.expression)) {
throw new GrammarError("Possible infinite loop detected.", node.location);
throw new GrammarError(
"Possible infinite loop when parsing (repetition used with with an expression that may not consume any input).",
node.location
);
}
},
one_or_more: function(node) {
if (!asts.alwaysConsumesOnSuccess(ast, node.expression)) {
throw new GrammarError("Possible infinite loop detected.", node.location);
throw new GrammarError(
"Possible infinite loop when parsing (repetition used with with an expression that may not consume any input).",
node.location
);
}
}
});

@ -7,7 +7,7 @@ describe("compiler pass |reportInfiniteLoops|", function() {
it("reports infinite loops for zero_or_more", function() {
expect(pass).toReportError('start = ("")*', {
message: "Possible infinite loop detected.",
message: "Possible infinite loop when parsing (repetition used with with an expression that may not consume any input).",
location: {
start: { offset: 8, line: 1, column: 9 },
end: { offset: 13, line: 1, column: 14 }
@ -17,7 +17,7 @@ describe("compiler pass |reportInfiniteLoops|", function() {
it("reports infinite loops for one_or_more", function() {
expect(pass).toReportError('start = ("")+', {
message: "Possible infinite loop detected.",
message: "Possible infinite loop when parsing (repetition used with with an expression that may not consume any input).",
location: {
start: { offset: 8, line: 1, column: 9 },
end: { offset: 13, line: 1, column: 14 }

Loading…
Cancel
Save