Skip to content

Commit 22c4862

Browse files
authored
Merge pull request #21835 from amcasey/GH21786
Handle variable declaration without initializer in Convert to ES6 Module
2 parents d99cd05 + 1baae42 commit 22c4862

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/services/refactors/convertToEs6Module.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,17 @@ namespace ts.refactor {
3333
return isExportsOrModuleExportsOrAlias(sourceFile, node as PropertyAccessExpression)
3434
|| isExportsOrModuleExportsOrAlias(sourceFile, (node as PropertyAccessExpression).expression);
3535
case SyntaxKind.VariableDeclarationList:
36-
const decl = firstOrUndefined((node as VariableDeclarationList).declarations);
37-
return !!decl && isExportsOrModuleExportsOrAlias(sourceFile, decl.initializer);
36+
return isVariableDeclarationTriggerLocation(firstOrUndefined((node as VariableDeclarationList).declarations));
3837
case SyntaxKind.VariableDeclaration:
39-
return isExportsOrModuleExportsOrAlias(sourceFile, (node as VariableDeclaration).initializer);
38+
return isVariableDeclarationTriggerLocation(node as VariableDeclaration);
4039
default:
4140
return isExpression(node) && isExportsOrModuleExportsOrAlias(sourceFile, node)
4241
|| !onSecondTry && isAtTriggerLocation(sourceFile, node.parent, /*onSecondTry*/ true);
4342
}
43+
44+
function isVariableDeclarationTriggerLocation(decl: VariableDeclaration | undefined) {
45+
return !!decl && !!decl.initializer && isExportsOrModuleExportsOrAlias(sourceFile, decl.initializer);
46+
}
4447
}
4548

4649
function isAtTopLevelRequire(call: CallExpression): boolean {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @allowJs: true
4+
5+
// @Filename: /a.js
6+
/////*a*/const/*b*/ alias;
7+
////require("x");
8+
9+
goTo.select("a", "b");
10+
verify.not.refactorAvailable("Convert to ES6 module");
11+

0 commit comments

Comments
 (0)