diff options
Diffstat (limited to 'node_modules/tslint/lib/rules/noInvalidTemplateStringsRule.js')
-rw-r--r-- | node_modules/tslint/lib/rules/noInvalidTemplateStringsRule.js | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/node_modules/tslint/lib/rules/noInvalidTemplateStringsRule.js b/node_modules/tslint/lib/rules/noInvalidTemplateStringsRule.js index d3ee747f2..3fe553081 100644 --- a/node_modules/tslint/lib/rules/noInvalidTemplateStringsRule.js +++ b/node_modules/tslint/lib/rules/noInvalidTemplateStringsRule.js @@ -20,7 +20,7 @@ var tslib_1 = require("tslib"); var utils = require("tsutils"); var ts = require("typescript"); var Lint = require("../index"); -var Rule = (function (_super) { +var Rule = /** @class */ (function (_super) { tslib_1.__extends(Rule, _super); function Rule() { return _super !== null && _super.apply(this, arguments) || this; @@ -52,10 +52,18 @@ function walk(ctx) { return ts.forEachChild(node, cb); }); function check(node) { - var idx = node.text.search(/\$\{/); - if (idx !== -1) { - var textStart = node.getStart() + 1; - ctx.addFailureAt(textStart + idx, 2, Rule.FAILURE_STRING); + var text = node.getText(ctx.sourceFile); + var findTemplateStrings = /\\*\$\{/g; + var instance = findTemplateStrings.exec(text); + while (instance !== null) { + var matchLength = instance[0].length; + var backslashCount = matchLength - 2; + var instanceIsEscaped = backslashCount % 2 === 1; + if (!instanceIsEscaped) { + var start = node.getStart() + (instance.index + backslashCount); + ctx.addFailureAt(start, 2, Rule.FAILURE_STRING); + } + instance = findTemplateStrings.exec(text); } } } |