If you pass an empty array as `extends` in `t.tsInterfaceDeclaration` you'll get an invalid code printed
```ts
t.tsInterfaceDeclaration(
t.identifier('x'),
undefined,
[],
t.tsInterfaceBody([])
)
```
You will get
```ts
interface A extends {}
```
Which is an invalid TS, this PR fixes that
* Add sourcemap markings for each line of a string
Fixes https://github.com/babel/babel/issues/12083
* Fix for multiple newlines
* Optimize with indexOf
* Comment explaining newline search
* TypeScript 4.0: Support labeled tuple elements
* More tests
* Disallow mixing labeled and unlabeled elements
* Update AST shape
* Enable test after rebase
* Allow labeled spread types
* Fix flow
* Add types and generator suport
* Update packages/babel-parser/src/plugins/typescript/index.js
* Prettier
* Replace lodash 'includes' usage with Array.prototype.includes
* Replace lodash 'values' usage with Object.values
* Replace lodash 'uniq' usage with Array.from(new Set(...))
* Property safety: ensure that ignoreSuites/ignoreTasks are populated prior to access
* Property safety: ensure that blacklistTypes is populated prior to access
* Revert "Replace lodash 'values' usage with Object.values"
This reverts commit 9fd3679d6db03066daee09fad0050e5292a32aa1.
* Replace lodash 'repeat' usage with String.prototype.repeat
* Replace lodash 'isinteger' usage with Number.isInteger
* Remove explicit lodash dependency from babel-generator package
* Update packages/babel-helper-transform-fixture-test-runner/src/index.js
Co-authored-by: Brian Ng <bng412@gmail.com>
* Rely on optional chaining operator as sole boolean check
* Handle additional optional chaining operator simplification
* Update type signature
Co-authored-by: Brian Ng <bng412@gmail.com>
* Mark transpiled JSX elements as pure
* Avoid duble annotation
* Add "pure" option to the React preset
* Fix generator indentation
* Update tests
* Add tests for the "pure" option
* Update windows fixtures
* Added support for record and tuple syntax.
This commit adds support for both the hash #{} and bar {||}
syntaxes to babel-parser, as well as adds the supporting
babel-plugin-syntax-record-and-tuple plugin to enable support
for the syntax. Does not include any transform for records and
tuples.
* typo
* added check to ensure recordAndTuple in babel-parser
* switched to syntaxType option instead of explicit entries for each record and tuple type
* switched to using recordAndTupleSyntaxType for generator options instead of adding to node
* added tests for generator option recordAndTupleSyntaxType
* added test for record and tuple bar syntax with flow typings
* added tests for invalid/missing recordAndTuple syntaxType parser option
* fixed flowcheck errors
* fix merge with class privates in tokenizer
* Update packages/babel-parser/src/types.js
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* improved recordAndTuple generator error message, added tests for invalid,missing options
* updated error messages for invalid parser syntaxType option
* updated error message
* added better error messages for when the recordAndTuple syntaxType is doesn't match the syntax used
* updated record and tuple support to use new error message templates
* added recordAndTuple to missing plugin helpers
* Fix linting
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* Added jsescOptions to Numeric Literals
* Added tests and hexadecimal opts to NumericLiterals
* Fixed the bug of every numeric literal being coverted to hex
* Added conditions when jsesc should be applied
* Removed numbers and lowercaseHex from format object
* Added newline to test of jsonEscape (to exclude the change)
* Modified conditions to apply jsesc
* Made the required changes.
* Using node.value instead of value
This is a mix of changes, most importantly:
- Always print parens when mixing nullish coalescing and another logical
- Fixes assignment in the callee of an optional chain, which now blocks #11248
Also, cleans up a bit of code, and removes an unnecessary parens around `class A extends new B {}`
* Added precedence for nullish-coalescing-operator
* Made precedence equal to logical OR
* Renamed the folders made for testing
* Fixed the output test file of nullish-coalescing op