This adds a "small" d.ts bundler script. This script is very basic,
using Node printing to produce its output. Generally speaking, this is
inadvisable as it completely disregards name shadowing, globals, etc.
However, in our case, we don't care about the globals, and we can opt to
restructure our codebase in order to avoid conflict, which we largely
had to do anyway when we were namespaces and everything was in scope.
If these are regular comments, then they won't appear in our d.ts files.
But, now we are relying on an external d.ts bundler to produce our final
merged, so they need to be present in the "input" d.ts files, meaning
they have to be JSDoc comments.
These comments only work today because all of our builds load their TS
files from scratch, so they see the actual source files and their
non-JSDoc comments.
The comments also need to be attached to a declaration, not floating,
otherwise they won't be used by api-extractor, so move them if needed.
This step converts as many explicit accesses as possible in favor of direct imports from the modules in which things were declared. This restores the code (as much as possible) back to how it looked originally before the explicitify step, e.g. instead of "ts.Node" and "ts.Symbol", we have just "Node" and "Symbol".
This step converts each file into an exported module by hoisting the namespace bodies into the global scope and transferring internal markers down onto declarations as needed.
The namespaces are reconstructed as "barrel"-style modules, which are identical to the old namespace objects in structure. These reconstructed namespaces are then imported in the newly module-ified files, making existing expressions like "ts." valid.
* fix(51301): keep the line break after removing the unused identifier
* preserve line breaks in import specifiers
* preserve line breaks in parameters and destructuring elements
* remove preserveLineBreak option
* Add 'extends' clause to 'infer' type
* Revise parse for infer..extends, improve parenthesizer
* More aggressive parens to match existing DT tests
* tests 'infer' constraint using outer type parameter
* Adds a test showing 'infer' cannot reference other 'infer' in same 'extends'
* Emit extends clause for synthetic infer typesduring declaration emit
* fix(48281) - Preserve indentation when adding missing properties
* fix(48281) - Fix object literal indentation like block
* fix(48281) - Indentation for object literal started with curly brace similar to block
* Import fix
* Wire up completions, add sorting to fix
* Fix overlapping changes when there’s only one import specifier
* Update API baseline
* Add sorting and filtering back to UMD fix
* prototype creation for method override completion snippet
* WIP: start using codefix `addNewNodeForMemberSymbol` to create method decl node
* update type of addNewNodeForMemberSymbol
* add more tests and support more cases
* add more tests and fix some details
* wip: more fixes and tests
* expose check override modifier in checker
* fix test
* WIP: add snippet support
* WIP: snippet support on emitter, adding snippets in completions
* make add snippets work with overloads (not synced)
* fix snippet adding
* rebase
* WIP: try to add snippet escaping in emitter
* support escaping in snippets
* small fixes; fixed tests
* more tests and fixes
* fix new tests
* fix modifier inheritance for overloads
* merge conflict fixes; remove comments
* throw error if setOptions is called but not implemented
* fix newline handling
* fix weird stuff
* fix tests
* fix more tests
* Fix unbound host.getNewLine
* fix isParameterDeclaration changes
* rename diagnostic to status and remove snippets from public api
* rename emitter functions + fix indentation
* check completion kind before calling isclasslikemembercompletion
* fix missing type parameters
* Revert "fix missing type parameters"
This reverts commit 7bdeaa86da.
* add isAmbient flag to addNewNodeForMemberSymbol
* add test for abstract overloads
* refactor snippet escaping support
* add user preference flag for enabling class member snippets
* update API baseline
* update tabstop order
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
Function extraction failed when using two identical `TypeLiteral`s ---
the problem is that the parameters' `.type.members` are shared in their
two occurences in the resulting code, and when the formatter bangs
position properties on the second, it's actually changing the first too.
* `typeToAutoImportableTypeNode`: wrap in `getSynthesizedDeepClone` to
avoid the offeding sharing.
* `getSynthesizedDeepCloneWorker`: add optional nodes/token visitors so
it doesn't skip cloning the above.
* A few very minor tweaks which I saw when tracing this (comment update,
two `!`s).
Fixes#44301
* Fix organize imports overlap
* Refactored multiline end position
* Added tests for single line trailing trivia
* Fix rearranging imports
* Fix lint error
* PR coments
A misbehaved client can sometimes cause the server to reach
`deleteDeclaration` with the SourceFile, and it will crash due to no
`node.parent`. I couldn't find a good way to create a test for it, but
I could trigger it manually by having a file with just a `,`, and
sending an explicit `getCodeFixes` command to the server with
`errorCodes: [6133]`.
Do three things to improve this:
1. `textChanges.ts`: if we get here with the root node, delete it
instead of failing.
2. `fixUnusedIdentifier.ts`: check that we don't `delete` a node that is
the whole source file, so the error is more focused (should have more
similar failure stacks).
3. `session.ts`: when there was any failure in `getCodeFixes`, check if
the input had a diag code that does not appear in the requested text
range, and throw an error saying that the failure is probably a
result of a bad request.
Closes#33726 (probably not fixing it, but making it easier to find the
cause)
* Refactor emit substitution into transform
* Add reusable state machine for binary expressions
* Allow emitBinary to use state machine for comments/sourcemaps
* Switch core trampoline state back to arrays
* Switch binder to parallel stacks, temporarily partially revert emitBinary
* Add link to benchmark when posting perf results
* Ensure work stacks are per-execution
* Reenable comments and sourcemaps
* Don’t offer to extract export assignment
* Terminate unterminated literals when extracting them
* Add test with regular expression ending in backslash
* Add test for string literal ending in backslash
* Remove unused parameter default
* Fix#37948
* Fix formatter skipping tab/space fixup on comments, handle trailing commas in list closing line count.
Fixes#37944
* Add newline between imports and main body of new file in moveToNewFile
Fixes#37941
* Update baseline (probably broken before?)