diff --git a/spec/parser/javascript/match_spec.js b/spec/parser/javascript/match_spec.js index 4f74bf7..5ed5cb2 100644 --- a/spec/parser/javascript/match_spec.js +++ b/spec/parser/javascript/match_spec.js @@ -52,6 +52,12 @@ describe('parser/javascript/match.js', function() { ], proxy: undefined }, + '': { + anchorStart: false, + anchorEnd: false, + parts: [], + proxy: undefined + } }, (content, str) => { it(`parses "${str}" as a Match`, function() { var parser = new javascript.Parser(str); diff --git a/src/js/parser/javascript/match.js b/src/js/parser/javascript/match.js index d12eb6c..0ecb7fe 100644 --- a/src/js/parser/javascript/match.js +++ b/src/js/parser/javascript/match.js @@ -23,7 +23,8 @@ export default { _render() { var start, end, - partPromises; + partPromises, + items; if (this.anchorStart) { start = this.renderLabel('Start of line') @@ -39,7 +40,13 @@ export default { return part.render(this.container.group()); }); - return Q.all(_([start, partPromises, end]).flatten().compact().value()) + items = _([start, partPromises, end]).flatten().compact().value(); + + if (items.length === 0) { + items = [this.container.group()]; + } + + return Q.all(items) .then(items => { this.start = _.first(items); this.end = _.last(items);