From d3c338123613ae9f218744bb77f6595dc1a1d181 Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Wed, 25 Sep 2019 18:34:45 -0400 Subject: [PATCH 01/10] Handle basic scenario --- .../find-inlinable-code.ts | 28 ++++++++ .../inline-variable.array-pattern.test.ts | 72 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts diff --git a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts index 989127b06..4fbb43341 100644 --- a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts +++ b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts @@ -65,6 +65,21 @@ function findInlinableCode( return result; } + if (ast.isArrayPattern(id)) { + const index = 0; + const element = id.elements[index]; + + if (!selection.isInsideNode(element)) return null; + + const child = findInlinableCode(selection, parent, { + id: element, + init + }); + if (!child) return null; + + return new InlinableArrayPattern(child, index); + } + return null; } @@ -395,3 +410,16 @@ class InlinableTopLevelObjectPattern extends CompositeInlinable { : super.codeToRemoveSelection; } } + +class InlinableArrayPattern extends CompositeInlinable { + private index: number; + + constructor(child: InlinableCode, index: number) { + super(child); + this.index = index; + } + + updateIdentifiersWith(inlinedCode: Code): Update[] { + return super.updateIdentifiersWith(`${inlinedCode}[${this.index}]`); + } +} diff --git a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts new file mode 100644 index 000000000..2a1510be3 --- /dev/null +++ b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts @@ -0,0 +1,72 @@ +import { Code } from "../../editor/editor"; +import { Selection } from "../../editor/selection"; +import { InMemoryEditor } from "../../editor/adapters/in-memory-editor"; +import { testEach } from "../../tests-helpers"; + +import { inlineVariable } from "./inline-variable"; + +describe("Inline Variable - Array Pattern", () => { + testEach<{ code: Code; selection?: Selection; expected: Code }>( + "should inline the destructured variable value", + [ + { + description: "basic scenario", + code: `const [ userId ] = session; +console.log(userId);`, + expected: `console.log(session[0]);` + }, + { + description: "init being a member expression", + code: `const [ id ] = session.user; +console.log(id);`, + expected: `console.log(session.user[0]);` + }, + { + description: "init being a member expression with a numeric literal", + code: `const [ id ] = session.users[0]; +console.log(id);`, + expected: `console.log(session.users[0][0]);` + }, + { + description: "init being a member expression with a string literal", + code: `const [ id ] = session.users["first"]; +console.log(id);`, + expected: `console.log(session.users["first"][0]);` + } + ], + async ({ code, selection = Selection.cursorAt(0, 9), expected }) => { + const result = await doInlineVariable(code, selection); + expect(result).toBe(expected); + } + ); + + testEach<{ code: Code; selection?: Selection }>( + "should should not inline the destructured variable value", + [ + { + description: "selected value is not referenced", + code: `const [ userId ] = session; +messages.map(message => ({ name }));` + }, + { + description: "many destructured elements selected", + code: `const [ userId, name ] = session; +console.log(userId);`, + selection: new Selection([0, 13], [0, 15]) + } + ], + async ({ code, selection = Selection.cursorAt(0, 9) }) => { + const result = await doInlineVariable(code, selection); + expect(result).toBe(code); + } + ); + + async function doInlineVariable( + code: Code, + selection: Selection + ): Promise { + const editor = new InMemoryEditor(code); + await inlineVariable(code, selection, editor); + return editor.code; + } +}); From 072d9034023dffe5f4aca6599c69121f704a9916 Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Wed, 25 Sep 2019 18:45:09 -0400 Subject: [PATCH 02/10] Test it works with nested elements --- .../inline-variable.array-pattern.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts index 2a1510be3..69bd4d420 100644 --- a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts +++ b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts @@ -32,6 +32,13 @@ console.log(id);`, code: `const [ id ] = session.users["first"]; console.log(id);`, expected: `console.log(session.users["first"][0]);` + }, + { + description: "nested", + code: `const [ [ id ] ] = session; +console.log(id);`, + selection: Selection.cursorAt(0, 11), + expected: `console.log(session[0][0]);` } ], async ({ code, selection = Selection.cursorAt(0, 9), expected }) => { From 792735e0a5d906cccbcf44ec4fa6891bf97108aa Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 07:31:24 -0400 Subject: [PATCH 03/10] Handle multi-lines pattern --- .../find-inlinable-code.ts | 41 +++++++++++-------- .../inline-variable.array-pattern.test.ts | 11 +++++ 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts index 4fbb43341..0a427c1e6 100644 --- a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts +++ b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts @@ -59,13 +59,15 @@ function findInlinableCode( const isTopLevelObjectPattern = ast.isVariableDeclarator(declaration); if (result && isTopLevelObjectPattern) { - result = new InlinableTopLevelObjectPattern(result, id.loc); + result = new InlinableTopLevelPattern(result, id.loc); } return result; } if (ast.isArrayPattern(id)) { + if (!ast.isSelectableNode(id)) return null; + const index = 0; const element = id.elements[index]; @@ -77,7 +79,14 @@ function findInlinableCode( }); if (!child) return null; - return new InlinableArrayPattern(child, index); + let result: InlinableCode = new InlinableArrayPattern(child, index); + + const isTopLevelObjectPattern = ast.isVariableDeclarator(declaration); + if (result && isTopLevelObjectPattern) { + result = new InlinableTopLevelPattern(result, id.loc); + } + + return result; } return null; @@ -396,30 +405,30 @@ class InlinableObjectPattern extends CompositeInlinable { } } -class InlinableTopLevelObjectPattern extends CompositeInlinable { - private loc: ast.SourceLocation; +class InlinableArrayPattern extends CompositeInlinable { + private index: number; - constructor(child: InlinableCode, loc: ast.SourceLocation) { + constructor(child: InlinableCode, index: number) { super(child); - this.loc = loc; + this.index = index; } - get codeToRemoveSelection(): Selection { - return super.shouldExtendSelectionToDeclaration - ? Selection.fromAST(this.loc) - : super.codeToRemoveSelection; + updateIdentifiersWith(inlinedCode: Code): Update[] { + return super.updateIdentifiersWith(`${inlinedCode}[${this.index}]`); } } -class InlinableArrayPattern extends CompositeInlinable { - private index: number; +class InlinableTopLevelPattern extends CompositeInlinable { + private loc: ast.SourceLocation; - constructor(child: InlinableCode, index: number) { + constructor(child: InlinableCode, loc: ast.SourceLocation) { super(child); - this.index = index; + this.loc = loc; } - updateIdentifiersWith(inlinedCode: Code): Update[] { - return super.updateIdentifiersWith(`${inlinedCode}[${this.index}]`); + get codeToRemoveSelection(): Selection { + return super.shouldExtendSelectionToDeclaration + ? Selection.fromAST(this.loc) + : super.codeToRemoveSelection; } } diff --git a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts index 69bd4d420..19e635fcc 100644 --- a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts +++ b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts @@ -39,6 +39,17 @@ console.log(id);`, console.log(id);`, selection: Selection.cursorAt(0, 11), expected: `console.log(session[0][0]);` + }, + { + description: "multi-line", + code: `const [ + [ + name + ] +] = session; +console.log(name);`, + selection: Selection.cursorAt(2, 4), + expected: `console.log(session[0][0]);` } ], async ({ code, selection = Selection.cursorAt(0, 9), expected }) => { From b3580b4754b315abfccf3d7b14087432348c5b04 Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 18:34:30 -0400 Subject: [PATCH 04/10] Extract function --- .../find-inlinable-code.ts | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts index 0a427c1e6..63a14dc12 100644 --- a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts +++ b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts @@ -16,7 +16,7 @@ export { function findInlinableCode( selection: Selection, parent: ast.Node, - declaration: { id: ast.Node; init: ast.Node | null } + declaration: Declaration ): InlinableCode | null { const { id, init } = declaration; if (!ast.isSelectableNode(init)) return null; @@ -57,15 +57,12 @@ function findInlinableCode( ); }); - const isTopLevelObjectPattern = ast.isVariableDeclarator(declaration); - if (result && isTopLevelObjectPattern) { - result = new InlinableTopLevelPattern(result, id.loc); - } - - return result; + return wrapInTopLevelPattern(result, declaration, id.loc); } if (ast.isArrayPattern(id)) { + let result: InlinableCode | null = null; + if (!ast.isSelectableNode(id)) return null; const index = 0; @@ -79,14 +76,9 @@ function findInlinableCode( }); if (!child) return null; - let result: InlinableCode = new InlinableArrayPattern(child, index); - - const isTopLevelObjectPattern = ast.isVariableDeclarator(declaration); - if (result && isTopLevelObjectPattern) { - result = new InlinableTopLevelPattern(result, id.loc); - } + result = new InlinableArrayPattern(child, index); - return result; + return wrapInTopLevelPattern(result, declaration, id.loc); } return null; @@ -119,6 +111,22 @@ function getInitName(init: ast.Node): string | null { return null; } +function wrapInTopLevelPattern( + child: InlinableCode | null, + declaration: Declaration, + loc: ast.SourceLocation +): InlinableCode | null { + if (!child) return child; + + const isTopLevelObjectPattern = ast.isVariableDeclarator(declaration); + + return isTopLevelObjectPattern + ? new InlinableTopLevelPattern(child, loc) + : child; +} + +type Declaration = { id: ast.Node; init: ast.Node | null }; + // 🎭 Component interface interface InlinableCode { From 50ba6ec7bd7cabecab8cbf4e3b9f435f89672d5d Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 21:23:54 -0400 Subject: [PATCH 05/10] Handle n-th elements --- .../find-inlinable-code.ts | 64 +++++++++++++++---- .../inline-variable.array-pattern.test.ts | 24 +++++++ 2 files changed, 76 insertions(+), 12 deletions(-) diff --git a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts index 63a14dc12..e77dd1bd4 100644 --- a/src/refactorings/inline-variable-or-function/find-inlinable-code.ts +++ b/src/refactorings/inline-variable-or-function/find-inlinable-code.ts @@ -61,22 +61,24 @@ function findInlinableCode( } if (ast.isArrayPattern(id)) { - let result: InlinableCode | null = null; - if (!ast.isSelectableNode(id)) return null; - const index = 0; - const element = id.elements[index]; + let result: InlinableCode | null = null; + id.elements.forEach((element, index) => { + if (!selection.isInsideNode(element)) return; + if (!ast.isSelectableNode(element)) return; + + const child = findInlinableCode(selection, parent, { + id: element, + init + }); + if (!child) return; - if (!selection.isInsideNode(element)) return null; + const previous = id.elements[index - 1]; + const next = id.elements[index + 1]; - const child = findInlinableCode(selection, parent, { - id: element, - init + result = new InlinableArrayPattern(child, index, element, previous, next); }); - if (!child) return null; - - result = new InlinableArrayPattern(child, index); return wrapInTopLevelPattern(result, declaration, id.loc); } @@ -415,10 +417,48 @@ class InlinableObjectPattern extends CompositeInlinable { class InlinableArrayPattern extends CompositeInlinable { private index: number; + private element: ast.SelectableNode; + private previous: ast.SelectableNode | undefined; + private next: ast.SelectableNode | undefined; - constructor(child: InlinableCode, index: number) { + constructor( + child: InlinableCode, + index: number, + element: ast.SelectableNode, + previous?: ast.Node | null, + next?: ast.Node | null + ) { super(child); this.index = index; + this.element = element; + + if (previous && ast.isSelectableNode(previous)) { + this.previous = previous; + } + + if (next && ast.isSelectableNode(next)) { + this.next = next; + } + } + + get shouldExtendSelectionToDeclaration(): boolean { + if (!super.shouldExtendSelectionToDeclaration) return false; + + return !this.next && !this.previous; + } + + get codeToRemoveSelection(): Selection { + if (!super.shouldExtendSelectionToDeclaration) { + return super.codeToRemoveSelection; + } + + const selection = Selection.fromAST(this.element.loc); + + if (this.previous && !this.next) { + return selection.extendStartToEndOf(Selection.fromAST(this.previous.loc)); + } + + return selection; } updateIdentifiersWith(inlinedCode: Code): Update[] { diff --git a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts index 19e635fcc..104c4bd07 100644 --- a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts +++ b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts @@ -50,6 +50,30 @@ console.log(id);`, console.log(name);`, selection: Selection.cursorAt(2, 4), expected: `console.log(session[0][0]);` + }, + { + description: "with other elements destructured, before", + code: `const [ userId, firstName ] = session; +console.log(userId, firstName);`, + selection: Selection.cursorAt(0, 17), + expected: `const [ userId ] = session; +console.log(userId, session[1]);` + }, + { + description: "with other elements destructured, after", + code: `const [ userId, firstName ] = session; +console.log(userId, firstName);`, + selection: Selection.cursorAt(0, 8), + expected: `const [ , firstName ] = session; +console.log(session[0], firstName);` + }, + { + description: "with other elements destructured, before & after", + code: `const [ userId, firstName, lastName ] = session; +console.log(userId, firstName);`, + selection: Selection.cursorAt(0, 17), + expected: `const [ userId, , lastName ] = session; +console.log(userId, session[1]);` } ], async ({ code, selection = Selection.cursorAt(0, 9), expected }) => { From f199ae2a60109b7ed83d9da0b5783ff2ae8b0cc6 Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 21:31:45 -0400 Subject: [PATCH 06/10] Test it works with multiple declarations --- .../inline-variable.array-pattern.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts index 104c4bd07..1c487a141 100644 --- a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts +++ b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts @@ -74,6 +74,14 @@ console.log(userId, firstName);`, selection: Selection.cursorAt(0, 17), expected: `const [ userId, , lastName ] = session; console.log(userId, session[1]);` + }, + { + description: "in a multiple declaration", + code: `const name = "John", [ userId ] = session, age = 12; +console.log(userId);`, + selection: Selection.cursorAt(0, 24), + expected: `const name = "John", age = 12; +console.log(session[0]);` } ], async ({ code, selection = Selection.cursorAt(0, 9), expected }) => { From a6c1d5db22a9ce86c7c73bd43e82c7a9b6b73723 Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 21:33:31 -0400 Subject: [PATCH 07/10] Test it works with multi-line, nested, n-th element --- .../inline-variable.array-pattern.test.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts index 1c487a141..e32117e39 100644 --- a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts +++ b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts @@ -74,6 +74,28 @@ console.log(userId, firstName);`, selection: Selection.cursorAt(0, 17), expected: `const [ userId, , lastName ] = session; console.log(userId, session[1]);` + }, + { + description: "with other elements destructured, multi-lines", + code: `const [ + userId, + [ + firstName, + lastName + ], + age +] = session; +console.log(userId, firstName);`, + selection: Selection.cursorAt(3, 4), + expected: `const [ + userId, + [ + , + lastName + ], + age +] = session; +console.log(userId, session[1][0]);` }, { description: "in a multiple declaration", From 16d9c11653891c296e2076dd70e5f2113266676c Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 21:40:07 -0400 Subject: [PATCH 08/10] Test it works with rest elements --- .../inline-variable.array-pattern.test.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts index e32117e39..902e1c110 100644 --- a/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts +++ b/src/refactorings/inline-variable-or-function/inline-variable.array-pattern.test.ts @@ -104,6 +104,37 @@ console.log(userId);`, selection: Selection.cursorAt(0, 24), expected: `const name = "John", age = 12; console.log(session[0]);` + }, + { + description: "with rest element", + code: `const [ user, ...others ] = session; +console.log(user);`, + expected: `const [ , ...others ] = session; +console.log(session[0]);` + }, + { + description: "with rest element and nesting", + code: `const [ [ [ name ] ], ...others ] = session; +console.log(name);`, + selection: Selection.cursorAt(0, 12), + expected: `const [ , ...others ] = session; +console.log(session[0][0][0]);` + }, + { + description: "with rest element not being a direct sibling", + code: `const [ [ [ name ] ], player, ...others ] = session; +console.log(name);`, + selection: Selection.cursorAt(0, 12), + expected: `const [ , player, ...others ] = session; +console.log(session[0][0][0]);` + }, + { + description: "with rest elements at different levels", + code: `const [ [ [ name ], ...userData ], player, ...others ] = session; +console.log(name);`, + selection: Selection.cursorAt(0, 12), + expected: `const [ [ , ...userData ], player, ...others ] = session; +console.log(session[0][0][0]);` } ], async ({ code, selection = Selection.cursorAt(0, 9), expected }) => { From 0a3ca63c581750b31e22eba81801738fb3cec8f7 Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 21:52:19 -0400 Subject: [PATCH 09/10] Update Changelog --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61876882d..c3477025d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +#### Inline Variable now handles destructured array patterns + +Consider the following code: + +```js +const [firstName] = names; +console.log(firstName); +``` + +If you tried to inline `firstName`, it wouldn't work because destructured array patterns were not supported. + +Now it would work as expected: + +```js +console.log(names[0]); +``` + +That means Inline Variable now handles all kind of destructured variables. Making it much more flexible and handy! + ### Fixed - All refactorings Quick Fixes used to appear on Windows because of EOL. Not anymore! From 1465a5af31893e48d8bc3ff47cde38cc00a1ee6c Mon Sep 17 00:00:00 2001 From: Nicolas Carlo Date: Thu, 26 Sep 2019 21:52:38 -0400 Subject: [PATCH 10/10] Add demo gifs for destructured patterns --- ...line-variable-destructured-array-pattern.gif | Bin 0 -> 20910 bytes .../inline-variable-destructured-patterns.gif | Bin 0 -> 26924 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/demo/inline-variable-destructured-array-pattern.gif create mode 100644 docs/demo/inline-variable-destructured-patterns.gif diff --git a/docs/demo/inline-variable-destructured-array-pattern.gif b/docs/demo/inline-variable-destructured-array-pattern.gif new file mode 100644 index 0000000000000000000000000000000000000000..868a82a63797e0bf6c2390e90d319f57cc55c4b3 GIT binary patch literal 20910 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 E0Y#sh!~g&Q literal 0 HcmV?d00001