1. Retain surrounding trivia when swapping the keyword.
2. Insert commas at the full-starts, rather than starts, of existing
keywords when merging with existing implements clauses.
Fixes#18794
* Make ChangeTracker#newLineCharacter public, to avoid having to pass newLineCharacter around as a parameter
* Don't require newLineCharacter as input to ChangeTracker methods, and make it private again
* Cherrypick non-comparability related changes from prolific literals PR
* Renames and other style changes
* Accept changes to new tests
* Exclude the domain root from contextual typing literals except for type variables
* Readd simple preservation fix
* Add huge map test
* Revert changes to widening on destructuring initalizers
* Use tristate for subtype-reduction type
* Rename type and argument
* Move longer-running test to user suite
* Support a "getCombinedCodeFix" service
* Rename things
* Code review
* Rename things
* Update API baselines
* CodeActionAll -> CombinedCodeActions
* Take a `scope` parameter instead of `fileName` for flexibility
* Renames and bugfixes
* Make API changes internal
* Code review
* Update comment
* For import fix, prefer symlink over a real path
* fixes
* Use best result from all symlinks
* Make originalPath optional more
* Only include real path if a symlink isn't available
* Remove unnecessary wrapper classes in ts.formatting.Rule
* RulesProvider -> immutable FormatContext
* Remove Rules class, just use a list of rules
* Remove Shared namespace, replace Shared.TokenRange with TokenRange
* Simplify TokenRange
* Separate Rule and RuleSpec
* Move FormattingRequestKind to formattingContext.ts
* Simplify references
* Fix lint
* Revert removal of trailing newlines
* import fix: suggest import..require where supported if synthetic defaults are unavailable
* Add tests for import..require fix when targeting CommonJS, AMD, and UMD modules
* fix failing tests
* improve import code fixes for UMD modules
- use default import under --allowSyntheticDefaultImports
- import..require support
- make make quick fix info match resulting import
- make diagnostics
* Address PR feedback:
- extract test for synethetic default imports into getAllowSyntheticDefaultImports in core.ts
- use getAllowSyntheticDefaultImports in checker.ts and importFixes.ts
- move compilerOptions to top level destructuring
* add tests
* remove `import =` quick fix and supporting code.
* update feature tests
* remove errant whitespace