diff --git a/packages/svelte/src/compiler/phases/1-parse/utils/bracket.js b/packages/svelte/src/compiler/phases/1-parse/utils/bracket.js index 89242b4cb2..ee78909f61 100644 --- a/packages/svelte/src/compiler/phases/1-parse/utils/bracket.js +++ b/packages/svelte/src/compiler/phases/1-parse/utils/bracket.js @@ -27,7 +27,7 @@ export function match_bracket(source, start, open, close, offset = 0) { } else if (next === '*') { i = find_end(source, '*/', i + 1); } else { - i = find_unescaped_char(source, i + 1, '/') + '/'.length; + i = find_unescaped_char(source, i + 1, '/'); } continue; @@ -71,39 +71,33 @@ function find_unescaped_char(string, search_start_index, char) { let i = search_start_index; while (true) { - i = string.indexOf(char, i); - - if (i === -1) { - e.unexpected_eof(string.length); - } + i = find_end(string, char, i); if (count_leading_backslashes(string, i - 1) % 2 === 0) { return i; } - - i += 1; } } /** - * Count consecutive leading backslashes before {@link search_start_index}. + * Count consecutive leading backslashes before {@link index}. * * @example * ```js - * count_leading_backslashes('\\\\\\foo', 2); // 3 (the backslashes have to be escaped in the string literal, there are three in reality) + * count_leading_backslashes('\\\\\\foo', 3); // 3 (the backslashes have to be escaped in the string literal, there are three in reality) * ``` * * @param {string} string The string to search. - * @param {number} search_start_index The index to begin the search at. + * @param {number} index The index to begin the search at. */ -function count_leading_backslashes(string, search_start_index) { - let i = search_start_index; - let count = 0; - while (string.charCodeAt(i) === 92) { - count++; - i--; +function count_leading_backslashes(string, index) { + let start = index; + + while (string.charCodeAt(start - 1) === 92) { + start--; } - return count; + + return index - start; } /**