Initial draft that works for union types
First draft of PR ready code with tests
Revert changed line for testing
Add exhaustiveness checking and move narrowByTypeOfWitnesses
Try caching mechanism
Comment out exhaustiveness checking to find perf regression
Re-enable exhaustiveness checking for typeof switches
Check if changes to narrowByTypeOfWitnesses fix perf alone.
Improve switch narrowing:
+ Take into account repeated clauses in the switch.
+ Handle unions of constrained type parameters.
Add more tests
Comments
Revert back to if-like behaviour
Remove redundant checks and simplify exhaustiveness checks
Change comment for narrowBySwitchOnTypeOf
Reduce implied type with getAssignmentReducedType
Remove any annotations
* Add axios' source to user tests
We already have the npm-installed version in order to test their d.ts so
that we don't break their users.
* Just compile lib, plus fix some config lint
* Add create-react-app
* Add puppeteer
Everything is broken now. I am going back to master to see if that fixes
things.
* Add puppeteer baseline
* Add chalk override (gitignore was ignoring it)
* Prepare for adding webpack submodule
* Actually switch webpack to submodule
I'm sure this will work with no problems!
* Add ignore=all to webpack gitmodule entry
The other submodules do this, although I'm not sure why.
* Add newline at end of .gitmodules
* Exclude generated files from user tests
The top 3 offenders, at least: bcryptjs, bluebird and lodash.
* Clean url-search-params too
Only need to build the commonjs original, not the browserified ones.
* Improve user test tsconfigs
Also incorporate updates from the packages themselves (they fixed
some of the bugs the compiler noticed).
* Fix enhanced-resolve module resolution
* Update baselines after merge w/master
* When testing references, also test documentHighlights respects filesToSearch
* Fix handling for redirects and move assertion inside getDocumentHighlights
* Add another assert
1. Allow assignment to `exports`.
2. The type of the rhs is not checked against the type of `exports`
since they are aliased declarations.
To support more complex patterns like `exports = c.name = c`, we may
have to treat `c.name` as a declaration. That will be more complicated
than this PR.
* JSDoc:positional matching of destructured params
1. When looking up tags for a parameter whose name is a binding pattern, use
the index of the parameter to get the type.
2. When reporting errors for `@param` tags with no matching parameter
name, do not report the error for tags whose index in the `@param` tag list
matches the index of a parameter whose name is a binding pattern.
* Change to an assert
* Improve comment text
* add refactor of convert private field to getter and setter
* fix refactor
* stash
* refactor accessor generate
* revert merge union type
* refeactor and accept baseline
* add support of PropertyAssignment and StringLiteral
* add support for js file
* allow static modifier in js file
* Allow variable statements used as declaration sites to be marked visible and included in declaration emit by alias marking
* Dont forget to transform statements
* Accept baselines
* Accept updated baselines for new test
* Emit scope fix markers
* Add partial private variable declaration emit test
* Combining symbol and removing error done but messy
* Small fix + add new test baselines
All other tests are unchanged
* Union conflicting assignment types+better names
* Add tests and update baselines
* Check commonjs export= from resolveExternalModuleSymbol
* Clean up code for nonrelative path completions
* Remove unnecessary test and simplify based on that
* More code review
* Call getCompletionEntriesFromTypings unconditionally
* When --noUnusedLocals/--noUnusedParameters is disabled, add suggestions instead of errors
* Improve performance: do not add unused suggestion diagnostics unless asking for a suggestion
* Add "unused" flag to diagnostics
* Code review
* reportsUnused -> reportsUnnecessary
* Fix test
* Fix crash in type resolution in JS IIFEs
We recognise IIFEs as JS special assignment initialisers, but not as
containers otherwise. That means that IIFEs will not have a symbol
unless they have an *outside* assignment.
The permanent fix will be to make IIFEs a container, based on the
containership of the value that they return. This fix does not do that;
it just makes type resolution return undefined instead of crashing.
* Comment the IIFE-fix line
* Print js-constructor function type names
Instead of printing them as a type literal, which is scary.
* Use assigned name for functions and classes
That otherwise have no name. This helps quick info for javascript a
*lot*. Typescript mainly benefits when printing the type of class
expressions.
* Improve names of functions in binding elements
Also fix some fourslash baselines