* Support xml namespace prefix for JSX elements and attributes
Just as with the `-` character, `:` is now also treated specially in JSX
element and attribute names, but is only allowed a single time, and not
at the beginning or end of the name, as is specified in the JSX spec.
All tests in jsxInvalidEsprimaTestSuite still fail, but for slightly
different reasons now. Two lines in jsxEsprimaFbTestSuite were
uncommented as they included elements with namespaces, and they now pass
without error.
* Add case for colons at ends of identifier
* Add case for jsx namepsace intrinsics
* Add cases with upcase idents for jsx namespaces
* Add case for jsx namespaces with react option
* Always consider jsx names with colon to be intrinsics
* Adjust comment about chars valid in jsx names but not js idents
* Fix minor typo in namespace prefix test case variable name
* Remove misleading comments on isUnhyphenatedJsxName
* Ensure whitespace jsx elements are not counted when determining if a jsx child is the only child
* Use filtered children count for deciding constructor used
* Accept updated baselines post-merge
* fix: range of ts2657 (jsx expr must have parent) and remove 2695 (LHS expr of comma has no side effects)
* feat: add code fix for 2657
* fix: resolve review
* chore: hoist a var
* chore: add test for skipTrivia
* fix: rebase error
* Update src/compiler/diagnosticMessages.json
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
* Update src/services/codefixes/wrapJsxInFragment.ts
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
Co-authored-by: Andrew Branch <andrew@wheream.io>
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
* add tests but not baselines or fixes
* Update original change
Still probably wrong; probably doesn't even compile beacuse I'm just
typing on my laptop.
* fix error code ok
* notes to self
* Error: property is specified more than once via spread
* make jsx tests stricter
* update semicolon error message
* use ?. because it is great
* use maybeTypeOfKind in new code
* restore jsx error
* add tests
* Obey the excludeArgument parameter when checking JSX signature validity
* Fix conditional type extending any contextual types and accept baselines
* use flag check to also drop unknown from comparison for the same reason
* Slight refinement - make an intersection to ensure parameter constraints flow through contextual types when instantiated
* Format ternary more nicely
* Unify JSX Call Checking Codepaths
* Add tests for fixed issues
* Fix lint, move all error checking into the only-run-once resolveSignature call
* Remove unused (unreachable?) code path
* Consolidate a little more duplicated logic into signature checking
* Fix#19775 a bit more
* Cosmetic changes from CR
* Skip IntrinsicAttributes elaboration in JSX errors
Do not issue an error message for a source type that comes from JSX
attributes and a target type that is an intersection containing
IntrinsicAttributes or IntrinsicClassAttributes. This will make error
messages simpler and less confusing.
Note:
1. There will always be elaboration under the skipped message, so this
won't elide errors completely.
2. Rarely (once in the tests) the intersection type will have more that
one non-Intrinsic* member. However, these additional members don't
provide useful information either, so it's fine to skip them.
* Add test of IntrinsicAttributes error
* Fix indentation in test
* Add support for per-file jsx pragmas
* Add error for using jsx factory pragma with fragments
* More tests, use different regex class for pragma capture
* Unify all pragma parsing machinery
* Fix JSX contextual types to not eagerly become apparent
* Apply changes from code review, unify common code
* Fix jsx children contextual typing
* Light code review feedback
* Use fillMissingTypeArguments
* Accept nonliteral jsx child type
* Add test for the fillMissingTypeArguments case
Previously, the code didn't account for the fact that spreading a union
creates a union. In fact, before Decemeber, spreading a union in JSX
didn't create a union.
Now the check for properties of the spread type uses
`getPropertiesOfType`, which works with unions, instead of accessing the
`properties` property directly.
* Bring jsx type resolution inline with normal objects, move jsx attribute property ignorign into relationship check
* Improved errors and reordered members
* Always use inferrential mode for jsx pass
* Add some missing skipLibChecks
* New check mode instead of odd type mapper
* Do not enable object literal freshness checks on jsx spreads
* Fix minor style nits
* Update order of type for test
* Accept corrected baseline
* Add skip lib check to many tests, do not include unit test duration in profiler duration
* Add a few more skipLibCheck flags
* A few more
* Add more skip lib check flags