diff --git a/CHANGELOG.md b/CHANGELOG.md index beb09e6..8998a67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## version 1.6.2 (2017-07-08) + +* Fixes another bug with match groups outside the correct range in `Parsimmon.regexp(regexp, group)`. + ## version 1.6.1 (2017-07-01) * **100% unit test coverage!** This does not mean bugs won't exist, but it keeps us much safer against regressions in the future. diff --git a/package.json b/package.json index 4af1402..706e614 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parsimmon", - "version": "1.6.1", + "version": "1.6.2", "description": "A monadic LL(infinity) parser combinator library", "keywords": [ "parsing", diff --git a/src/parsimmon.js b/src/parsimmon.js index e0a2b1e..49cd7a9 100644 --- a/src/parsimmon.js +++ b/src/parsimmon.js @@ -595,9 +595,9 @@ function regexp(re, group) { var groupMatch = match[group]; return makeSuccess(i + fullMatch.length, groupMatch); } - return makeFailure( - 'valid match group (0 to ' + match.length + ') in ' + expected - ); + var message = + 'valid match group (0 to ' + match.length + ') in ' + expected; + return makeFailure(i, message); } return makeFailure(i, expected); }); diff --git a/test/core/regexp.test.js b/test/core/regexp.test.js index 6697f39..11ce885 100644 --- a/test/core/regexp.test.js +++ b/test/core/regexp.test.js @@ -47,7 +47,11 @@ suite('Parsimmon.regexp', function() { assert.strictEqual(parser0.parse('a1').value, 'a1'); assert.strictEqual(parser1.parse('a1').value, 'a'); assert.strictEqual(parser2.parse('a1').value, '1'); - assert.strictEqual(parser3.parse('a1').status, false); + assert.deepStrictEqual(parser3.parse('a1'), { + status: false, + expected: ['valid match group (0 to 3) in /(\\w)(\\d)/'], + index: {column: 1, line: 1, offset: 0}, + }); }); });