From 425a4182a3eb694835841ea2f614b2a914a348c2 Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 9 Feb 2018 14:46:57 -0800 Subject: [PATCH] Handle empty declaration list in Convert to ES6 Module (#21843) * Handle empty declaration list in Convert to ES6 Module * Fix test --- 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 5a7f2e90718..65f9f58ccc4 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 00000000000..36ec32b0561 --- /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.not.refactorAvailable("Convert to ES6 module"));