From dd5fb38083bb5ba188c01b51a09cb137dc3ca586 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Fri, 9 Feb 2018 14:06:37 -0800 Subject: [PATCH 1/2] Handle empty declaration list in Convert to ES6 Module --- src/services/refactors/convertToEs6Module.ts | 4 ++-- ...efactorConvertToEs6Module_triggers_declarationList.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts diff --git a/src/services/refactors/convertToEs6Module.ts b/src/services/refactors/convertToEs6Module.ts index 5a7f2e90718d8..65f9f58ccc494 100644 --- a/src/services/refactors/convertToEs6Module.ts +++ b/src/services/refactors/convertToEs6Module.ts @@ -33,8 +33,8 @@ namespace ts.refactor { return isExportsOrModuleExportsOrAlias(sourceFile, node as PropertyAccessExpression) || isExportsOrModuleExportsOrAlias(sourceFile, (node as PropertyAccessExpression).expression); case SyntaxKind.VariableDeclarationList: - const decl = (node as VariableDeclarationList).declarations[0]; - return isExportsOrModuleExportsOrAlias(sourceFile, decl.initializer); + const decl = firstOrUndefined((node as VariableDeclarationList).declarations); + return !!decl && isExportsOrModuleExportsOrAlias(sourceFile, decl.initializer); case SyntaxKind.VariableDeclaration: return isExportsOrModuleExportsOrAlias(sourceFile, (node as VariableDeclaration).initializer); default: diff --git a/tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts b/tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts new file mode 100644 index 0000000000000..358c4fb272241 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts @@ -0,0 +1,9 @@ +/// + +// @allowJs: true + +// @Filename: /a.js +////c[|o|]nst; +////require("x"); + +goTo.eachRange(() => verify.refactorAvailable("Convert to ES6 module")); From 8aa7fcfc5361a996b8cf5eb5cdb6aad33a02325d Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Fri, 9 Feb 2018 14:24:46 -0800 Subject: [PATCH 2/2] Fix test --- .../refactorConvertToEs6Module_triggers_declarationList.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts b/tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts index 358c4fb272241..36ec32b0561e2 100644 --- a/tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts +++ b/tests/cases/fourslash/refactorConvertToEs6Module_triggers_declarationList.ts @@ -6,4 +6,4 @@ ////c[|o|]nst; ////require("x"); -goTo.eachRange(() => verify.refactorAvailable("Convert to ES6 module")); +goTo.eachRange(() => verify.not.refactorAvailable("Convert to ES6 module"));