From 39b91f6c674882ef20fbde20b95ed6c01cd3a576 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 27 Jun 2018 14:54:30 +0200 Subject: [PATCH] fix #53144 --- src/vs/editor/contrib/snippet/snippetParser.ts | 3 +++ src/vs/editor/contrib/snippet/test/snippetParser.test.ts | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/vs/editor/contrib/snippet/snippetParser.ts b/src/vs/editor/contrib/snippet/snippetParser.ts index 35e163ea4ff..feb84a18b1f 100644 --- a/src/vs/editor/contrib/snippet/snippetParser.ts +++ b/src/vs/editor/contrib/snippet/snippetParser.ts @@ -643,6 +643,9 @@ export class SnippetParser { let start = this._token; while (this._token.type !== type) { this._token = this._scanner.next(); + if (this._token.type === TokenType.EOF) { + return false; + } } let value = this._scanner.value.substring(start.pos, this._token.pos); this._token = this._scanner.next(); diff --git a/src/vs/editor/contrib/snippet/test/snippetParser.test.ts b/src/vs/editor/contrib/snippet/test/snippetParser.test.ts index b3ab4b6debe..369d3c79d56 100644 --- a/src/vs/editor/contrib/snippet/test/snippetParser.test.ts +++ b/src/vs/editor/contrib/snippet/test/snippetParser.test.ts @@ -727,4 +727,9 @@ suite('SnippetParser', () => { transform.regexp = new RegExp('foo', 'gi'); assert.equal(transform.toTextmateString(), '/foo/bar/ig'); }); + + test('Snippet parser freeze #53144', function () { + let snippet = new SnippetParser().parse('${1/(void$)|(.+)/${1:?-\treturn nil;}/}'); + assertMarker(snippet, Placeholder); + }); }); -- GitLab