diff --git a/src/services/refactors/convertStringOrTemplateLiteral.ts b/src/services/refactors/convertStringOrTemplateLiteral.ts
index 75e38ff6d02..2791b66b046 100644
--- a/src/services/refactors/convertStringOrTemplateLiteral.ts
+++ b/src/services/refactors/convertStringOrTemplateLiteral.ts
@@ -175,27 +175,20 @@ namespace ts.refactor.convertStringOrTemplateLiteral {
return createTemplateExpression(head, templateSpans);
}
- const hexToUnicode = (_match: string, grp: string) => String.fromCharCode(parseInt(grp, 16));
const octalToUnicode = (_match: string, grp: string) => String.fromCharCode(parseInt(grp, 8));
function decodeRawString(content: string) {
const outerQuotes = /["']((.|\s)*)["']/;
- const unicodeEscape = /\\u(\w+)/gi;
- const unicodeEscapeWithBraces = /\\u\{(\w+)\}/gi;
- const hexEscape = /\\x(\w+)/gi;
- const octalEscape = /\\([0-7]+)/g;
+ const octalEscape = /\\((?:[1-7][0-7]{0,2}|[0-7]{2,3}))/g;
return content.replace(outerQuotes, (_match, grp) => grp)
- .replace(unicodeEscape, hexToUnicode)
- .replace(unicodeEscapeWithBraces, hexToUnicode)
- .replace(hexEscape, hexToUnicode)
.replace(octalEscape, octalToUnicode);
}
function escapeText(content: string) {
return content.replace("`", "\`") // back-tick
- .replace("\${", `$\\{`); // placeholder alike beginning
+ .replace("${", "$\\{"); // placeholder alike beginning
}
}
diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringAvailabilityTagged.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringAvailabilityTagged.ts
index 9327ff0911c..0b02128f3e9 100644
--- a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringAvailabilityTagged.ts
+++ b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringAvailabilityTagged.ts
@@ -1,6 +1,6 @@
///
-//// function tag(literals: TemplateStringsArray, ...placeholders: string[]) { return "tagged" }
+//// function tag(literals: TemplateStringsArray, ...placeholders: any[]) { return "tagged" }
//// const alpha = tag/*z*/`/*y*/foobar`
//// const beta = tag/*x*/`/*w*/foobar ${/*v*/4/*u*/2}`
diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringBackTick.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringBackTick.ts
deleted file mode 100644
index 6587f7037f0..00000000000
--- a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringBackTick.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-///
-
-//// const foo = `/*x*/w/*y*/ith back\`tick`
-
-goTo.select("x", "y");
-edit.applyRefactor({
- refactorName: "Convert string concatenation or template literal",
- actionName: "Convert to string concatenation",
- actionDescription: "Convert to string concatenation",
- newContent:
-"const foo = \"with back`tick\"",
-});
diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringDollar.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringDollar.ts
deleted file mode 100644
index 66758079671..00000000000
--- a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToStringDollar.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-///
-
-//// const foo = `/*x*/w/*y*/ith \${dollar}`
-
-goTo.select("x", "y");
-edit.applyRefactor({
- refactorName: "Convert string concatenation or template literal",
- actionName: "Convert to string concatenation",
- actionDescription: "Convert to string concatenation",
- newContent:
-"const foo = \"with \${dollar}\"",
-});
diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateOctalEscape.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateOctalEscape.ts
index e607240f39f..39168d42d3e 100644
--- a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateOctalEscape.ts
+++ b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateOctalEscape.ts
@@ -1,7 +1,6 @@
///
-debugger;
-//// const foo = "/*x*/U/*y*/nicode \u0023 \u{0023} " + "Hex \x23 " + "Octal \43";
+//// const foo = "/*x*/O/*y*/ctal \43";
goTo.select("x", "y");
edit.applyRefactor({
@@ -9,5 +8,5 @@ edit.applyRefactor({
actionName: "Convert to template literal",
actionDescription: "Convert to template literal",
newContent:
-"const foo = `Unicode # # Hex # Octal #\`;",
+"const foo = `Octal #`;",
});