From e9ac87c2d6ed990ea29a8626a7a5f5a2fbb78d85 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 15 Dec 2017 10:59:44 -0800 Subject: [PATCH 1/6] Don't insert a blank line after extracted locals Still insert a blank line after extracted properties. --- src/services/refactors/extractSymbol.ts | 2 +- .../extractConstant/extractConstant_ArrowFunction_Block.js | 1 - .../extractConstant/extractConstant_ArrowFunction_Block.ts | 1 - .../extractConstant/extractConstant_BlockScopeMismatch.js | 1 - .../extractConstant/extractConstant_BlockScopeMismatch.ts | 1 - .../extractConstant_BlockScopes_NoDependencies.js | 1 - .../extractConstant_BlockScopes_NoDependencies.ts | 1 - .../extractConstant/extractConstant_ClassInsertionPosition1.js | 1 - .../extractConstant/extractConstant_ClassInsertionPosition1.ts | 1 - .../extractConstant/extractConstant_ClassInsertionPosition2.js | 1 - .../extractConstant/extractConstant_ClassInsertionPosition2.ts | 1 - .../extractConstant/extractConstant_ClassInsertionPosition3.js | 1 - .../extractConstant/extractConstant_ClassInsertionPosition3.ts | 1 - .../reference/extractConstant/extractConstant_Directive.js | 1 - .../reference/extractConstant/extractConstant_Directive.ts | 1 - .../extractConstant_ExpressionStatementInNestedScope.js | 1 - .../extractConstant_ExpressionStatementInNestedScope.ts | 1 - .../reference/extractConstant/extractConstant_Function.js | 1 - .../reference/extractConstant/extractConstant_Function.ts | 1 - .../reference/extractConstant/extractConstant_Method.js | 1 - .../reference/extractConstant/extractConstant_Method.ts | 1 - .../extractConstant/extractConstant_MultipleHeaders.js | 1 - .../extractConstant/extractConstant_MultipleHeaders.ts | 1 - .../reference/extractConstant/extractConstant_Namespace.ts | 1 - .../reference/extractConstant/extractConstant_Parameters.js | 1 - .../reference/extractConstant/extractConstant_Parameters.ts | 1 - .../extractConstant/extractConstant_RepeatedSubstitution.ts | 1 - .../extractConstant_StatementInsertionPosition1.js | 1 - .../extractConstant_StatementInsertionPosition1.ts | 1 - .../extractConstant_StatementInsertionPosition2.js | 2 -- .../extractConstant_StatementInsertionPosition2.ts | 2 -- .../extractConstant_StatementInsertionPosition3.js | 1 - .../extractConstant_StatementInsertionPosition3.ts | 1 - .../extractConstant_StatementInsertionPosition4.js | 1 - .../extractConstant_StatementInsertionPosition4.ts | 1 - .../extractConstant_StatementInsertionPosition5.js | 2 -- .../extractConstant_StatementInsertionPosition5.ts | 2 -- .../extractConstant_StatementInsertionPosition7.js | 2 -- .../extractConstant_StatementInsertionPosition7.ts | 2 -- .../reference/extractConstant/extractConstant_TypeParameters.ts | 1 - 40 files changed, 1 insertion(+), 46 deletions(-) diff --git a/src/services/refactors/extractSymbol.ts b/src/services/refactors/extractSymbol.ts index b3c671f93c1..addc569129d 100644 --- a/src/services/refactors/extractSymbol.ts +++ b/src/services/refactors/extractSymbol.ts @@ -1080,7 +1080,7 @@ namespace ts.refactor.extractSymbol { changeTracker.insertNodeAtTopOfFile(context.file, newVariableStatement); } else { - changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariableStatement, /*blankLineBetween*/ true); + changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariableStatement, /*blankLineBetween*/ false); } // Consume diff --git a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js index 5e994ae5050..f4d49c11a0c 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js @@ -7,7 +7,6 @@ const f = () => { const f = () => { const newLocal = 2 + 1; - return /*RENAME*/newLocal; }; // ==SCOPE::Extract to constant in global scope== diff --git a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts index 5e994ae5050..f4d49c11a0c 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts @@ -7,7 +7,6 @@ const f = () => { const f = () => { const newLocal = 2 + 1; - return /*RENAME*/newLocal; }; // ==SCOPE::Extract to constant in global scope== 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_ClassInsertionPosition1.js b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js index fa2611caaf7..bc4f1ff1f52 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js @@ -16,7 +16,6 @@ class C { M2() { } M3() { const newLocal = 1; - let x = /*RENAME*/newLocal; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts index dc703945af7..cb1e743f446 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; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js index 1bd3e03377c..8fe8ad28302 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js @@ -16,7 +16,6 @@ class C { M2() { } M3() { const newLocal = 1; - let x = /*RENAME*/newLocal; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts index f95efd91286..16431905a2c 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; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js index aaa948b77f5..90025ae6267 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js @@ -16,7 +16,6 @@ class C { M2() { } M3() { const newLocal = 1; - let x = /*RENAME*/newLocal; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts index 10454eab67f..7f53a1672d0 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; } } 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..85241fd982f 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Function.js +++ b/tests/baselines/reference/extractConstant/extractConstant_Function.js @@ -5,7 +5,6 @@ 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== diff --git a/tests/baselines/reference/extractConstant/extractConstant_Function.ts b/tests/baselines/reference/extractConstant/extractConstant_Function.ts index 68b4f83221f..85241fd982f 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Function.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_Function.ts @@ -5,7 +5,6 @@ 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== diff --git a/tests/baselines/reference/extractConstant/extractConstant_Method.js b/tests/baselines/reference/extractConstant/extractConstant_Method.js index 95b719ade0d..a2ba5430ea0 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Method.js +++ b/tests/baselines/reference/extractConstant/extractConstant_Method.js @@ -8,7 +8,6 @@ class C { class C { M() { const newLocal = 1; - let x = /*RENAME*/newLocal; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_Method.ts b/tests/baselines/reference/extractConstant/extractConstant_Method.ts index 43779492e70..fd568341541 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; } } 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..275b967c7fd 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts @@ -5,7 +5,6 @@ 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== 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_RepeatedSubstitution.ts b/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts index 165852813f0..f021928c022 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts @@ -7,7 +7,6 @@ namespace X { namespace X { export const j = 10; const newLocal = j * j; - export const y = /*RENAME*/newLocal; } // ==SCOPE::Extract to constant in global scope== 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..534ee8607ea 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js @@ -11,7 +11,6 @@ function F() { function F() { for (let j = 0; j < 10; j++) { const newLocal = 2 + 1; - const x = /*RENAME*/newLocal; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts index b8eeb8cdfa5..534ee8607ea 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts @@ -11,7 +11,6 @@ function F() { function F() { for (let j = 0; j < 10; j++) { const newLocal = 2 + 1; - const x = /*RENAME*/newLocal; } } diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js index 9ecdbd05502..2274908d080 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) { } diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts index 9ecdbd05502..2274908d080 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) { } 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..2c1d849d825 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts @@ -16,7 +16,6 @@ class C { M() { for (let j = 0; j < 10; j++) { const newLocal: any = i + 1; - x = /*RENAME*/newLocal; } } @@ -39,7 +38,6 @@ class C { const i = 0; const newLocal: any = i + 1; - class C { M() { for (let j = 0; j < 10; j++) { 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 From 9efab94dfd0002f236e3bcbe83d9a1fd37aae74a Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 15 Dec 2017 15:01:10 -0800 Subject: [PATCH 2/6] Annotate fewer extracted constants with types Expose `isContextSensitive` from the checker and omit type annotations for expressions for which it returns false. --- src/compiler/checker.ts | 1 + src/compiler/types.ts | 2 ++ src/services/refactors/extractSymbol.ts | 2 +- .../extractConstant_StatementInsertionPosition7.ts | 6 +++--- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ca73d92e0c0..ec591b28db9 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 54f2ebfae42..98e7bf33ad6 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2739,6 +2739,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/services/refactors/extractSymbol.ts b/src/services/refactors/extractSymbol.ts index addc569129d..dadd4865ee6 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); diff --git a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts index 2c1d849d825..2ebc01938ac 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition7.ts @@ -15,7 +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; } } @@ -25,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++) { @@ -37,7 +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++) { From 129d1924bef7107f2175993864eced0d88d5d884 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 15 Dec 2017 15:10:06 -0800 Subject: [PATCH 3/6] Regression test for GH #20727 --- src/harness/unittests/extractConstants.ts | 6 ++++++ .../extractConstant/extractConstant_ContextualType.ts | 10 ++++++++++ 2 files changed, 16 insertions(+) create mode 100644 tests/baselines/reference/extractConstant/extractConstant_ContextualType.ts diff --git a/src/harness/unittests/extractConstants.ts b/src/harness/unittests/extractConstants.ts index 61ffbd01a63..c09c00b34cf 100644 --- a/src/harness/unittests/extractConstants.ts +++ b/src/harness/unittests/extractConstants.ts @@ -262,6 +262,12 @@ 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 }|]; +`); }); function testExtractConstant(caption: string, text: string) { 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; From adc3234e460e614373314146f3efdfb7465c9d7d Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 15 Dec 2017 15:49:27 -0800 Subject: [PATCH 4/6] Don't insert a blank line after extracted locals at the start of the file --- src/services/codefixes/importFixes.ts | 2 +- src/services/refactors/extractSymbol.ts | 2 +- src/services/textChanges.ts | 4 ++-- .../extractConstant/extractConstant_ArrowFunction_Block.js | 1 - .../extractConstant/extractConstant_ArrowFunction_Block.ts | 1 - .../extractConstant_ArrowFunction_Expression.js | 1 - .../extractConstant_ArrowFunction_Expression.ts | 1 - .../reference/extractConstant/extractConstant_Class.js | 1 - .../reference/extractConstant/extractConstant_Class.ts | 1 - .../extractConstant_ClassInsertionPosition1.js | 1 - .../extractConstant_ClassInsertionPosition1.ts | 1 - .../extractConstant_ClassInsertionPosition2.js | 1 - .../extractConstant_ClassInsertionPosition2.ts | 1 - .../extractConstant_ClassInsertionPosition3.js | 1 - .../extractConstant_ClassInsertionPosition3.ts | 1 - .../reference/extractConstant/extractConstant_Function.js | 1 - .../reference/extractConstant/extractConstant_Function.ts | 1 - .../reference/extractConstant/extractConstant_Method.js | 1 - .../reference/extractConstant/extractConstant_Method.ts | 1 - .../reference/extractConstant/extractConstant_Namespace.ts | 1 - .../extractConstant/extractConstant_PinnedComment.js | 1 - .../extractConstant/extractConstant_PinnedComment.ts | 1 - .../extractConstant_PinnedCommentAndDocComment.js | 1 - .../extractConstant_PinnedCommentAndDocComment.ts | 1 - .../extractConstant/extractConstant_PreserveTrivia.js | 1 - .../extractConstant/extractConstant_PreserveTrivia.ts | 1 - .../extractConstant/extractConstant_RepeatedSubstitution.ts | 1 - .../extractConstant_StatementInsertionPosition4.js | 1 - .../extractConstant_StatementInsertionPosition4.ts | 1 - .../extractConstant_StatementInsertionPosition5.js | 1 - .../extractConstant_StatementInsertionPosition5.ts | 1 - .../extractConstant_StatementInsertionPosition6.js | 1 - .../extractConstant_StatementInsertionPosition6.ts | 1 - .../reference/extractConstant/extractConstant_TopLevel.js | 1 - .../reference/extractConstant/extractConstant_TopLevel.ts | 1 - .../reference/extractConstant/extractConstant_TripleSlash.js | 1 - .../reference/extractConstant/extractConstant_TripleSlash.ts | 1 - 37 files changed, 4 insertions(+), 38 deletions(-) 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 dadd4865ee6..b7aa5ac33d1 100644 --- a/src/services/refactors/extractSymbol.ts +++ b/src/services/refactors/extractSymbol.ts @@ -1077,7 +1077,7 @@ 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*/ false); 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 f4d49c11a0c..61ef97898a9 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.js @@ -11,7 +11,6 @@ const f = () => { }; // ==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 f4d49c11a0c..61ef97898a9 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_ArrowFunction_Block.ts @@ -11,7 +11,6 @@ const f = () => { }; // ==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_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 bc4f1ff1f52..169be622d02 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.js @@ -21,7 +21,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_ClassInsertionPosition1.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts index cb1e743f446..f9927581881 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition1.ts @@ -33,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 8fe8ad28302..f1a5e1883a1 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.js @@ -21,7 +21,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_ClassInsertionPosition2.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts index 16431905a2c..66e01362c08 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition2.ts @@ -33,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 90025ae6267..142cc6257ba 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.js @@ -21,7 +21,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_ClassInsertionPosition3.ts b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts index 7f53a1672d0..fc0abadb5d8 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_ClassInsertionPosition3.ts @@ -33,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_Function.js b/tests/baselines/reference/extractConstant/extractConstant_Function.js index 85241fd982f..03537ae93bd 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Function.js +++ b/tests/baselines/reference/extractConstant/extractConstant_Function.js @@ -9,7 +9,6 @@ function F() { } // ==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 85241fd982f..03537ae93bd 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Function.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_Function.ts @@ -9,7 +9,6 @@ function F() { } // ==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 a2ba5430ea0..c3abef1e843 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Method.js +++ b/tests/baselines/reference/extractConstant/extractConstant_Method.js @@ -13,7 +13,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_Method.ts b/tests/baselines/reference/extractConstant/extractConstant_Method.ts index fd568341541..e80071b6249 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Method.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_Method.ts @@ -21,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_Namespace.ts b/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts index 275b967c7fd..28c0dc9d661 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_Namespace.ts @@ -9,7 +9,6 @@ namespace N { } // ==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_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 f021928c022..8328a2fdce6 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_RepeatedSubstitution.ts @@ -11,7 +11,6 @@ namespace X { } // ==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_StatementInsertionPosition4.js b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js index 534ee8607ea..fdf32195aae 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.js @@ -17,7 +17,6 @@ function F() { // ==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 534ee8607ea..fdf32195aae 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition4.ts @@ -17,7 +17,6 @@ function F() { // ==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 2274908d080..55617b56a3c 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.js @@ -29,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 2274908d080..55617b56a3c 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_StatementInsertionPosition5.ts @@ -29,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_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 From 08a9c616402bc971ded3fe17efc99e5548606092 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 15 Dec 2017 16:31:27 -0800 Subject: [PATCH 5/6] Update fourslash baseline --- tests/cases/fourslash/extract-const1.ts | 1 - 1 file changed, 1 deletion(-) 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;` }); From 804949f7444b0c42a1f0ca10a69fef23518a397b Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 15 Dec 2017 16:37:09 -0800 Subject: [PATCH 6/6] Additional test case for contextual type check --- src/harness/unittests/extractConstants.ts | 6 ++++++ .../extractConstant_ContextualType_Lambda.ts | 11 +++++++++++ 2 files changed, 17 insertions(+) create mode 100644 tests/baselines/reference/extractConstant/extractConstant_ContextualType_Lambda.ts diff --git a/src/harness/unittests/extractConstants.ts b/src/harness/unittests/extractConstants.ts index c09c00b34cf..71b550cba8f 100644 --- a/src/harness/unittests/extractConstants.ts +++ b/src/harness/unittests/extractConstants.ts @@ -267,6 +267,12 @@ namespace N { // Force this test to be TS-only 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|], +} `); }); 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, +}