From 210090b483bd25aff9a8611c677fb74d12d8ca26 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 13 Feb 2020 12:22:53 -0800 Subject: [PATCH] No template refactor on plain strings (#36785) * Add/convert to failing tests. * Stop offering to convert single string literals to template expressions. * Ensure we're actually testing for single quotes. --- .../refactors/convertStringOrTemplateLiteral.ts | 2 +- ...nvertStringOrTemplateLiteral_OnModuleSpecifier.ts | 6 ++++++ ...vertStringOrTemplateLiteral_ToTemplateBackTick.ts | 8 +------- ...emplateLiteral_ToTemplateBinaryExprSingleQuote.ts | 12 ++++++++++++ ...onvertStringOrTemplateLiteral_ToTemplateSimple.ts | 8 +------- ...tStringOrTemplateLiteral_ToTemplateSingleQuote.ts | 8 +------- 6 files changed, 22 insertions(+), 22 deletions(-) create mode 100644 tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_OnModuleSpecifier.ts create mode 100644 tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBinaryExprSingleQuote.ts diff --git a/src/services/refactors/convertStringOrTemplateLiteral.ts b/src/services/refactors/convertStringOrTemplateLiteral.ts index 02a2afc4f48..58a62a77d7e 100644 --- a/src/services/refactors/convertStringOrTemplateLiteral.ts +++ b/src/services/refactors/convertStringOrTemplateLiteral.ts @@ -11,7 +11,7 @@ namespace ts.refactor.convertStringOrTemplateLiteral { const maybeBinary = getParentBinaryExpression(node); const refactorInfo: ApplicableRefactorInfo = { name: refactorName, description: refactorDescription, actions: [] }; - if ((isBinaryExpression(maybeBinary) || isStringLiteral(maybeBinary)) && isStringConcatenationValid(maybeBinary)) { + if (isBinaryExpression(maybeBinary) && isStringConcatenationValid(maybeBinary)) { refactorInfo.actions.push({ name: refactorName, description: refactorDescription }); return [refactorInfo]; } diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_OnModuleSpecifier.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_OnModuleSpecifier.ts new file mode 100644 index 00000000000..850a2d2863f --- /dev/null +++ b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_OnModuleSpecifier.ts @@ -0,0 +1,6 @@ +/// + +////import { x } from /*x*/"foo"/*y*/; + +goTo.select("x", "y"); +verify.not.refactorAvailable(ts.Diagnostics.Convert_to_template_string.message); diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBackTick.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBackTick.ts index fcb1998dfd0..1e4ffa0b49e 100644 --- a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBackTick.ts +++ b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBackTick.ts @@ -3,10 +3,4 @@ //// const foo = "/*x*/w/*y*/ith back`tick" goTo.select("x", "y"); -edit.applyRefactor({ - refactorName: "Convert to template string", - actionName: "Convert to template string", - actionDescription: ts.Diagnostics.Convert_to_template_string.message, - newContent: -"const foo = `with back\\`tick`", -}); +verify.not.refactorAvailable(ts.Diagnostics.Convert_to_template_string.message); diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBinaryExprSingleQuote.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBinaryExprSingleQuote.ts new file mode 100644 index 00000000000..1063ad2ac77 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateBinaryExprSingleQuote.ts @@ -0,0 +1,12 @@ +/// + +//// const foo = '/*x*/f/*y*/oobar is ' + (42 + 6) + ' years old' + +goTo.select("x", "y"); +edit.applyRefactor({ + refactorName: "Convert to template string", + actionName: "Convert to template string", + actionDescription: ts.Diagnostics.Convert_to_template_string.message, + newContent: +`const foo = \`foobar is \${42 + 6} years old\``, +}); diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSimple.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSimple.ts index 11fee10594b..86b1300ad01 100644 --- a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSimple.ts +++ b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSimple.ts @@ -3,10 +3,4 @@ //// const foo = "/*x*/f/*y*/oobar rocks" goTo.select("x", "y"); -edit.applyRefactor({ - refactorName: "Convert to template string", - actionName: "Convert to template string", - actionDescription: ts.Diagnostics.Convert_to_template_string.message, - newContent: -`const foo = \`foobar rocks\``, -}); +verify.not.refactorAvailable(ts.Diagnostics.Convert_to_template_string.message); \ No newline at end of file diff --git a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSingleQuote.ts b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSingleQuote.ts index 0b6c94dadcd..8883cbb3ae3 100644 --- a/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSingleQuote.ts +++ b/tests/cases/fourslash/refactorConvertStringOrTemplateLiteral_ToTemplateSingleQuote.ts @@ -3,10 +3,4 @@ //// const foo = '/*x*/f/*y*/oobar rocks' goTo.select("x", "y"); -edit.applyRefactor({ - refactorName: "Convert to template string", - actionName: "Convert to template string", - actionDescription: ts.Diagnostics.Convert_to_template_string.message, - newContent: -`const foo = \`foobar rocks\``, -}); +verify.not.refactorAvailable(ts.Diagnostics.Convert_to_template_string.message);