From aa12ec440c9fcd1e74576c615cd3bf889fcc74db Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 25 Jul 2019 09:47:57 -0700 Subject: [PATCH] Fix smart select on last blank line of file (#32544) * Fix SmartSelection on last blank line of file * Add baseline --- src/services/smartSelection.ts | 7 +++++++ .../reference/smartSelection_lastBlankLine.baseline | 5 +++++ tests/cases/fourslash/smartSelection_lastBlankLine.ts | 5 +++++ 3 files changed, 17 insertions(+) create mode 100644 tests/baselines/reference/smartSelection_lastBlankLine.baseline create mode 100644 tests/cases/fourslash/smartSelection_lastBlankLine.ts diff --git a/src/services/smartSelection.ts b/src/services/smartSelection.ts index d0423ce031e..3765c39ed7a 100644 --- a/src/services/smartSelection.ts +++ b/src/services/smartSelection.ts @@ -64,6 +64,13 @@ namespace ts.SmartSelectionRange { parentNode = node; break; } + + // If we made it to the end of the for loop, we’re done. + // In practice, I’ve only seen this happen at the very end + // of a SourceFile. + if (i === children.length - 1) { + break outer; + } } } diff --git a/tests/baselines/reference/smartSelection_lastBlankLine.baseline b/tests/baselines/reference/smartSelection_lastBlankLine.baseline new file mode 100644 index 00000000000..3cbad44aac4 --- /dev/null +++ b/tests/baselines/reference/smartSelection_lastBlankLine.baseline @@ -0,0 +1,5 @@ +class C {} +/**/ + + +class C {}↲ diff --git a/tests/cases/fourslash/smartSelection_lastBlankLine.ts b/tests/cases/fourslash/smartSelection_lastBlankLine.ts new file mode 100644 index 00000000000..2f5cc3f07fc --- /dev/null +++ b/tests/cases/fourslash/smartSelection_lastBlankLine.ts @@ -0,0 +1,5 @@ +/// +////class C {} +/////**/ + +verify.baselineSmartSelection();