diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts
index 1421c4a3749..38600b3fc14 100644
--- a/src/compiler/checker.ts
+++ b/src/compiler/checker.ts
@@ -171,6 +171,7 @@ namespace ts {
node = getParseTreeNode(node, isExpression);
return node ? getContextualType(node) : undefined;
},
+ isContextSensitive,
getFullyQualifiedName,
getResolvedSignature: (node, candidatesOutArray, theArgumentCount) => {
node = getParseTreeNode(node, isCallLikeExpression);
diff --git a/src/compiler/types.ts b/src/compiler/types.ts
index 51465a6baf5..83d70c90122 100644
--- a/src/compiler/types.ts
+++ b/src/compiler/types.ts
@@ -2769,6 +2769,8 @@ namespace ts {
getAugmentedPropertiesOfType(type: Type): Symbol[];
getRootSymbols(symbol: Symbol): Symbol[];
getContextualType(node: Expression): Type | undefined;
+ /* @internal */ isContextSensitive(node: Expression | MethodDeclaration | ObjectLiteralElementLike | JsxAttributeLike): boolean;
+
/**
* returns unknownSignature in the case of an error.
* @param argumentCount Apparent number of arguments, passed in case of a possibly incomplete call. This should come from an ArgumentListInfo. See `signatureHelp.ts`.
diff --git a/src/harness/unittests/extractConstants.ts b/src/harness/unittests/extractConstants.ts
index 61ffbd01a63..71b550cba8f 100644
--- a/src/harness/unittests/extractConstants.ts
+++ b/src/harness/unittests/extractConstants.ts
@@ -262,6 +262,18 @@ namespace N { // Force this test to be TS-only
y = [#|this.x|];
}
}`);
+
+ // TODO (https://github.com/Microsoft/TypeScript/issues/20727): the extracted constant should have a type annotation.
+ testExtractConstant("extractConstant_ContextualType", `
+interface I { a: 1 | 2 | 3 }
+let i: I = [#|{ a: 1 }|];
+`);
+
+ testExtractConstant("extractConstant_ContextualType_Lambda", `
+const myObj: { member(x: number, y: string): void } = {
+ member: [#|(x, y) => x + y|],
+}
+`);
});
function testExtractConstant(caption: string, text: string) {
diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts
index 0dd7cf2ca25..04c1cd4b6d9 100644
--- a/src/services/codefixes/importFixes.ts
+++ b/src/services/codefixes/importFixes.ts
@@ -279,7 +279,7 @@ namespace ts.codefix {
changeTracker.insertNodeAfter(sourceFile, lastImportDeclaration, importDecl);
}
else {
- changeTracker.insertNodeAtTopOfFile(sourceFile, importDecl);
+ changeTracker.insertNodeAtTopOfFile(sourceFile, importDecl, /*blankLineBetween*/ true);
}
});
diff --git a/src/services/refactors/extractSymbol.ts b/src/services/refactors/extractSymbol.ts
index b3c671f93c1..b7aa5ac33d1 100644
--- a/src/services/refactors/extractSymbol.ts
+++ b/src/services/refactors/extractSymbol.ts
@@ -1004,7 +1004,7 @@ namespace ts.refactor.extractSymbol {
const localNameText = getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file.text);
const isJS = isInJavaScriptFile(scope);
- const variableType = isJS
+ const variableType = isJS || !checker.isContextSensitive(node)
? undefined
: checker.typeToTypeNode(checker.getContextualType(node), scope, NodeBuilderFlags.NoTruncation);
@@ -1077,10 +1077,10 @@ namespace ts.refactor.extractSymbol {
// Declare
const nodeToInsertBefore = getNodeToInsertConstantBefore(node, scope);
if (nodeToInsertBefore.pos === 0) {
- changeTracker.insertNodeAtTopOfFile(context.file, newVariableStatement);
+ changeTracker.insertNodeAtTopOfFile(context.file, newVariableStatement, /*blankLineBetween*/ false);
}
else {
- changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariableStatement, /*blankLineBetween*/ true);
+ changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariableStatement, /*blankLineBetween*/ false);
}
// Consume
diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts
index d9c592488e2..82fe3d20f6b 100644
--- a/src/services/textChanges.ts
+++ b/src/services/textChanges.ts
@@ -332,11 +332,11 @@ namespace ts.textChanges {
return this;
}
- public insertNodeAtTopOfFile(sourceFile: SourceFile, newNode: Statement): void {
+ public insertNodeAtTopOfFile(sourceFile: SourceFile, newNode: Statement, blankLineBetween: boolean): void {
const pos = getInsertionPositionAtSourceFileTop(sourceFile);
this.insertNodeAt(sourceFile, pos, newNode, {
prefix: pos === 0 ? undefined : this.newLineCharacter,
- suffix: isLineBreak(sourceFile.text.charCodeAt(pos)) ? this.newLineCharacter : this.newLineCharacter + this.newLineCharacter,
+ suffix: (isLineBreak(sourceFile.text.charCodeAt(pos)) ? "" : this.newLineCharacter) + (blankLineBetween ? this.newLineCharacter : ""),
});
}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js
index 5e994ae5050..61ef97898a9 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js
@@ -7,12 +7,10 @@ const f = () => {
const f = () => {
const newLocal = 2 + 1;
-
return /*RENAME*/newLocal;
};
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
const f = () => {
return /*RENAME*/newLocal;
};
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts
index 5e994ae5050..61ef97898a9 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts
@@ -7,12 +7,10 @@ const f = () => {
const f = () => {
const newLocal = 2 + 1;
-
return /*RENAME*/newLocal;
};
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
const f = () => {
return /*RENAME*/newLocal;
};
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.js b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.js
index 76902f4db93..ac6de28d3c4 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.js
@@ -2,5 +2,4 @@
const f = () => /*[#|*/2 + 1/*|]*/;
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
const f = () => /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.ts b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.ts
index 76902f4db93..ac6de28d3c4 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Expression.ts
@@ -2,5 +2,4 @@
const f = () => /*[#|*/2 + 1/*|]*/;
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
const f = () => /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.js b/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.js
index 8231aa543c4..a36ead114c0 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.js
@@ -11,7 +11,6 @@ for (let i = 0; i < 10; i++) {
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
const newLocal = i + 1;
-
const x = /*RENAME*/newLocal;
}
}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.ts b/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.ts
index 8231aa543c4..a36ead114c0 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_BlockScopeMismatch.ts
@@ -11,7 +11,6 @@ for (let i = 0; i < 10; i++) {
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
const newLocal = i + 1;
-
const x = /*RENAME*/newLocal;
}
}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.js b/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.js
index 4880ee263c5..c3f1552b366 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.js
@@ -8,7 +8,6 @@ for (let i = 0; i < 10; i++) {
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.ts b/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.ts
index 4880ee263c5..c3f1552b366 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_BlockScopes_NoDependencies.ts
@@ -8,7 +8,6 @@ for (let i = 0; i < 10; i++) {
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Class.js b/tests/baselines/reference/extractConstant/extractConstant_Class.js
index 1e98f8c54d0..a4c98240d97 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Class.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_Class.js
@@ -4,7 +4,6 @@ class C {
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Class.ts b/tests/baselines/reference/extractConstant/extractConstant_Class.ts
index 2c307fc64af..9dda80d7e9d 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Class.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_Class.ts
@@ -10,7 +10,6 @@ class C {
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js
index fa2611caaf7..169be622d02 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js
@@ -16,13 +16,11 @@ class C {
M2() { }
M3() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
a = 1;
b = 2;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts
index dc703945af7..f9927581881 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts
@@ -16,7 +16,6 @@ class C {
M2() { }
M3() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
@@ -34,7 +33,6 @@ class C {
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
a = 1;
b = 2;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js
index 1bd3e03377c..f1a5e1883a1 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js
@@ -16,13 +16,11 @@ class C {
M2() { }
M3() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
a = 1;
M1() { }
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts
index f95efd91286..66e01362c08 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts
@@ -16,7 +16,6 @@ class C {
M2() { }
M3() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
@@ -34,7 +33,6 @@ class C {
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
a = 1;
M1() { }
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js
index aaa948b77f5..142cc6257ba 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js
@@ -16,13 +16,11 @@ class C {
M2() { }
M3() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
M1() { }
a = 1;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts
index 10454eab67f..fc0abadb5d8 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts
@@ -16,7 +16,6 @@ class C {
M2() { }
M3() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
@@ -34,7 +33,6 @@ class C {
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
M1() { }
a = 1;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ContextualType.ts b/tests/baselines/reference/extractConstant/extractConstant_ContextualType.ts
new file mode 100644
index 00000000000..fcec7db3bf4
--- /dev/null
+++ b/tests/baselines/reference/extractConstant/extractConstant_ContextualType.ts
@@ -0,0 +1,10 @@
+// ==ORIGINAL==
+
+interface I { a: 1 | 2 | 3 }
+let i: I = /*[#|*/{ a: 1 }/*|]*/;
+
+// ==SCOPE::Extract to constant in enclosing scope==
+
+interface I { a: 1 | 2 | 3 }
+const newLocal = { a: 1 };
+let i: I = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ContextualType_Lambda.ts b/tests/baselines/reference/extractConstant/extractConstant_ContextualType_Lambda.ts
new file mode 100644
index 00000000000..d5a5a55bc27
--- /dev/null
+++ b/tests/baselines/reference/extractConstant/extractConstant_ContextualType_Lambda.ts
@@ -0,0 +1,11 @@
+// ==ORIGINAL==
+
+const myObj: { member(x: number, y: string): void } = {
+ member: /*[#|*/(x, y) => x + y/*|]*/,
+}
+
+// ==SCOPE::Extract to constant in enclosing scope==
+const newLocal: (x: number, y: string) => void = (x, y) => x + y;
+const myObj: { member(x: number, y: string): void } = {
+ member: /*RENAME*/newLocal,
+}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Directive.js b/tests/baselines/reference/extractConstant/extractConstant_Directive.js
index b15099c7dd3..2e255696703 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Directive.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_Directive.js
@@ -9,6 +9,5 @@ const x = /*[#|*/2 + 1/*|]*/;
"strict";
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Directive.ts b/tests/baselines/reference/extractConstant/extractConstant_Directive.ts
index b15099c7dd3..2e255696703 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Directive.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_Directive.ts
@@ -9,6 +9,5 @@ const x = /*[#|*/2 + 1/*|]*/;
"strict";
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.js b/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.js
index 51c2c07eed8..23cdfee8281 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.js
@@ -16,7 +16,6 @@ function F() {
let i = 0;
const /*RENAME*/newLocal = i++;
-
function F() {
}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.ts b/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.ts
index 51c2c07eed8..23cdfee8281 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_ExpressionStatementInNestedScope.ts
@@ -16,7 +16,6 @@ function F() {
let i = 0;
const /*RENAME*/newLocal = i++;
-
function F() {
}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Function.js b/tests/baselines/reference/extractConstant/extractConstant_Function.js
index 68b4f83221f..03537ae93bd 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Function.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_Function.js
@@ -5,12 +5,10 @@ function F() {
// ==SCOPE::Extract to constant in enclosing scope==
function F() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
function F() {
let x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Function.ts b/tests/baselines/reference/extractConstant/extractConstant_Function.ts
index 68b4f83221f..03537ae93bd 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Function.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_Function.ts
@@ -5,12 +5,10 @@ function F() {
// ==SCOPE::Extract to constant in enclosing scope==
function F() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
function F() {
let x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Method.js b/tests/baselines/reference/extractConstant/extractConstant_Method.js
index 95b719ade0d..c3abef1e843 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Method.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_Method.js
@@ -8,13 +8,11 @@ class C {
class C {
M() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
M() {
let x = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Method.ts b/tests/baselines/reference/extractConstant/extractConstant_Method.ts
index 43779492e70..e80071b6249 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Method.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_Method.ts
@@ -8,7 +8,6 @@ class C {
class C {
M() {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
}
@@ -22,7 +21,6 @@ class C {
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
class C {
M() {
let x = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.js b/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.js
index 52ea400a0f6..1bfe7b78bc5 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.js
@@ -17,6 +17,5 @@ const x = /*[#|*/2 + 1/*|]*/;
"strict";
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.ts b/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.ts
index 52ea400a0f6..1bfe7b78bc5 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_MultipleHeaders.ts
@@ -17,6 +17,5 @@ const x = /*[#|*/2 + 1/*|]*/;
"strict";
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts b/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts
index c9937eb1869..28c0dc9d661 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts
@@ -5,12 +5,10 @@ namespace N {
// ==SCOPE::Extract to constant in enclosing scope==
namespace N {
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 1;
-
namespace N {
let x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Parameters.js b/tests/baselines/reference/extractConstant/extractConstant_Parameters.js
index 6c657f9d5ed..df830e44083 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Parameters.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_Parameters.js
@@ -7,6 +7,5 @@ function F() {
function F() {
let w = 1;
const newLocal = w + 1;
-
let x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_Parameters.ts b/tests/baselines/reference/extractConstant/extractConstant_Parameters.ts
index 6c657f9d5ed..df830e44083 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_Parameters.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_Parameters.ts
@@ -7,6 +7,5 @@ function F() {
function F() {
let w = 1;
const newLocal = w + 1;
-
let x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.js b/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.js
index 64620d817c6..44e5626c80a 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.js
@@ -9,6 +9,5 @@ const x = /*[#|*/2 + 1/*|]*/;
/*! Copyright */
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.ts b/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.ts
index 64620d817c6..44e5626c80a 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_PinnedComment.ts
@@ -9,6 +9,5 @@ const x = /*[#|*/2 + 1/*|]*/;
/*! Copyright */
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.js b/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.js
index 9a3e7322355..5cd9d41ec4c 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.js
@@ -10,7 +10,6 @@ const x = /*[#|*/2 + 1/*|]*/;
/*! Copyright */
const newLocal = 2 + 1;
-
/* About x */
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.ts b/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.ts
index 9a3e7322355..5cd9d41ec4c 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_PinnedCommentAndDocComment.ts
@@ -10,7 +10,6 @@ const x = /*[#|*/2 + 1/*|]*/;
/*! Copyright */
const newLocal = 2 + 1;
-
/* About x */
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.js b/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.js
index 22abb77901d..9336cec58ec 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.js
@@ -10,7 +10,6 @@ var q = /*b*/ //c
const newLocal = 1 /*e*/ //f
/*g*/ + /*h*/ //i
/*j*/ 2;
-
// a
var q = /*b*/ //c
/*d*/ /*RENAME*/newLocal /*k*/ //l
diff --git a/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.ts b/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.ts
index 22abb77901d..9336cec58ec 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_PreserveTrivia.ts
@@ -10,7 +10,6 @@ var q = /*b*/ //c
const newLocal = 1 /*e*/ //f
/*g*/ + /*h*/ //i
/*j*/ 2;
-
// a
var q = /*b*/ //c
/*d*/ /*RENAME*/newLocal /*k*/ //l
diff --git a/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts b/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts
index 165852813f0..8328a2fdce6 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts
@@ -7,12 +7,10 @@ namespace X {
namespace X {
export const j = 10;
const newLocal = j * j;
-
export const y = /*RENAME*/newLocal;
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = X.j * X.j;
-
namespace X {
export const j = 10;
export const y = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.js
index 618407155ee..04239744616 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.js
@@ -10,7 +10,6 @@ for (let j = 0; j < 10; j++) {
const i = 0;
for (let j = 0; j < 10; j++) {
const newLocal = i + 1;
-
const x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.ts
index 618407155ee..04239744616 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition1.ts
@@ -10,7 +10,6 @@ for (let j = 0; j < 10; j++) {
const i = 0;
for (let j = 0; j < 10; j++) {
const newLocal = i + 1;
-
const x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.js
index 5d279a42aa1..6480c294c51 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.js
@@ -13,7 +13,6 @@ const i = 0;
function F() {
for (let j = 0; j < 10; j++) {
const newLocal = i + 1;
-
const x = /*RENAME*/newLocal;
}
}
@@ -22,7 +21,6 @@ function F() {
const i = 0;
const newLocal = i + 1;
-
function F() {
for (let j = 0; j < 10; j++) {
const x = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.ts
index 5d279a42aa1..6480c294c51 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition2.ts
@@ -13,7 +13,6 @@ const i = 0;
function F() {
for (let j = 0; j < 10; j++) {
const newLocal = i + 1;
-
const x = /*RENAME*/newLocal;
}
}
@@ -22,7 +21,6 @@ function F() {
const i = 0;
const newLocal = i + 1;
-
function F() {
for (let j = 0; j < 10; j++) {
const x = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.js
index bf970bf4ec7..ea8aaefd737 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.js
@@ -8,7 +8,6 @@ for (let j = 0; j < 10; j++) {
for (let j = 0; j < 10; j++) {
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.ts
index bf970bf4ec7..ea8aaefd737 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition3.ts
@@ -8,7 +8,6 @@ for (let j = 0; j < 10; j++) {
for (let j = 0; j < 10; j++) {
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js
index b8eeb8cdfa5..fdf32195aae 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js
@@ -11,14 +11,12 @@ function F() {
function F() {
for (let j = 0; j < 10; j++) {
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
}
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
function F() {
for (let j = 0; j < 10; j++) {
const x = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts
index b8eeb8cdfa5..fdf32195aae 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts
@@ -11,14 +11,12 @@ function F() {
function F() {
for (let j = 0; j < 10; j++) {
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
}
}
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
function F() {
for (let j = 0; j < 10; j++) {
const x = /*RENAME*/newLocal;
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js
index 9ecdbd05502..55617b56a3c 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js
@@ -12,7 +12,6 @@ function F0() {
function F0() {
function F1() {
const newLocal = 2 + 1;
-
function F2(x = /*RENAME*/newLocal) {
}
}
@@ -22,7 +21,6 @@ function F0() {
function F0() {
const newLocal = 2 + 1;
-
function F1() {
function F2(x = /*RENAME*/newLocal) {
}
@@ -31,7 +29,6 @@ function F0() {
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
function F0() {
function F1() {
function F2(x = /*RENAME*/newLocal) {
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts
index 9ecdbd05502..55617b56a3c 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts
@@ -12,7 +12,6 @@ function F0() {
function F0() {
function F1() {
const newLocal = 2 + 1;
-
function F2(x = /*RENAME*/newLocal) {
}
}
@@ -22,7 +21,6 @@ function F0() {
function F0() {
const newLocal = 2 + 1;
-
function F1() {
function F2(x = /*RENAME*/newLocal) {
}
@@ -31,7 +29,6 @@ function F0() {
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
function F0() {
function F1() {
function F2(x = /*RENAME*/newLocal) {
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.js
index b39af4525a1..3438d8bd832 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.js
@@ -6,7 +6,6 @@ class C {
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
class C {
x = /*RENAME*/newLocal;
}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.ts
index 82d48157720..7c560ece5b0 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition6.ts
@@ -14,7 +14,6 @@ class C {
// ==SCOPE::Extract to constant in global scope==
const newLocal = 2 + 1;
-
class C {
x = /*RENAME*/newLocal;
}
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.js
index 0eb1d12fd48..524ee8f4cf7 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.js
@@ -16,7 +16,6 @@ class C {
M() {
for (let j = 0; j < 10; j++) {
const newLocal = i + 1;
-
x = /*RENAME*/newLocal;
}
}
@@ -26,7 +25,6 @@ class C {
const i = 0;
const newLocal = i + 1;
-
class C {
M() {
for (let j = 0; j < 10; j++) {
diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts
index 42651d6340b..2ebc01938ac 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts
@@ -15,8 +15,7 @@ const i = 0;
class C {
M() {
for (let j = 0; j < 10; j++) {
- const newLocal: any = i + 1;
-
+ const newLocal = i + 1;
x = /*RENAME*/newLocal;
}
}
@@ -26,7 +25,7 @@ class C {
const i = 0;
class C {
- private readonly newProperty: any = i + 1;
+ private readonly newProperty = i + 1;
M() {
for (let j = 0; j < 10; j++) {
@@ -38,8 +37,7 @@ class C {
// ==SCOPE::Extract to constant in global scope==
const i = 0;
-const newLocal: any = i + 1;
-
+const newLocal = i + 1;
class C {
M() {
for (let j = 0; j < 10; j++) {
diff --git a/tests/baselines/reference/extractConstant/extractConstant_TopLevel.js b/tests/baselines/reference/extractConstant/extractConstant_TopLevel.js
index a6eeb89b7e9..1e5ecf90ad6 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_TopLevel.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_TopLevel.js
@@ -2,5 +2,4 @@
let x = /*[#|*/1/*|]*/;
// ==SCOPE::Extract to constant in enclosing scope==
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_TopLevel.ts b/tests/baselines/reference/extractConstant/extractConstant_TopLevel.ts
index a6eeb89b7e9..1e5ecf90ad6 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_TopLevel.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_TopLevel.ts
@@ -2,5 +2,4 @@
let x = /*[#|*/1/*|]*/;
// ==SCOPE::Extract to constant in enclosing scope==
const newLocal = 1;
-
let x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.js b/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.js
index 5479d022a01..9e7821f6cdb 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.js
+++ b/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.js
@@ -9,6 +9,5 @@ const x = /*[#|*/2 + 1/*|]*/;
///
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.ts b/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.ts
index 5479d022a01..9e7821f6cdb 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_TripleSlash.ts
@@ -9,6 +9,5 @@ const x = /*[#|*/2 + 1/*|]*/;
///
const newLocal = 2 + 1;
-
const x = /*RENAME*/newLocal;
\ No newline at end of file
diff --git a/tests/baselines/reference/extractConstant/extractConstant_TypeParameters.ts b/tests/baselines/reference/extractConstant/extractConstant_TypeParameters.ts
index 8e6ff785278..217e4f4ab58 100644
--- a/tests/baselines/reference/extractConstant/extractConstant_TypeParameters.ts
+++ b/tests/baselines/reference/extractConstant/extractConstant_TypeParameters.ts
@@ -5,6 +5,5 @@ function F(t: T) {
// ==SCOPE::Extract to constant in enclosing scope==
function F(t: T) {
const newLocal = t + 1;
-
let x = /*RENAME*/newLocal;
}
\ No newline at end of file
diff --git a/tests/cases/fourslash/extract-const1.ts b/tests/cases/fourslash/extract-const1.ts
index 3ed9373f2ba..595e56a7e1d 100644
--- a/tests/cases/fourslash/extract-const1.ts
+++ b/tests/cases/fourslash/extract-const1.ts
@@ -9,6 +9,5 @@ edit.applyRefactor({
actionDescription: "Extract to constant in enclosing scope",
newContent:
`const newLocal = 0;
-
const x = /*RENAME*/newLocal;`
});