TypeScript/tests/baselines/reference/jsDeclarationsMultipleExportFromMerge.symbols
Wesley Wigham 61cb06ce40
Allow allowJs and declaration to be used together (#32372)
* Allow allowJs and declaration to be used together

This intorduces a new symbol-based declaration emitter - currently this
is only used for JSON and JavaScript, as the output is likely worse than
what the other declaration emitter is capable of. In addition, it is
still incomplete - it does not yet support serializaing namespaces.

* Add tests for various import/export forms, add notes on export as namespace and fix export * from

* Tests & fixes for computed names

* Add test with current @enum tag behavior

* fix declaration emit for jsdoc @enum tags

* Small adjustments to base class serialization to fix bugs in it

* Guard against type/type parameter confusion when using typeParameterToName a bit

* Integrate feedback from PR

* Fix issue with export= declarations visibility calculation and type declaration emit that impacted all forms of declaration emit

* Only make one merged getCommonJsExportEquals symbol for a symbol

* Support preserving type reference directives in js declarations

* Skip declare mdoifiers for namespace members in ambient contexts

* FAKE ALIASES AND NAMESPACES EVERYWHERE

* Dont do namespace sugar when type members contain keyword names

* Fix json source file export modifier under new output

* Such clean nested aliasing, very wow

* Fix lint

* Add visibility errors, reuse type nodes where possible

* Suppoer having correctly named import types in bundled js declaration emit & adjust binding to allow namespaces with aliases to merge when the aliases look to be type-only

* Better support for module.exports = class expression

* Fix discovered crash bug

* Allow export assigned class expressions to be reachable symbols from external declarations

* Add missing semicolon

* Support @enum tag post-merge

* preserve comments on signatures and declarations where possible

* Basic support for js classy functions

* Add example we should do better with

* Prototype assignments make things a bit wonky, but the example from the PR seems OK

* Make a ton of changes to support the new way js classes are bound

* Remove some old comments, fix import and export default names

* Fix bug in object define handling and add tests for object define property declaration emit

* Fix organization nits from PR comments

* Preserve comments from jsdoc declarations on properties and js declaration type aliases

* Merge export declarations with identical specifiers

* Remove completed TODO comment

* Split lint

* Remove now-unused function

* PR feedback

* Add some project references tests, remove some checks from project refs codepaths that are now invalid

* Update project references tests again

* Merge and update project references tests

* Rename case

* Update test to include declaration output

* Remove yet another project refernces redirect extension check

* Update comment

* Add additional import ref to test

* Add shorthand prop to test

* Fix comment text

* Extract var to temp

* Simplify function and add whitespace

* Update project refs test to use incremental edit entry

* Stylistic refactors in the symbol serializer

* Another round of PR feedback, mostly style, small bugfix with constructors, and test showing bug in export assigned class expression name shadowing

* Use x instead of index
2019-09-26 14:27:16 -07:00

45 lines
1.3 KiB
Plaintext

=== tests/cases/conformance/jsdoc/declarations/items.js ===
export const a = 1;
>a : Symbol(a, Decl(items.js, 0, 12))
export const b = 2;
>b : Symbol(b, Decl(items.js, 1, 12))
export const c = 3;
>c : Symbol(c, Decl(items.js, 2, 12))
=== tests/cases/conformance/jsdoc/declarations/justone.js ===
export { a, b, c } from "./items";
>a : Symbol(a, Decl(justone.js, 0, 8))
>b : Symbol(b, Decl(justone.js, 0, 11))
>c : Symbol(c, Decl(justone.js, 0, 14))
=== tests/cases/conformance/jsdoc/declarations/two.js ===
export { a } from "./items";
>a : Symbol(a, Decl(two.js, 0, 8))
export { b, c } from "./items";
>b : Symbol(b, Decl(two.js, 1, 8))
>c : Symbol(c, Decl(two.js, 1, 11))
=== tests/cases/conformance/jsdoc/declarations/multiple.js ===
export {a, b} from "./items";
>a : Symbol(a, Decl(multiple.js, 0, 8))
>b : Symbol(b, Decl(multiple.js, 0, 10))
export {a as aa} from "./two";
>a : Symbol(a, Decl(two.js, 0, 8))
>aa : Symbol(aa, Decl(multiple.js, 1, 8))
export {b as bb} from "./two";
>b : Symbol(b, Decl(two.js, 1, 8))
>bb : Symbol(bb, Decl(multiple.js, 2, 8))
export {c} from "./two"
>c : Symbol(c, Decl(multiple.js, 3, 8))
export {c as cc} from "./items";
>c : Symbol(c, Decl(items.js, 2, 12))
>cc : Symbol(cc, Decl(multiple.js, 4, 8))