* Numeric literal assignable to enum literal only when values match
* Accept new baselines
* Update compiler sources
* Accept new baselines
* Fix test runner
* Any numeric literal type is assignable to a computed numeric enum type
* Fix enum classification and evaluation
* References in literal enums must be to other enum members
* Accept new baselines
* Unify enum types + template literal constant expressions
* Accept new baselines
* Fix fourslash tests
* Fix new compiler errors
* Fix lint error
* Accept new API baselines
* Fix test
* Better error message + consistently check enum initializers
* Accept new baselines
* Check nested weak types in intersections on target side of relation
* Add regression tests
* Move logic from isRelatedTo to structuredTypeRelatedTo
* Fix lint error
* Add additional test
* Include type parameter defaults in contextual typing
* Add tests
* Add additional an test for instantiating contextual signature using default type param (#51002)
* Update comment
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
* `in` proves property presence only if property can't be undefined
* Accept new baselines
* Add tests
* Accept new baselines
* Properly compute SymbolFlags.Optional for intersected properties
* Accept new baselines
* Check optionality only for property-like declarations
* Add more tests
* Improve checking of `in` operator
* Accept new baselines
* Add tests
* Delete old and accept new baselines
* Disallow right operand of type '{}'
* Accept new baselines
* Support number and symbol literals
* Add tests
* Disallow {} typed right operand only in strictNullChecks mode
* Accept new baselines
* Detect {} resulting from intersections
* Accept new baselines
* Don't attempt to reduce intersections with Record<K, unknown>
* Accept new baselines
* Return undefined instead of unknownSymbol from getGlobalRecordSymbol()
* Optimize substitution type infrastructure
* Accept new baselines
* Preserve instantiated substitution types for type variables
* Restrictive type parameters should have no constraint
* Fix issues from top100 test run
* Accept new baselines
* Improve narrowing logic for instanceof, type predicates, and assertions
* Accept new baselines
* Add tests
* Tweak algorithm
* Accept new baselines
* Optimize for discriminated unions
* 'keyof undefined' and 'keyof null same as 'keyof never'
* Update tests
* Defer types like `keyof (T & {})`
* Restore test
* Update test
* Accept new baselines
* Add tests
* Allow instantiation expression to be followed by let or interface on new line
* Add tests
* Update src/compiler/parser.ts
* Instantiation expressions followed by line breaks or binary operators
* Add more tests
* Accept new baselines
* Fix lint error
* Update fourslash test
Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>
* Revise and simplify CFA for `typeof` check expressions
* Accept new baselines
* Add regression test
* Slight change to preserve type when related in both directions
* Add regression test
* Explain reasons for exact sequence of type checks
* Improve reduction of intersection types
* Accept new baselines
* Improve CFA for truthy, equality, and typeof checks
* Accept new baselines
* Remove special case for Function type
* Don't reduce intersections of form {...} & object
* Accept new baselines
* Anything is assignable to unknown-like union
* Accept new baselines
* Tweak subtype check
* Recombine unknown type from unknown-like union in more cases
* Display union origin only if it is shorter than union itself
* Accept new baselines
* Add tests
* Only attach origin type when it is shorter than union itself
* Specially preserve string & {}, number & {}, bigint & {}
* Accept new baselines
* Add additional tests
* Fix getNormalizedType and getNarrowableTypeForReference for intersections
* Switch NonNullable<T> to use T & {}
* Accept new baselines
* Use NonNullable<T> in place of anonymous T & {}
* Accept new baselines
* Add fourslash test
* More fourslash tests
* Fix getFalsyFlags handling of intersections
* Accept new baselines
* Add constraint to compareProperties type parameter
* Unconstrained type parameter not assignable to {} with strictNullChecks
* Accept new baselines
* Simplify getVariancesWorker and associated logic
* Accept new API baselines
* Add 'in' and 'out' modififers / add modifiers to type parameters
* Check variance annotations
* Update test runner
* Accept new API baselines
* Allow variance annotations only on certain type parameters
* Add deprecated implementation of createTypeParameterDeclaration
* Accept new API baselines
* Report variance markers as 'sub-XXX' and 'super-XXX'
* Add tests
* Accept new baselines
* Permit type arguments in references to generic functions
* Accept new baselines
* Delete pointless fourslash test
* Fix lint issue
* Finalize implementation
* Add tests
* Accept new baselines
* Properly handle instantiation of instantiation expression types
* Accept new API baselines
* Fix lint error
* Add more tests
* Properly handle unions/intersections of generic types
* Add more tests
* More permissive parsing of type arguments in member expressions
* Update tests
* Accept new baselines
* Eliminate redundant or meaningless elaborations in type relations
* Accept new baselines
* Add resetErrorInfo (though, oddly, shouldn't be necessary)
* Less aggressive reduction in second pass union/intersection checks
* Accept new baselines
* Restructure and back off a little bit more
* Only cache union/intersection relations once
* Accept new baselines
* Properly cache identity relations, clean up error reporting
* Move more logic to cached side of relation checks
* Optimize and remove more redundant elaborations
* Accept new baselines
* Remove unnecessary error state capture
* More optimizing
* Cache isWeakType computation
* Revert "Cache isWeakType computation"
This reverts commit 25a71c4de6.
* Address CR feedback
* Accept new baselines
* Type { [P in K]: E }[X] has constraint E with X substutited for P
* Add regression test
* Fix PragmaMap and ReadonlyPragmaMap declarations
* Explore additional constraint
* Revert previous change
* Add tests
* CFA for dependent variables destructured from discriminated union
* Accept new baselines
* Add tests
* Limit calls to isSymbolAssigned
* Fix wrong operator
* Decrease recursion depth limit to 3 + smarter check for recursion
* Accept new baselines
* Always set last type id
* Keep indexed access recursion depth check
* Less expensive and corrected check for broadest equivalent keys
* Simplify relationship check for conditional type on target side
* Accept new baselines
* Better support for non-distribution-dependent types
* Accept new API baselines
* Accept new baselines
* Fix check in hasNonBindingPatternContextualTypeWithNoGenericTypes
* Add regression tests
* Accept new baselines
* Compute both ObjectFlags.IsGenericXXXType flags in one go
* Check entire access path is constant when narrowing by inlining
* Add tests
* Accept new baselines
* Added test cases for parameter properties.
* Accepted baselines.
Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>
* CFA inlining of conditional expressions referenced by const variables
* Accept new baselines
* Add tests
* Accept new baselines
* Increase inlining limit to 5 levels per design meeting discussion