* Handle intersection types when looking up base types for visibility
* Extract protected constructor check to function and recur on intersections
* Remove unneeded cast
* Introduce truncation into node builder and symbol display part writer
* Change default maxa truncation length to 240
* Fancy truncation + higher hard limit
* get return type from `@type` tags
Previously, getJSDocReturnType did not check the `@type` tag for a type
node that has a return type. Now it does.
* Improve doc comment of getJSDocReturnType
* More type predicates in type guards!
* Update API baselines with new documentation (?!)
* Index signatures contribute properties to unions
This means that in a union like this:
```ts
type T = { foo: number } | { [s: string]: string }
```
`foo` is now a property of `T` with type `number | string`. Previously
it was not.
Two points of interest:
1. A readonly index signature makes the resulting union property readonly.
2. A numeric index signature only contributes number-named properties.
Fixes#21141
* Correctly handle numeric and symbol property names
1. Symbol-named properties don't contribute to unions.
2. Number-named properties should use the numeric index signature type,
if present, and fall back to the string index signature type, not the
other way round.
* Rework symbol visibility checking to allow for multiple potential containers
* Express a preference for the local symbol if accessible from the enclosing declaration
* navigateTo: Collect results from all referenced projects.
* Don't use project references, just source maps
* Move more code to session
* Test when implementation file is deleted
* Use tsserver tests instead of fourslash tests to ensure session is used
* Support find-all-references
* Restore fourslash tests
* Update emit baselines (added missing newline)
* Support rename
* @weswigham code review
* Don't open/close files
* Avoid growing `toDo` too eagerly
* @sheetalkamat code review
* Also get symlinked projects for originalLocation
* Update API (#24966)
* More @sheetalkamat code review
* Remove unnecessary test
* Update API (#24966)
Previously, redirected source files merged the same way as other source
files, effectively causing the target of the redirection to be merged
twice. mergeSymbol now has an assert (`source===target`) that catches
this condition, so this change makes sure to skip redirected source
files.
This change doesn't apply to the preceding binding loop, since the
binder handles already-bound source files correctly.
Previously variable declaration+function expression worked.
Note that class expression/class declaration do not work, due to the way
they are specified. I added a test for future reference.
* Add ncie deep elaborations
* Nice stuff
* Modify tuple error to use length error mroe often
* Accept good baselines
* Accept meh baselines
* Fix literal types
* Calculate elaborations like it was the very first time again~
* Use tristate for enum relationship to ensure elaborations are printed at least once
* Update message text, nits
* move some functions back to where they were
* Add test of deep JSX elaboration
* Add elaboration test with parenthesized expressions, comma expressions, and assignments
* Move check to allow elaborations on more anonymous types
* Fix nits
* Add specialized error to elaborations of nonliteral computed named-members
* Update error message
* Don't add completions from a discriminated union type when the discriminant doesn't match
* Move code to checker
* Update API (#24966)
* Use isTypeIdenticalTo