diff --git a/internal/ast/ast.go b/internal/ast/ast.go index 8a07b5d08a..57f92fbbfa 100644 --- a/internal/ast/ast.go +++ b/internal/ast/ast.go @@ -2281,6 +2281,7 @@ func declarationIsWriteAccess(decl *Node) bool { KindParameter, KindShorthandPropertyAssignment, KindTypeAliasDeclaration, + KindJSTypeAliasDeclaration, KindTypeParameter: return true @@ -5139,7 +5140,7 @@ func (node *ExportAssignment) Clone(f NodeFactoryCoercible) *Node { } func (node *ExportAssignment) computeSubtreeFacts() SubtreeFacts { - return propagateModifierListSubtreeFacts(node.modifiers) | propagateSubtreeFacts(node.Type) | propagateSubtreeFacts(node.Expression) + return propagateModifierListSubtreeFacts(node.modifiers) | propagateSubtreeFacts(node.Type) | propagateSubtreeFacts(node.Expression) | core.IfElse(node.IsExportEquals, SubtreeContainsTypeScript, SubtreeFactsNone) } func IsExportAssignment(node *Node) bool { diff --git a/internal/ast/utilities.go b/internal/ast/utilities.go index c254799c92..5bed9d8f41 100644 --- a/internal/ast/utilities.go +++ b/internal/ast/utilities.go @@ -3894,3 +3894,7 @@ func IsExpandoInitializer(initializer *Node) bool { func GetContainingFunction(node *Node) *Node { return FindAncestor(node.Parent, IsFunctionLike) } + +func IsImplicitlyExportedJSTypeAlias(node *Node) bool { + return IsJSTypeAliasDeclaration(node) && IsSourceFile(node.Parent) && IsExternalOrCommonJSModule(node.Parent.AsSourceFile()) +} diff --git a/internal/binder/binder.go b/internal/binder/binder.go index 1824ffcac1..cfb5f1c335 100644 --- a/internal/binder/binder.go +++ b/internal/binder/binder.go @@ -380,7 +380,7 @@ func (b *Binder) declareModuleMember(node *ast.Node, symbolFlags ast.SymbolFlags if node.Kind == ast.KindCommonJSExport { container = b.file.AsNode() } - hasExportModifier := ast.GetCombinedModifierFlags(node)&ast.ModifierFlagsExport != 0 + hasExportModifier := ast.GetCombinedModifierFlags(node)&ast.ModifierFlagsExport != 0 || ast.IsImplicitlyExportedJSTypeAlias(node) if symbolFlags&ast.SymbolFlagsAlias != 0 { if node.Kind == ast.KindExportSpecifier || (node.Kind == ast.KindImportEqualsDeclaration && hasExportModifier) { return b.declareSymbol(ast.GetExports(container.Symbol()), container.Symbol(), node, symbolFlags, symbolExcludes) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 381df4e0bf..ccd4968c9d 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -6805,7 +6805,7 @@ func (c *Checker) checkUnusedClassMembers(node *ast.Node) { c.reportUnused(parameter, UnusedKindLocal, NewDiagnosticForNode(parameter.Name(), diagnostics.Property_0_is_declared_but_its_value_is_never_read, ast.SymbolName(parameter.Symbol()))) } } - case ast.KindIndexSignature, ast.KindSemicolonClassElement, ast.KindClassStaticBlockDeclaration: + case ast.KindIndexSignature, ast.KindSemicolonClassElement, ast.KindClassStaticBlockDeclaration, ast.KindJSTypeAliasDeclaration: // Can't be private default: panic("Unhandled case in checkUnusedClassMembers") diff --git a/internal/checker/emitresolver.go b/internal/checker/emitresolver.go index ebd3a67936..de9311820c 100644 --- a/internal/checker/emitresolver.go +++ b/internal/checker/emitresolver.go @@ -155,8 +155,9 @@ func (r *EmitResolver) determineIfDeclarationIsVisible(node *ast.Node) bool { } // falls through } - // external module augmentation is always visible - if ast.IsExternalModuleAugmentation(node) { + // External module augmentation is always visible + // A @typedef at top-level in an external module is always visible + if ast.IsExternalModuleAugmentation(node) || ast.IsImplicitlyExportedJSTypeAlias(node) { return true } parent := ast.GetDeclarationContainer(node) diff --git a/internal/ls/importTracker.go b/internal/ls/importTracker.go index e4a70d62d7..f2d45dc3e9 100644 --- a/internal/ls/importTracker.go +++ b/internal/ls/importTracker.go @@ -502,7 +502,7 @@ func getImportOrExportSymbol(node *ast.Node, symbol *ast.Symbol, checker *checke } else { exportNode := getExportNode(parent, node) switch { - case exportNode != nil && ast.HasSyntacticModifier(exportNode, ast.ModifierFlagsExport): + case exportNode != nil && (ast.HasSyntacticModifier(exportNode, ast.ModifierFlagsExport) || ast.IsImplicitlyExportedJSTypeAlias(exportNode)): if ast.IsImportEqualsDeclaration(exportNode) && exportNode.AsImportEqualsDeclaration().ModuleReference == node { // We're at `Y` in `export import X = Y`. This is not the exported symbol, the left-hand-side is. So treat this as an import statement. if comingFromExport { diff --git a/internal/parser/reparser.go b/internal/parser/reparser.go index 7100a120eb..b1498ca68b 100644 --- a/internal/parser/reparser.go +++ b/internal/parser/reparser.go @@ -70,17 +70,11 @@ func (p *Parser) reparseTags(parent *ast.Node, jsDoc []*ast.Node) { func (p *Parser) reparseUnhosted(tag *ast.Node, parent *ast.Node, jsDoc *ast.Node) { switch tag.Kind { case ast.KindJSDocTypedefTag: - // !!! Don't mark typedefs as exported if they are not in a module typeExpression := tag.AsJSDocTypedefTag().TypeExpression if typeExpression == nil { break } - export := p.factory.NewModifier(ast.KindExportKeyword) - export.Loc = tag.Loc - export.Flags = p.contextFlags | ast.NodeFlagsReparsed - modifiers := p.newModifierList(export.Loc, p.nodeSlicePool.NewSlice1(export)) - - typeAlias := p.factory.NewJSTypeAliasDeclaration(modifiers, p.factory.DeepCloneReparse(tag.AsJSDocTypedefTag().Name()), nil, nil) + typeAlias := p.factory.NewJSTypeAliasDeclaration(nil, p.factory.DeepCloneReparse(tag.AsJSDocTypedefTag().Name()), nil, nil) typeAlias.AsTypeAliasDeclaration().TypeParameters = p.gatherTypeParameters(jsDoc, tag) var t *ast.Node switch typeExpression.Kind { diff --git a/internal/transformers/declarations/transform.go b/internal/transformers/declarations/transform.go index 5e7d92a011..6292aafdbd 100644 --- a/internal/transformers/declarations/transform.go +++ b/internal/transformers/declarations/transform.go @@ -1582,6 +1582,9 @@ func (tx *DeclarationTransformer) ensureModifierFlags(node *ast.Node) ast.Modifi mask ^= ast.ModifierFlagsAmbient additions = ast.ModifierFlagsNone } + if ast.IsImplicitlyExportedJSTypeAlias(node) { + additions |= ast.ModifierFlagsExport + } return maskModifierFlags(tx.host, node, mask, additions) } diff --git a/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments.js b/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments.js index dba1b5d4e4..0121bc1021 100644 --- a/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments.js +++ b/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments.js @@ -6,8 +6,6 @@ var unrelated; /** @typedef {number} B */ //// [emitEndOfFileJSDocComments.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); /** @typedef {number} A */ var unrelated; /** @typedef {number} B */ diff --git a/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments2.js b/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments2.js index 30a336e781..1d50133ea3 100644 --- a/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments2.js +++ b/testdata/baselines/reference/compiler/emitEndOfFileJSDocComments2.js @@ -22,9 +22,7 @@ function test(param) { //// [emitEndOfFileJSDocComments2.js] -"use strict"; /** @typedef {number} A */ -Object.defineProperty(exports, "__esModule", { value: true }); /** * JSDoc comment for function * @param {string} param - A string parameter diff --git a/testdata/baselines/reference/compiler/nestedJSDocImportType.errors.txt b/testdata/baselines/reference/compiler/nestedJSDocImportType.errors.txt new file mode 100644 index 0000000000..d3012728fc --- /dev/null +++ b/testdata/baselines/reference/compiler/nestedJSDocImportType.errors.txt @@ -0,0 +1,16 @@ +b.js(3,24): error TS2306: File 'a.js' is not a module. + + +==== a.js (0 errors) ==== + /** @typedef {string} A */ + +==== b.js (1 errors) ==== + module.exports = { + create() { + /** @param {import("./a").A} x */ + ~~~~~ +!!! error TS2306: File 'a.js' is not a module. + function f(x) {} + return f("hi"); + } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.js b/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.js index 5679730a15..6120833035 100644 --- a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.js +++ b/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.js @@ -19,9 +19,6 @@ export type test = test; //// [test.js] -export = { - message: "" -}; module.exports = { message: "" }; diff --git a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.js.diff b/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.js.diff deleted file mode 100644 index 699c658648..0000000000 --- a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.js.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.commonJsExportTypeDeclarationError.js -+++ new.commonJsExportTypeDeclarationError.js -@@= skipped -18, +18 lines =@@ - - - //// [test.js] -+export = { -+ message: "" -+}; - module.exports = { - message: "" - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.js b/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.js index b716571608..78c3261794 100644 --- a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.js +++ b/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.js @@ -6,6 +6,5 @@ var x = 1 //// [index.js] -export = {}; module.exports = {}; var x = 1; diff --git a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.js.diff b/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.js.diff deleted file mode 100644 index b1da817386..0000000000 --- a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.js.diff +++ /dev/null @@ -1,9 +0,0 @@ ---- old.commonJsIsolatedModules.js -+++ new.commonJsIsolatedModules.js -@@= skipped -5, +5 lines =@@ - - - //// [index.js] -+export = {}; - module.exports = {}; - var x = 1; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js index 946418741b..88b9861628 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js +++ b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js @@ -49,5 +49,4 @@ class Foo { } class Bar extends Foo { } -export = Bar; module.exports = Bar; diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js.diff b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js.diff deleted file mode 100644 index d22dc7aef7..0000000000 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js -+++ new.importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).js -@@= skipped -48, +48 lines =@@ - } - class Bar extends Foo { - } -+export = Bar; - module.exports = Bar; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js index 946418741b..88b9861628 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js +++ b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js @@ -49,5 +49,4 @@ class Foo { } class Bar extends Foo { } -export = Bar; module.exports = Bar; diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js.diff b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js.diff deleted file mode 100644 index ee2afeda7a..0000000000 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js -+++ new.importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).js -@@= skipped -48, +48 lines =@@ - } - class Bar extends Foo { - } -+export = Bar; - module.exports = Bar; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.js b/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.js index 7e17b0e274..d1a10a06ac 100644 --- a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.js +++ b/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.js @@ -13,5 +13,4 @@ class Foo { } class Bar extends Foo { } -export = Bar; module.exports = Bar; diff --git a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.js.diff b/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.js.diff deleted file mode 100644 index 8f662402ff..0000000000 --- a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.js.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.javascriptCommonjsModule.js -+++ new.javascriptCommonjsModule.js -@@= skipped -12, +12 lines =@@ - } - class Bar extends Foo { - } -+export = Bar; - module.exports = Bar; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js index 225ab69c4c..8c549d99a2 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js @@ -14,15 +14,6 @@ module.exports = function loader(options) {} //// [index.js] "use strict"; -/** - * @typedef Options - * @property {string} opt - */ -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @param {Options} options - */ -export = function loader(options) { }; /** * @typedef Options * @property {string} opt diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js.diff b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js.diff index 05ce65400f..271736f253 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js.diff +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js.diff @@ -1,22 +1,6 @@ --- old.jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js +++ new.jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.js -@@= skipped -17, +17 lines =@@ - * @typedef Options - * @property {string} opt - */ -+Object.defineProperty(exports, "__esModule", { value: true }); -+/** -+ * @param {Options} options -+ */ -+export = function loader(options) { }; -+/** -+ * @typedef Options -+ * @property {string} opt -+ */ - /** - * @param {Options} options - */ -@@= skipped -7, +16 lines =@@ +@@= skipped -24, +24 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js b/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js index 27af38aea1..94d864452f 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js @@ -40,9 +40,31 @@ class C3 extends C1 { * @typedef A * @property {string} a */ -export type A = { +type A = { a: string; }; -export type B = { +type B = { b: number; }; +/** + * @typedef B + * @property {number} b + */ +declare class C1 { + /** + * @type {A} + */ + value: A; +} +declare class C2 extends C1 { + /** + * @type {A} + */ + value: A; +} +declare class C3 extends C1 { + /** + * @type {A & B} + */ + value: A & B; +} diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js.diff b/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js.diff index b9410f80a6..6dc3e0a2fe 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js.diff +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationsInheritedTypes.js.diff @@ -4,29 +4,33 @@ * @typedef A * @property {string} a */ --/** -- * @typedef B -- * @property {number} b -- */ --declare class C1 { -- /** -- * @type {A} -- */ -- value: A; --} --declare class C2 extends C1 { --} --declare class C3 extends C1 { -- /** -- * @type {A & B} -- */ -- value: A & B; --} ++type A = { ++ a: string; ++}; ++type B = { ++ b: number; ++}; + /** + * @typedef B + * @property {number} b +@@= skipped -11, +17 lines =@@ + value: A; + } + declare class C2 extends C1 { ++ /** ++ * @type {A} ++ */ ++ value: A; + } + declare class C3 extends C1 { + /** +@@= skipped -7, +11 lines =@@ + */ + value: A & B; + } -type A = { -+export type A = { - a: string; - }; +- a: string; +-}; -type B = { -+export type B = { - b: number; - }; \ No newline at end of file +- b: number; +-}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.errors.txt b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.errors.txt index 8636c15447..4ec5325f9f 100644 --- a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.errors.txt @@ -1,12 +1,10 @@ enumDef.js(14,21): error TS1003: Identifier expected. -enumDef.js(16,18): error TS2339: Property 'Blah' does not exist on type '{ Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }'. -index.js(4,17): error TS2503: Cannot find namespace 'Host'. -index.js(8,21): error TS2304: Cannot find name 'Host'. -index.js(13,11): error TS2503: Cannot find namespace 'Host'. -index.js(18,11): error TS2503: Cannot find namespace 'Host'. +index.js(4,17): error TS2702: 'Host' only refers to a type, but is being used as a namespace here. +index.js(13,11): error TS2702: 'Host' only refers to a type, but is being used as a namespace here. +index.js(18,11): error TS2702: 'Host' only refers to a type, but is being used as a namespace here. -==== enumDef.js (2 errors) ==== +==== enumDef.js (1 errors) ==== var Host = {}; Host.UserMetrics = {}; /** @enum {number} */ @@ -26,37 +24,33 @@ index.js(18,11): error TS2503: Cannot find namespace 'Host'. !!! error TS1003: Identifier expected. Host.UserMetrics.Blah = { - ~~~~ -!!! error TS2339: Property 'Blah' does not exist on type '{ Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }'. x: 12 } -==== index.js (4 errors) ==== +==== index.js (3 errors) ==== var Other = {}; Other.Cls = class { /** * @param {!Host.UserMetrics.Action} p ~~~~ -!!! error TS2503: Cannot find namespace 'Host'. +!!! error TS2702: 'Host' only refers to a type, but is being used as a namespace here. */ method(p) {} usage() { this.method(Host.UserMetrics.Action.WindowDocked); - ~~~~ -!!! error TS2304: Cannot find name 'Host'. } } /** * @type {Host.UserMetrics.Bargh} ~~~~ -!!! error TS2503: Cannot find namespace 'Host'. +!!! error TS2702: 'Host' only refers to a type, but is being used as a namespace here. */ var x = "ok"; /** * @type {Host.UserMetrics.Blah} ~~~~ -!!! error TS2503: Cannot find namespace 'Host'. +!!! error TS2702: 'Host' only refers to a type, but is being used as a namespace here. */ var y = "ok"; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols index f2af004d3e..bf0e0ccf1e 100644 --- a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols @@ -37,9 +37,11 @@ Host.UserMetrics.Action = { * @typedef {string} */ Host.UserMetrics.Blah = { +>Host.UserMetrics.Blah : Symbol(Blah, Decl(enumDef.js, 8, 2)) >Host.UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) >Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 10, 3)) >UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) +>Blah : Symbol(Blah, Decl(enumDef.js, 8, 2)) x: 12 >x : Symbol(x, Decl(enumDef.js, 15, 25)) @@ -67,6 +69,13 @@ Other.Cls = class { >this.method : Symbol(Cls.method, Decl(index.js, 1, 19)) >this : Symbol(Cls, Decl(index.js, 1, 11)) >method : Symbol(Cls.method, Decl(index.js, 1, 19)) +>Host.UserMetrics.Action.WindowDocked : Symbol(WindowDocked, Decl(enumDef.js, 3, 27)) +>Host.UserMetrics.Action : Symbol(Action, Decl(enumDef.js, 1, 22)) +>Host.UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) +>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 10, 3)) +>UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) +>Action : Symbol(Action, Decl(enumDef.js, 1, 22)) +>WindowDocked : Symbol(WindowDocked, Decl(enumDef.js, 3, 27)) } } diff --git a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols.diff index 17125d1a52..cacd083c2b 100644 --- a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.symbols.diff @@ -39,9 +39,11 @@ ->Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 0, 14), Decl(enumDef.js, 1, 22), Decl(enumDef.js, 8, 2), Decl(enumDef.js, 10, 21)) ->UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 10, 26)) ->Blah : Symbol(Host.UserMetrics.Blah, Decl(enumDef.js, 8, 2), Decl(enumDef.js, 15, 17), Decl(enumDef.js, 13, 3)) ++>Host.UserMetrics.Blah : Symbol(Blah, Decl(enumDef.js, 8, 2)) +>Host.UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) +>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 10, 3)) +>UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) ++>Blah : Symbol(Blah, Decl(enumDef.js, 8, 2)) x: 12 >x : Symbol(x, Decl(enumDef.js, 15, 25)) @@ -61,16 +63,20 @@ /** * @param {!Host.UserMetrics.Action} p -@@= skipped -32, +30 lines =@@ - >this.method : Symbol(Cls.method, Decl(index.js, 1, 19)) +@@= skipped -33, +33 lines =@@ >this : Symbol(Cls, Decl(index.js, 1, 11)) >method : Symbol(Cls.method, Decl(index.js, 1, 19)) -->Host.UserMetrics.Action.WindowDocked : Symbol(WindowDocked, Decl(enumDef.js, 3, 27)) + >Host.UserMetrics.Action.WindowDocked : Symbol(WindowDocked, Decl(enumDef.js, 3, 27)) ->Host.UserMetrics.Action : Symbol(Host.UserMetrics.Action, Decl(enumDef.js, 1, 22), Decl(enumDef.js, 3, 17), Decl(enumDef.js, 2, 4)) ->Host.UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 10, 26)) ->Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 0, 14), Decl(enumDef.js, 1, 22), Decl(enumDef.js, 8, 2), Decl(enumDef.js, 10, 21)) ->UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 10, 26)) ->Action : Symbol(Host.UserMetrics.Action, Decl(enumDef.js, 1, 22), Decl(enumDef.js, 3, 17), Decl(enumDef.js, 2, 4)) -->WindowDocked : Symbol(WindowDocked, Decl(enumDef.js, 3, 27)) ++>Host.UserMetrics.Action : Symbol(Action, Decl(enumDef.js, 1, 22)) ++>Host.UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) ++>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 10, 3)) ++>UserMetrics : Symbol(UserMetrics, Decl(enumDef.js, 0, 14)) ++>Action : Symbol(Action, Decl(enumDef.js, 1, 22)) + >WindowDocked : Symbol(WindowDocked, Decl(enumDef.js, 3, 27)) } - } + } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.types b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.types index 31d40349d8..21bb730b00 100644 --- a/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.types +++ b/testdata/baselines/reference/submodule/compiler/jsEnumCrossFileExport.types @@ -2,23 +2,23 @@ === enumDef.js === var Host = {}; ->Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } ->{} : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } +>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } +>{} : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } Host.UserMetrics = {}; ->Host.UserMetrics = {} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ->Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ->Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } ->UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ->{} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } +>Host.UserMetrics = {} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } +>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>{} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } /** @enum {number} */ Host.UserMetrics.Action = { >Host.UserMetrics.Action = { WindowDocked: 1, WindowUndocked: 2, ScriptsBreakpointSet: 3, TimelineStarted: 4,} : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } >Host.UserMetrics.Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } ->Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ->Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } ->UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } +>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } +>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } >Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } >{ WindowDocked: 1, WindowUndocked: 2, ScriptsBreakpointSet: 3, TimelineStarted: 4,} : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } @@ -47,11 +47,11 @@ Host.UserMetrics.Action = { */ Host.UserMetrics.Blah = { >Host.UserMetrics.Blah = { x: 12} : { x: number; } ->Host.UserMetrics.Blah : any ->Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ->Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } ->UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ->Blah : any +>Host.UserMetrics.Blah : { x: number; } +>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } +>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>Blah : { x: number; } >{ x: 12} : { x: number; } x: 12 @@ -85,13 +85,13 @@ Other.Cls = class { >this.method : (p: Host.UserMetrics.Action) => void >this : this >method : (p: Host.UserMetrics.Action) => void ->Host.UserMetrics.Action.WindowDocked : any ->Host.UserMetrics.Action : any ->Host.UserMetrics : any ->Host : any ->UserMetrics : any ->Action : any ->WindowDocked : any +>Host.UserMetrics.Action.WindowDocked : number +>Host.UserMetrics.Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } +>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } +>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } +>Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } +>WindowDocked : number } } diff --git a/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.errors.txt b/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.errors.txt deleted file mode 100644 index d2af9a140f..0000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.errors.txt +++ /dev/null @@ -1,14 +0,0 @@ -types.ts(2,9): error TS2304: Cannot find name 'E'. - - -==== types.ts (1 errors) ==== - export interface F { - (): E; - ~ -!!! error TS2304: Cannot find name 'E'. - } - export interface D {} - -==== other.js (0 errors) ==== - /** @typedef {import("./types").D} E */ - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.symbols b/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.symbols index 474e38da89..05e9ec4c56 100644 --- a/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.symbols +++ b/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.symbols @@ -5,7 +5,7 @@ export interface F { >F : Symbol(F, Decl(types.ts, 0, 0)) (): E; ->E : Symbol(E) +>E : Symbol(E, Decl(other.js, 0, 4)) } export interface D {} >D : Symbol(D, Decl(types.ts, 2, 1)) diff --git a/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.symbols.diff b/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.symbols.diff deleted file mode 100644 index cd3f4c8289..0000000000 --- a/testdata/baselines/reference/submodule/compiler/recursiveResolveDeclaredMembers.symbols.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.recursiveResolveDeclaredMembers.symbols -+++ new.recursiveResolveDeclaredMembers.symbols -@@= skipped -4, +4 lines =@@ - >F : Symbol(F, Decl(types.ts, 0, 0)) - - (): E; -->E : Symbol(E, Decl(other.js, 0, 4)) -+>E : Symbol(E) - } - export interface D {} - >D : Symbol(D, Decl(types.ts, 2, 1)) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.js b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.js index 059f8faab4..15c7e79d6f 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.js +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.js @@ -46,8 +46,6 @@ foo2({x: 'abc'}); //// [0.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); // @ts-check /** * @typedef {Object} Opts diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.js.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.js.diff deleted file mode 100644 index bb54fa92fb..0000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.checkJsdocTypedefInParamTag1.js -+++ new.checkJsdocTypedefInParamTag1.js -@@= skipped -45, +45 lines =@@ - - - //// [0.js] -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); - // @ts-check - /** - * @typedef {Object} Opts \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.errors.txt b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.errors.txt index 02b45beef8..809cd632fe 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.errors.txt @@ -1,15 +1,12 @@ -0.js(3,5): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. 0.js(6,21): error TS1003: Identifier expected. 0.js(8,9): error TS2339: Property 'SomeName' does not exist on type '{}'. 0.js(10,12): error TS2503: Cannot find namespace 'exports'. -==== 0.js (4 errors) ==== +==== 0.js (3 errors) ==== // @ts-check var exports = {}; - ~~~~~~~ -!!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. /** * @typedef {string} diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.js b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.js index f57ff9964e..76a2b24725 100644 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.js +++ b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.js @@ -15,9 +15,7 @@ const myString = 'str'; //// [0.js] -"use strict"; // @ts-check -Object.defineProperty(exports, "__esModule", { value: true }); var exports = {}; /** * @typedef {string} diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.js.diff b/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.js.diff deleted file mode 100644 index 204fcaef6a..0000000000 --- a/testdata/baselines/reference/submodule/conformance/checkJsdocTypedefOnlySourceFile.js.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.checkJsdocTypedefOnlySourceFile.js -+++ new.checkJsdocTypedefOnlySourceFile.js -@@= skipped -14, +14 lines =@@ - - - //// [0.js] -+"use strict"; - // @ts-check -+Object.defineProperty(exports, "__esModule", { value: true }); - var exports = {}; - /** - * @typedef {string} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js index e612aa9e18..fd0f4efd9f 100644 --- a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js +++ b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js @@ -24,7 +24,6 @@ const donkey = (ast) => ast; function funky(declaration) { return false; } -export = donkey; module.exports = donkey; export var funky = funky; module.exports.funky = funky; diff --git a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js.diff b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js.diff index f658a2e9e7..8f7d21d18b 100644 --- a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js.diff +++ b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.js.diff @@ -10,13 +10,12 @@ function funky(declaration) { return false; } -+export = donkey; module.exports = donkey; +export var funky = funky; module.exports.funky = funky; //// [bug43713.js] const { funky } = require('./commonJSAliasedExport'); -@@= skipped -14, +18 lines =@@ +@@= skipped -14, +17 lines =@@ //// [commonJSAliasedExport.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js index 4a2d016979..ef0b96de77 100644 --- a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js +++ b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js @@ -34,4 +34,3 @@ let a = /** @type {Foo} */ undefined; a = new Foo({ doer: Foo.Bar }); const q = /** @type {import("./externs").Bar} */ { doer: q => q }; const r = /** @type {typeof import("./externs").Bar} */ r => r; -export {}; diff --git a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js.diff b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js.diff index 3a0756b51b..325b7ca06d 100644 --- a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js.diff +++ b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.js.diff @@ -10,5 +10,4 @@ -const q = /** @type {import("./externs").Bar} */ ({ doer: q => q }); -const r = /** @type {typeof import("./externs").Bar} */ (r => r); +const q = /** @type {import("./externs").Bar} */ { doer: q => q }; -+const r = /** @type {typeof import("./externs").Bar} */ r => r; -+export {}; \ No newline at end of file ++const r = /** @type {typeof import("./externs").Bar} */ r => r; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.symbols b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.symbols index 2b01c9d7ea..0d3b6da6a8 100644 --- a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.symbols +++ b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.symbols @@ -32,7 +32,7 @@ declare global { >global : Symbol(global, Decl(externs.d.ts, 9, 1)) const Foo: typeof MyClass; ->Foo : Symbol(Foo, Decl(externs.d.ts, 11, 9)) +>Foo : Symbol(Foo, Decl(index.js, 1, 3), Decl(externs.d.ts, 11, 9)) >MyClass : Symbol(MyClass, Decl(externs.d.ts, 0, 0), Decl(externs.d.ts, 4, 1)) } export = MyClass; @@ -49,10 +49,10 @@ let a = /** @type {Foo} */(/** @type {*} */(undefined)); a = new Foo({doer: Foo.Bar}); >a : Symbol(a, Decl(index.js, 4, 3)) ->Foo : Symbol(Foo, Decl(externs.d.ts, 11, 9)) +>Foo : Symbol(Foo, Decl(index.js, 1, 3), Decl(externs.d.ts, 11, 9)) >doer : Symbol(doer, Decl(index.js, 5, 13)) >Foo.Bar : Symbol(MyClass.Bar, Decl(externs.d.ts, 0, 27), Decl(externs.d.ts, 6, 18)) ->Foo : Symbol(Foo, Decl(externs.d.ts, 11, 9)) +>Foo : Symbol(Foo, Decl(index.js, 1, 3), Decl(externs.d.ts, 11, 9)) >Bar : Symbol(MyClass.Bar, Decl(externs.d.ts, 0, 27), Decl(externs.d.ts, 6, 18)) const q = /** @type {import("./externs").Bar} */({ doer: q => q }); diff --git a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.symbols.diff b/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.symbols.diff deleted file mode 100644 index 88776fbf68..0000000000 --- a/testdata/baselines/reference/submodule/conformance/importTypeInJSDoc.symbols.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- old.importTypeInJSDoc.symbols -+++ new.importTypeInJSDoc.symbols -@@= skipped -31, +31 lines =@@ - >global : Symbol(global, Decl(externs.d.ts, 9, 1)) - - const Foo: typeof MyClass; -->Foo : Symbol(Foo, Decl(index.js, 1, 3), Decl(externs.d.ts, 11, 9)) -+>Foo : Symbol(Foo, Decl(externs.d.ts, 11, 9)) - >MyClass : Symbol(MyClass, Decl(externs.d.ts, 0, 0), Decl(externs.d.ts, 4, 1)) - } - export = MyClass; -@@= skipped -17, +17 lines =@@ - - a = new Foo({doer: Foo.Bar}); - >a : Symbol(a, Decl(index.js, 4, 3)) -->Foo : Symbol(Foo, Decl(index.js, 1, 3), Decl(externs.d.ts, 11, 9)) -+>Foo : Symbol(Foo, Decl(externs.d.ts, 11, 9)) - >doer : Symbol(doer, Decl(index.js, 5, 13)) - >Foo.Bar : Symbol(MyClass.Bar, Decl(externs.d.ts, 0, 27), Decl(externs.d.ts, 6, 18)) -->Foo : Symbol(Foo, Decl(index.js, 1, 3), Decl(externs.d.ts, 11, 9)) -+>Foo : Symbol(Foo, Decl(externs.d.ts, 11, 9)) - >Bar : Symbol(MyClass.Bar, Decl(externs.d.ts, 0, 27), Decl(externs.d.ts, 6, 18)) - - const q = /** @type {import("./externs").Bar} */({ doer: q => q }); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js index b8868c1a18..31c1fad1c3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js @@ -16,7 +16,6 @@ module.exports.Strings = Strings; //// [bar.js] class Bar { } -export = Bar; module.exports = Bar; //// [cls.js] "use strict"; @@ -28,7 +27,6 @@ const Strings = { }; class Foo extends Bar { } -export = Foo; module.exports = Foo; export var Strings = Strings; module.exports.Strings = Strings; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js.diff index bb250feeab..c93936877c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.js.diff @@ -1,10 +1,7 @@ --- old.jsDeclarationsClassExtendsVisibility.js +++ new.jsDeclarationsClassExtendsVisibility.js -@@= skipped -15, +15 lines =@@ - //// [bar.js] - class Bar { +@@= skipped -17, +17 lines =@@ } -+export = Bar; module.exports = Bar; //// [cls.js] +"use strict"; @@ -12,11 +9,9 @@ const Bar = require("./bar"); const Strings = { a: "A", -@@= skipped -9, +12 lines =@@ - }; +@@= skipped -8, +10 lines =@@ class Foo extends Bar { } -+export = Foo; module.exports = Foo; +export var Strings = Strings; module.exports.Strings = Strings; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js index 22db15c153..7e863089eb 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js @@ -40,7 +40,6 @@ const Strings = { a: "A", b: "B" }; -export = Handler; module.exports = Handler; export var Strings = Strings; module.exports.Strings = Strings; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js.diff index 38da037666..bdce0b0154 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.js.diff @@ -9,17 +9,15 @@ class Handler { static get OPTIONS() { return 1; -@@= skipped -12, +14 lines =@@ - a: "A", +@@= skipped -13, +15 lines =@@ b: "B" }; -+export = Handler; module.exports = Handler; +export var Strings = Strings; module.exports.Strings = Strings; /** * @typedef {Object} HandlerOptions -@@= skipped -10, +12 lines =@@ +@@= skipped -9, +10 lines =@@ //// [source.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js index 60432607d2..403569deb0 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js @@ -31,14 +31,6 @@ export class MyClass { //// [index.js] const TopLevelSym = Symbol(); const InnerSym = Symbol(); -export = { - [TopLevelSym](x = 12) { - return x; - }, - items: { - [InnerSym]: (arg = { x: 12 }) => arg.x - } -}; module.exports = { [TopLevelSym](x = 12) { return x; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js.diff index 59ef4c81e7..5e4cd9d7e7 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.js.diff @@ -1,21 +1,6 @@ --- old.jsDeclarationsComputedNames.js +++ new.jsDeclarationsComputedNames.js -@@= skipped -30, +30 lines =@@ - //// [index.js] - const TopLevelSym = Symbol(); - const InnerSym = Symbol(); -+export = { -+ [TopLevelSym](x = 12) { -+ return x; -+ }, -+ items: { -+ [InnerSym]: (arg = { x: 12 }) => arg.x -+ } -+}; - module.exports = { - [TopLevelSym](x = 12) { - return x; -@@= skipped -10, +18 lines =@@ +@@= skipped -40, +40 lines =@@ }; //// [index2.js] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js index c7dda4b311..50e909346c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js @@ -21,7 +21,6 @@ exports.default = validate; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const m = require("./exporter"); -export = m.default; module.exports = m.default; export var memberName = "thing"; module.exports.memberName = "thing"; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js.diff index 909afdba18..45ae305284 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.js.diff @@ -7,7 +7,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); const m = require("./exporter"); -+export = m.default; module.exports = m.default; +export var memberName = "thing"; module.exports.memberName = "thing"; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js index 0e6b5aa563..1264eecc39 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js @@ -24,11 +24,6 @@ class A { class Q { x = 42; } -export = class Q { - constructor() { - this.x = new A(); - } -}; module.exports = class Q { constructor() { this.x = new A(); diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js.diff index 426129727c..79f6d0a917 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.js.diff @@ -13,15 +13,11 @@ + member = new Q(); } class Q { -+ x = 42; -+} -+export = class Q { - constructor() { +- constructor() { - this.x = 42; -+ this.x = new A(); - } --} -+}; +- } ++ x = 42; + } module.exports = class Q { constructor() { this.x = new A(); diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js index fab97e437c..89d52c3443 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js @@ -8,7 +8,6 @@ module.exports = new Foo(); //// [index.js] class Foo { } -export = new Foo(); module.exports = new Foo(); diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js.diff index c85d6d7904..d37e599c90 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.js.diff @@ -1,11 +1,6 @@ --- old.jsDeclarationsExportAssignedClassInstance1.js +++ new.jsDeclarationsExportAssignedClassInstance1.js -@@= skipped -7, +7 lines =@@ - //// [index.js] - class Foo { - } -+export = new Foo(); - module.exports = new Foo(); +@@= skipped -11, +11 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js index 1ca4b06ac8..d7f9833129 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js @@ -13,7 +13,6 @@ class Foo { static stat = 10; member = 10; } -export = new Foo(); module.exports = new Foo(); diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js.diff index 2e88da8904..c6d9ec8aa5 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.js.diff @@ -11,7 +11,6 @@ + member = 10; } -Foo.stat = 10; -+export = new Foo(); module.exports = new Foo(); diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js index 0d20499ae7..162fa15072 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js @@ -17,7 +17,6 @@ class Foo { static stat = 10; member = 10; } -export = new Foo(); module.exports = new Foo(); export var additional = 20; module.exports.additional = 20; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js.diff index 44dc773cb6..84b0f01f1b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.js.diff @@ -14,7 +14,6 @@ + member = 10; } -Foo.stat = 10; -+export = new Foo(); module.exports = new Foo(); +export var additional = 20; module.exports.additional = 20; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js index 329fb95300..ace1f067bb 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js @@ -16,12 +16,6 @@ module.exports.Sub.prototype = { } //// [jsDeclarationsExportAssignedConstructorFunctionWithSub.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @param {number} p - */ -export = function (p) { - this.t = 12 + p; -}; /** * @param {number} p */ diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js.diff index 552b990ef4..dfb3d03971 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.js.diff @@ -6,12 +6,6 @@ //// [jsDeclarationsExportAssignedConstructorFunctionWithSub.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); -+/** -+ * @param {number} p -+ */ -+export = function (p) { -+ this.t = 12 + p; -+}; /** * @param {number} p */ diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js index 3930e64b47..a5d26b68c0 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js @@ -18,11 +18,6 @@ class Container { module.exports = Container; //// [obj.js] -export = class Obj { - constructor() { - this.x = 12; - } -}; module.exports = class Obj { constructor() { this.x = 12; @@ -35,7 +30,6 @@ class Container { this.usage = new Obj(); } } -export = Container; module.exports = Container; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js.diff index 2599d385e7..b20f1130ab 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.js.diff @@ -1,23 +1,6 @@ --- old.jsDeclarationsExportAssignedVisibility.js +++ new.jsDeclarationsExportAssignedVisibility.js -@@= skipped -17, +17 lines =@@ - module.exports = Container; - - //// [obj.js] -+export = class Obj { -+ constructor() { -+ this.x = 12; -+ } -+}; - module.exports = class Obj { - constructor() { - this.x = 12; -@@= skipped -12, +17 lines =@@ - this.usage = new Obj(); - } - } -+export = Container; - module.exports = Container; +@@= skipped -33, +33 lines =@@ //// [obj.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js index d364596b63..170d8236ae 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js @@ -22,13 +22,6 @@ const Strings = { a: "A", b: "B" }; -export = { - thing: "ok", - also: "ok", - desc: { - item: "ok" - } -}; module.exports = { thing: "ok", also: "ok", diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js.diff index b1e559719e..71fa78bdfe 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.js.diff @@ -9,18 +9,7 @@ const Strings = { a: "A", b: "B" - }; -+export = { -+ thing: "ok", -+ also: "ok", -+ desc: { -+ item: "ok" -+ } -+}; - module.exports = { - thing: "ok", - also: "ok", -@@= skipped -11, +20 lines =@@ +@@= skipped -11, +13 lines =@@ item: "ok" } }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js index 1b4f947e51..2a791eafad 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js @@ -16,9 +16,6 @@ function foo() { //// [index.js] // @ts-nocheck function foo() { - export = exports = function (o) { - return (o == null) ? create(base) : defineProperties(Object(o), descriptors); - }; module.exports = exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js.diff index 795f37ba62..338c0cef14 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.js.diff @@ -1,15 +1,6 @@ --- old.jsDeclarationsExportDoubleAssignmentInClosure.js +++ new.jsDeclarationsExportDoubleAssignmentInClosure.js -@@= skipped -15, +15 lines =@@ - //// [index.js] - // @ts-nocheck - function foo() { -+ export = exports = function (o) { -+ return (o == null) ? create(base) : defineProperties(Object(o), descriptors); -+ }; - module.exports = exports = function (o) { - return (o == null) ? create(base) : defineProperties(Object(o), descriptors); - }; +@@= skipped -21, +21 lines =@@ const m = function () { // I have no idea what to put here }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js index c723626460..2eed1f908e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js @@ -234,7 +234,6 @@ const ns = require("./cls"); module.exports = { ns }; //// [cjs2.js] const ns = require("./cls"); -export = ns; module.exports = ns; //// [cjs3.js] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js.diff index f0dfbe7eb6..b92e6340bb 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.js.diff @@ -1,10 +1,7 @@ --- old.jsDeclarationsExportForms.js +++ new.jsDeclarationsExportForms.js -@@= skipped -233, +233 lines =@@ - module.exports = { ns }; - //// [cjs2.js] +@@= skipped -235, +235 lines =@@ const ns = require("./cls"); -+export = ns; module.exports = ns; //// [cjs3.js] +"use strict"; @@ -20,7 +17,7 @@ module.exports.names = ns; //// [includeAll.js] "use strict"; -@@= skipped -23, +30 lines =@@ +@@= skipped -21, +27 lines =@@ //// [cls.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js index c77d5c4e84..9231948bea 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js @@ -69,7 +69,6 @@ var __importStar = (this && this.__importStar) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); const ns = __importStar(require("./cls")); -export = ns; module.exports = ns; // We refuse to bind cjs module exports assignments in the same file we find an import in //// [globalNs.js] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js.diff index f3b6a51290..c4b3773028 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.js.diff @@ -1,14 +1,6 @@ --- old.jsDeclarationsExportFormsErr.js +++ new.jsDeclarationsExportFormsErr.js -@@= skipped -68, +68 lines =@@ - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - const ns = __importStar(require("./cls")); -+export = ns; - module.exports = ns; // We refuse to bind cjs module exports assignments in the same file we find an import in - //// [globalNs.js] - "use strict"; -@@= skipped -28, +29 lines =@@ +@@= skipped -96, +96 lines =@@ //// [cls.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js index eded4b1dac..a9880502fe 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js @@ -18,7 +18,6 @@ const Strings = { }; class Foo { } -export = Foo; module.exports = Foo; export var Strings = Strings; module.exports.Strings = Strings; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js.diff index 169cc9bb8a..679f73626b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.js.diff @@ -9,10 +9,9 @@ const Strings = { a: "A", b: "B" - }; +@@= skipped -7, +9 lines =@@ class Foo { } -+export = Foo; module.exports = Foo; +export var Strings = Strings; module.exports.Strings = Strings; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js index 72b79e058f..f61783ef90 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js @@ -78,10 +78,8 @@ module.exports = Context; function Timer(timeout) { this.timeout = timeout; } -export = Timer; module.exports = Timer; //// [context.js] -"use strict"; /** * Imports * @@ -89,7 +87,6 @@ module.exports = Timer; * @typedef {import("./hook")} Hook * @typedef {import("./hook").HookHandler} HookHandler */ -Object.defineProperty(exports, "__esModule", { value: true }); /** * Input type definition * @@ -126,11 +123,8 @@ Context.prototype = { return input; } }; -export = Context; module.exports = Context; //// [hook.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); /** * @typedef {(arg: import("./context")) => void} HookHandler */ @@ -140,7 +134,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); function Hook(handle) { this.handle = handle; } -export = Hook; module.exports = Hook; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js.diff index 509e4e931d..6e7301f28c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.js.diff @@ -1,43 +1,6 @@ --- old.jsDeclarationsFunctionClassesCjsExportAssignment.js +++ new.jsDeclarationsFunctionClassesCjsExportAssignment.js -@@= skipped -77, +77 lines =@@ - function Timer(timeout) { - this.timeout = timeout; - } -+export = Timer; - module.exports = Timer; - //// [context.js] -+"use strict"; - /** - * Imports - * -@@= skipped -9, +11 lines =@@ - * @typedef {import("./hook")} Hook - * @typedef {import("./hook").HookHandler} HookHandler - */ -+Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Input type definition - * -@@= skipped -36, +37 lines =@@ - return input; - } - }; -+export = Context; - module.exports = Context; - //// [hook.js] -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); - /** - * @typedef {(arg: import("./context")) => void} HookHandler - */ -@@= skipped -11, +14 lines =@@ - function Hook(handle) { - this.handle = handle; - } -+export = Hook; - module.exports = Hook; - +@@= skipped -138, +138 lines =@@ //// [timer.d.ts] export = Timer; @@ -57,7 +20,7 @@ /** * Imports * -@@= skipped -25, +14 lines =@@ +@@= skipped -20, +8 lines =@@ * @typedef {import("./hook")} Hook * @typedef {import("./hook").HookHandler} HookHandler */ diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js index e3f53cb229..218ee2e1e6 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js @@ -18,7 +18,6 @@ MyClass.staticProperty = 123; //// [source.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -export = MyClass; module.exports = MyClass; function MyClass() { } MyClass.staticMethod = function () { }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff index c52be93a6e..45122829f0 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff @@ -6,11 +6,10 @@ //// [source.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); -+export = MyClass; module.exports = MyClass; function MyClass() { } MyClass.staticMethod = function () { }; -@@= skipped -16, +19 lines =@@ +@@= skipped -16, +18 lines =@@ //// [source.d.ts] export = MyClass; declare function MyClass(): void; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js index 8a62f4e062..ba534112f2 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js @@ -11,7 +11,6 @@ module.exports = foo; function foo() { } foo.foo = foo; foo.default = foo; -export = foo; module.exports = foo; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js.diff index 9b567ef448..3717fc74ef 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.js.diff @@ -1,11 +1,6 @@ --- old.jsDeclarationsFunctionWithDefaultAssignedMember.js +++ new.jsDeclarationsFunctionWithDefaultAssignedMember.js -@@= skipped -10, +10 lines =@@ - function foo() { } - foo.foo = foo; - foo.default = foo; -+export = foo; - module.exports = foo; +@@= skipped -14, +14 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js index 3605ea78b3..afb72733d0 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js @@ -22,7 +22,6 @@ module.exports = j; } //// [index.js] const j = require("./obj.json"); -export = j; module.exports = j; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js.diff index 04cc8ac34b..af83a704ec 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.js.diff @@ -1,12 +1,6 @@ --- old.jsDeclarationsJson.js +++ new.jsDeclarationsJson.js -@@= skipped -21, +21 lines =@@ - } - //// [index.js] - const j = require("./obj.json"); -+export = j; - module.exports = j; - +@@= skipped -26, +26 lines =@@ //// [index.d.ts] export = j; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js index 327dcac8ff..8bb751a509 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js @@ -71,7 +71,6 @@ module.exports = j; } //// [index.js] const j = require("./package.json"); -export = j; module.exports = j; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js.diff index d56451e7a8..da3409f7e9 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.js.diff @@ -1,12 +1,6 @@ --- old.jsDeclarationsPackageJson.js +++ new.jsDeclarationsPackageJson.js -@@= skipped -70, +70 lines =@@ - } - //// [index.js] - const j = require("./package.json"); -+export = j; - module.exports = j; - +@@= skipped -75, +75 lines =@@ //// [index.d.ts] export = j; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js index f707949cf4..e18c40a16c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js @@ -40,7 +40,6 @@ const BaseFactory = () => { return new Base(); }; BaseFactory.Base = Base; -export = BaseFactory; module.exports = BaseFactory; //// [file.js] /** @typedef {import('./base')} BaseFactory */ diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff index 13850b4946..4b9a4f0dd3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff @@ -1,14 +1,6 @@ --- old.jsDeclarationsParameterTagReusesInputNodeInEmit1.js +++ new.jsDeclarationsParameterTagReusesInputNodeInEmit1.js -@@= skipped -39, +39 lines =@@ - return new Base(); - }; - BaseFactory.Base = Base; -+export = BaseFactory; - module.exports = BaseFactory; - //// [file.js] - /** @typedef {import('./base')} BaseFactory */ -@@= skipped -17, +18 lines =@@ +@@= skipped -56, +56 lines =@@ const test = (base) => { return base; }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js index 4d2d10e719..42e162e3af 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js @@ -34,7 +34,6 @@ const BaseFactory = () => { return new Base(); }; BaseFactory.Base = Base; -export = BaseFactory; module.exports = BaseFactory; //// [file.js] /** @typedef {typeof import('./base')} BaseFactory */ @@ -46,7 +45,6 @@ module.exports = BaseFactory; const test = (base) => { return base; }; -export {}; //// [base.d.ts] @@ -60,4 +58,10 @@ declare namespace BaseFactory { export = BaseFactory; //// [file.d.ts] /** @typedef {typeof import('./base')} BaseFactory */ -export type BaseFactory = typeof import('./base'); +type BaseFactory = typeof import('./base'); +/** + * + * @param {InstanceType} base + * @returns {InstanceType} + */ +declare const test: (base: {}) => {}; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff index 87812fd6f4..3d59f372d1 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.js.diff @@ -1,18 +1,6 @@ --- old.jsDeclarationsParameterTagReusesInputNodeInEmit2.js +++ new.jsDeclarationsParameterTagReusesInputNodeInEmit2.js -@@= skipped -33, +33 lines =@@ - return new Base(); - }; - BaseFactory.Base = Base; -+export = BaseFactory; - module.exports = BaseFactory; - //// [file.js] - /** @typedef {typeof import('./base')} BaseFactory */ -@@= skipped -11, +12 lines =@@ - const test = (base) => { - return base; - }; -+export {}; +@@= skipped -47, +47 lines =@@ //// [base.d.ts] @@ -31,11 +19,12 @@ +export = BaseFactory; //// [file.d.ts] /** @typedef {typeof import('./base')} BaseFactory */ --/** -- * -- * @param {InstanceType} base -- * @returns {InstanceType} -- */ ++type BaseFactory = typeof import('./base'); + /** + * + * @param {InstanceType} base + * @returns {InstanceType} + */ -declare function test(base: InstanceType): InstanceType; -type BaseFactory = typeof import("./base"); -+export type BaseFactory = typeof import('./base'); \ No newline at end of file ++declare const test: (base: {}) => {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js index 62ba18d045..5655e386f5 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js @@ -77,8 +77,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); * @returns {T} */ //// [mixed.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); /** * @typedef {{x: string} | number | LocalThing | ExportedThing} SomeType */ diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js.diff index 5d965f5ad3..e04dd665c3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.js.diff @@ -1,15 +1,6 @@ --- old.jsDeclarationsTypeAliases.js +++ new.jsDeclarationsTypeAliases.js -@@= skipped -76, +76 lines =@@ - * @returns {T} - */ - //// [mixed.js] -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); - /** - * @typedef {{x: string} | number | LocalThing | ExportedThing} SomeType - */ -@@= skipped -11, +13 lines =@@ +@@= skipped -87, +87 lines =@@ return { x: "" + x }; } class ExportedThing { diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js index be70025cd8..6bfc0da127 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js @@ -14,7 +14,6 @@ module.exports = items; //// [index.js] /** @type {typeof import("/some-mod")} */ const items = []; -export = items; module.exports = items; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js.diff index 046f34d1e2..6b6c62cb69 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.js.diff @@ -1,12 +1,6 @@ --- old.jsDeclarationsTypeReassignmentFromDeclaration.js +++ new.jsDeclarationsTypeReassignmentFromDeclaration.js -@@= skipped -13, +13 lines =@@ - //// [index.js] - /** @type {typeof import("/some-mod")} */ - const items = []; -+export = items; - module.exports = items; - +@@= skipped -18, +18 lines =@@ //// [index.d.ts] export = items; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js index 79172817f0..c0cc133f0e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js @@ -12,7 +12,6 @@ module.exports = items; //// [index.js] const items = require("./some-mod")(); -export = items; module.exports = items; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js.diff index 95d5a41e60..a7432cc61b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.js.diff @@ -1,10 +1,8 @@ --- old.jsDeclarationsTypeReassignmentFromDeclaration2.js +++ new.jsDeclarationsTypeReassignmentFromDeclaration2.js -@@= skipped -11, +11 lines =@@ - +@@= skipped -12, +12 lines =@@ //// [index.js] const items = require("./some-mod")(); -+export = items; module.exports = items; + + diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js index d061f00d0a..d323fab0d8 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js @@ -35,24 +35,19 @@ module.exports = { //// [conn.js] -"use strict"; /** * @typedef {string | number} Whatever */ -Object.defineProperty(exports, "__esModule", { value: true }); class Conn { constructor() { } item = 3; method() { } } -export = Conn; module.exports = Conn; //// [usage.js] -"use strict"; /** * @typedef {import("./conn")} Conn */ -Object.defineProperty(exports, "__esModule", { value: true }); class Wrap { /** * @param {Conn} c diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js.diff index 9aee02b222..9a56e87ff8 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.js.diff @@ -1,14 +1,8 @@ --- old.jsDeclarationsTypedefAndImportTypes.js +++ new.jsDeclarationsTypedefAndImportTypes.js -@@= skipped -34, +34 lines =@@ - - - //// [conn.js] -+"use strict"; - /** +@@= skipped -38, +38 lines =@@ * @typedef {string | number} Whatever */ -+Object.defineProperty(exports, "__esModule", { value: true }); class Conn { - constructor() { - this.item = 3; @@ -17,18 +11,8 @@ + item = 3; method() { } } -+export = Conn; module.exports = Conn; - //// [usage.js] -+"use strict"; - /** - * @typedef {import("./conn")} Conn - */ -+Object.defineProperty(exports, "__esModule", { value: true }); - class Wrap { - /** - * @param {Conn} c -@@= skipped -30, +34 lines =@@ +@@= skipped -26, +25 lines =@@ //// [conn.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js index 16f94a0d4d..7051e99bb1 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js @@ -19,14 +19,12 @@ //// [index.js] -"use strict"; /** * Options for Foo <------------ * @typedef {Object} FooOptions * @property {boolean} bar - Marvin K Mooney * @property {string} baz - Sylvester McMonkey McBean */ -Object.defineProperty(exports, "__esModule", { value: true }); /** * Multiline * Options @@ -44,11 +42,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); * @property {boolean} bar - Marvin K Mooney * @property {string} baz - Sylvester McMonkey McBean */ -export type FooOptions = { +type FooOptions = { bar: boolean; baz: string; }; -export type BarOptions = { +type BarOptions = { bar: boolean; baz: string; }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js.diff index 9de5bd6319..6a5e8d40d4 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefDescriptionsPreserved.js.diff @@ -1,21 +1,6 @@ --- old.jsDeclarationsTypedefDescriptionsPreserved.js +++ new.jsDeclarationsTypedefDescriptionsPreserved.js -@@= skipped -18, +18 lines =@@ - - - //// [index.js] -+"use strict"; - /** - * Options for Foo <------------ - * @typedef {Object} FooOptions - * @property {boolean} bar - Marvin K Mooney - * @property {string} baz - Sylvester McMonkey McBean - */ -+Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Multiline - * Options -@@= skipped -19, +21 lines =@@ +@@= skipped -37, +37 lines =@@ //// [index.d.ts] /** * Options for Foo <------------ @@ -23,7 +8,7 @@ + * @property {boolean} bar - Marvin K Mooney + * @property {string} baz - Sylvester McMonkey McBean */ --type FooOptions = { + type FooOptions = { - /** - * - Marvin K Mooney - */ @@ -31,11 +16,10 @@ - /** - * - Sylvester McMonkey McBean - */ -+export type FooOptions = { + bar: boolean; + baz: string; +}; -+export type BarOptions = { ++type BarOptions = { + bar: boolean; baz: string; }; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js index 8ce197c159..93ad6c2571 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js @@ -31,7 +31,6 @@ let id = 0; const send = handlers => new Promise((resolve, reject) => { handlers[++id] = [resolve, reject]; }); -export {}; //// [foo.d.ts] @@ -40,6 +39,12 @@ export {}; * [id: string]: [Function, Function]; * }} ResolveRejectMap */ -export type ResolveRejectMap = { +type ResolveRejectMap = { [id: string]: [Function, Function]; }; +declare let id: number; +/** + * @param {ResolveRejectMap} handlers + * @returns {Promise} + */ +declare const send: (handlers: ResolveRejectMap) => Promise; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js.diff index 1075d0962b..c02e1886b9 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefFunction.js.diff @@ -1,24 +1,19 @@ --- old.jsDeclarationsTypedefFunction.js +++ new.jsDeclarationsTypedefFunction.js -@@= skipped -30, +30 lines =@@ - const send = handlers => new Promise((resolve, reject) => { - handlers[++id] = [resolve, reject]; - }); -+export {}; - - - //// [foo.d.ts] -@@= skipped -8, +9 lines =@@ +@@= skipped -38, +38 lines =@@ * [id: string]: [Function, Function]; * }} ResolveRejectMap */ --declare let id: number; --/** -- * @param {ResolveRejectMap} handlers -- * @returns {Promise} -- */ ++type ResolveRejectMap = { ++ [id: string]: [Function, Function]; ++}; + declare let id: number; + /** + * @param {ResolveRejectMap} handlers + * @returns {Promise} + */ -declare function send(handlers: ResolveRejectMap): Promise; -type ResolveRejectMap = { -+export type ResolveRejectMap = { - [id: string]: [Function, Function]; - }; \ No newline at end of file +- [id: string]: [Function, Function]; +-}; ++declare const send: (handlers: ResolveRejectMap) => Promise; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js index 2623b88e65..894897e6f2 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js @@ -55,9 +55,7 @@ class MainThreadTasks { module.exports = MainThreadTasks; //// [module.js] -"use strict"; /** @typedef {'parseHTML'|'styleLayout'} TaskGroupIds */ -Object.defineProperty(exports, "__esModule", { value: true }); /** * @typedef TaskGroup * @property {TaskGroupIds} id @@ -84,8 +82,6 @@ module.exports = { taskNameToGroup, }; //// [index.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); const { taskGroups, taskNameToGroup } = require('./module.js'); /** @typedef {import('./module.js').TaskGroup} TaskGroup */ /** @@ -102,7 +98,6 @@ class MainThreadTasks { */ constructor(x, y) { } } -export = MainThreadTasks; module.exports = MainThreadTasks; diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js.diff index 61d8bb2796..5b1a662ba3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.js.diff @@ -1,30 +1,6 @@ --- old.jsDeclarationsTypedefPropertyAndExportAssignment.js +++ new.jsDeclarationsTypedefPropertyAndExportAssignment.js -@@= skipped -54, +54 lines =@@ - module.exports = MainThreadTasks; - - //// [module.js] -+"use strict"; - /** @typedef {'parseHTML'|'styleLayout'} TaskGroupIds */ -+Object.defineProperty(exports, "__esModule", { value: true }); - /** - * @typedef TaskGroup - * @property {TaskGroupIds} id -@@= skipped -27, +29 lines =@@ - taskNameToGroup, - }; - //// [index.js] -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); - const { taskGroups, taskNameToGroup } = require('./module.js'); - /** @typedef {import('./module.js').TaskGroup} TaskGroup */ - /** -@@= skipped -16, +18 lines =@@ - */ - constructor(x, y) { } - } -+export = MainThreadTasks; - module.exports = MainThreadTasks; +@@= skipped -101, +101 lines =@@ //// [module.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/jsdocCatchClauseWithTypeAnnotation.js b/testdata/baselines/reference/submodule/conformance/jsdocCatchClauseWithTypeAnnotation.js index ca7bbd01ea..b7c3e4e63f 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocCatchClauseWithTypeAnnotation.js +++ b/testdata/baselines/reference/submodule/conformance/jsdocCatchClauseWithTypeAnnotation.js @@ -144,4 +144,3 @@ function fn() { try { } catch ( /** @type {object} */{ x }) { } // error in the type } -export {}; diff --git a/testdata/baselines/reference/submodule/conformance/jsdocCatchClauseWithTypeAnnotation.js.diff b/testdata/baselines/reference/submodule/conformance/jsdocCatchClauseWithTypeAnnotation.js.diff deleted file mode 100644 index 6411706b8a..0000000000 --- a/testdata/baselines/reference/submodule/conformance/jsdocCatchClauseWithTypeAnnotation.js.diff +++ /dev/null @@ -1,7 +0,0 @@ ---- old.jsdocCatchClauseWithTypeAnnotation.js -+++ new.jsdocCatchClauseWithTypeAnnotation.js -@@= skipped -143, +143 lines =@@ - try { } - catch ( /** @type {object} */{ x }) { } // error in the type - } -+export {}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js index 01a2dab259..744dbff600 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js @@ -69,12 +69,10 @@ function f3(a, b) {} //// [file.js] -"use strict"; /** * @template {string | number} [T=string] - ok: defaults are permitted * @typedef {[T]} A */ -Object.defineProperty(exports, "__esModule", { value: true }); /** @type {A} */ // ok, default for `T` in `A` is `string` const aDefault1 = [""]; /** @type {A} */ // error: `number` is not assignable to string` @@ -134,9 +132,57 @@ function f3(a, b) { } * @template {string | number} [T=string] - ok: defaults are permitted * @typedef {[T]} A */ -export type A = [T]; -export type B = [T, U]; -export type C = [T]; -export type D = [T]; -export type E = [T, U]; -export type G = [T, U]; +type A = [T]; +/** @type {A} */ declare const aDefault1: A; +/** @type {A} */ declare const aDefault2: A; +/** @type {A} */ declare const aString: A; +/** @type {A} */ declare const aNumber: A; +type B = [T, U]; +type C = [T]; +type D = [T]; +type E = [T, U]; +type G = [T, U]; +/** + * @template T + * @template [U=T] - ok: default can reference earlier type parameter + * @typedef {[T, U]} B + */ +/** + * @template {string | number} [T] - error: default requires an `=type` + * @typedef {[T]} C + */ +/** + * @template {string | number} [T=] - error: default requires a `type` + * @typedef {[T]} D + */ +/** + * @template {string | number} [T=string] + * @template U - error: Required type parameters cannot follow optional type parameters + * @typedef {[T, U]} E + */ +/** + * @template [T=U] - error: Type parameter defaults can only reference previously declared type parameters. + * @template [U=T] + * @typedef {[T, U]} G + */ +/** + * @template T + * @template [U=T] - ok: default can reference earlier type parameter + * @param {T} a + * @param {U} b + */ +declare function f1(a: T, b: U): void; +/** +* @template {string | number} [T=string] +* @template U - error: Required type parameters cannot follow optional type parameters +* @param {T} a +* @param {U} b +*/ +declare function f2(a: T, b: U): void; +/** + * @template [T=U] - error: Type parameter defaults can only reference previously declared type parameters. + * @template [U=T] + * @param {T} a + * @param {U} b + */ +declare function f3(a: T, b: U): void; diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js.diff b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js.diff index 5f63dd250d..229440acab 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagDefault.js.diff @@ -1,69 +1,34 @@ --- old.jsdocTemplateTagDefault.js +++ new.jsdocTemplateTagDefault.js -@@= skipped -68, +68 lines =@@ - - - //// [file.js] -+"use strict"; - /** - * @template {string | number} [T=string] - ok: defaults are permitted - * @typedef {[T]} A - */ -+Object.defineProperty(exports, "__esModule", { value: true }); - /** @type {A} */ // ok, default for `T` in `A` is `string` - const aDefault1 = [""]; - /** @type {A} */ // error: `number` is not assignable to string` -@@= skipped -60, +62 lines =@@ +@@= skipped -128, +128 lines =@@ //// [file.d.ts] /** -- * @template T -- * @template [U=T] - ok: default can reference earlier type parameter -- * @typedef {[T, U]} B -- */ --/** -- * @template {string | number} [T] - error: default requires an `=type` -- * @typedef {[T]} C -- */ --/** -- * @template {string | number} [T=] - error: default requires a `type` -- * @typedef {[T]} D -- */ --/** -- * @template {string | number} [T=string] -- * @template U - error: Required type parameters cannot follow optional type parameters -- * @typedef {[T, U]} E -- */ --/** -- * @template [T=U] - error: Type parameter defaults can only reference previously declared type parameters. -- * @template [U=T] -- * @typedef {[T, U]} G -- */ --/** -- * @template T -- * @template [U=T] - ok: default can reference earlier type parameter -- * @param {T} a -- * @param {U} b -- */ --declare function f1(a: T, b: U): void; --/** --* @template {string | number} [T=string] --* @template U - error: Required type parameters cannot follow optional type parameters --* @param {T} a --* @param {U} b --*/ --declare function f2(a: T, b: U): void; ++ * @template {string | number} [T=string] - ok: defaults are permitted ++ * @typedef {[T]} A ++ */ ++type A = [T]; ++/** @type {A} */ declare const aDefault1: A; ++/** @type {A} */ declare const aDefault2: A; ++/** @type {A} */ declare const aString: A; ++/** @type {A} */ declare const aNumber: A; ++type B = [T, U]; ++type C = [T]; ++type D = [T]; ++type E = [T, U]; ++type G = [T, U]; ++/** + * @template T + * @template [U=T] - ok: default can reference earlier type parameter + * @typedef {[T, U]} B +@@= skipped -43, +57 lines =@@ + * @param {U} b + */ + declare function f3(a: T, b: U): void; -/** -- * @template [T=U] - error: Type parameter defaults can only reference previously declared type parameters. -- * @template [U=T] -- * @param {T} a -- * @param {U} b +- * @template {string | number} [T=string] - ok: defaults are permitted +- * @typedef {[T]} A - */ --declare function f3(a: T, b: U): void; --/** - * @template {string | number} [T=string] - ok: defaults are permitted - * @typedef {[T]} A - */ -/** @type {A} */ declare const aDefault1: A; -/** @type {A} */ declare const aDefault2: A; -/** @type {A} */ declare const aString: A; @@ -73,10 +38,4 @@ -type D = [T]; -type E = [T, U]; -type G = [T, U]; --type A = [T]; -+export type A = [T]; -+export type B = [T, U]; -+export type C = [T]; -+export type D = [T]; -+export type E = [T, U]; -+export type G = [T, U]; \ No newline at end of file +-type A = [T]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js index d3c5005526..237f6eaa52 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js @@ -13,13 +13,11 @@ const x = { a: 1 }; const y = "a"; //// [file.js] -"use strict"; /** * @template T * @template {keyof T} K * @typedef {T[K]} Foo */ -Object.defineProperty(exports, "__esModule", { value: true }); const x = { a: 1 }; /** @type {Foo} */ const y = "a"; @@ -31,4 +29,9 @@ const y = "a"; * @template {keyof T} K * @typedef {T[K]} Foo */ -export type Foo = T[K]; +type Foo = T[K]; +declare const x: { + a: number; +}; +/** @type {Foo} */ +declare const y: Foo; diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js.diff b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js.diff index 5d1aebd951..abcd3f7854 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTemplateTagNameResolution.js.diff @@ -1,31 +1,21 @@ --- old.jsdocTemplateTagNameResolution.js +++ new.jsdocTemplateTagNameResolution.js -@@= skipped -12, +12 lines =@@ - const y = "a"; - - //// [file.js] -+"use strict"; - /** - * @template T - * @template {keyof T} K - * @typedef {T[K]} Foo - */ -+Object.defineProperty(exports, "__esModule", { value: true }); - const x = { a: 1 }; - /** @type {Foo} */ - const y = "a"; +@@= skipped -23, +23 lines =@@ //// [file.d.ts] -declare namespace x { - let a: number; -} --/** @type {Foo} */ --declare const y: Foo; --type Foo = T[K]; +/** + * @template T + * @template {keyof T} K + * @typedef {T[K]} Foo + */ -+export type Foo = T[K]; \ No newline at end of file ++type Foo = T[K]; ++declare const x: { ++ a: number; ++}; + /** @type {Foo} */ + declare const y: Foo; +-type Foo = T[K]; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeDefAtStartOfFile.errors.txt b/testdata/baselines/reference/submodule/conformance/jsdocTypeDefAtStartOfFile.errors.txt deleted file mode 100644 index be8a7c7817..0000000000 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeDefAtStartOfFile.errors.txt +++ /dev/null @@ -1,17 +0,0 @@ -index.js(1,12): error TS2304: Cannot find name 'AnyEffect'. -index.js(3,12): error TS2304: Cannot find name 'Third'. - - -==== dtsEquivalent.js (0 errors) ==== - /** @typedef {{[k: string]: any}} AnyEffect */ - /** @typedef {number} Third */ -==== index.js (2 errors) ==== - /** @type {AnyEffect} */ - ~~~~~~~~~ -!!! error TS2304: Cannot find name 'AnyEffect'. - let b; - /** @type {Third} */ - ~~~~~ -!!! error TS2304: Cannot find name 'Third'. - let c; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeDefAtStartOfFile.types b/testdata/baselines/reference/submodule/conformance/jsdocTypeDefAtStartOfFile.types index d3c40ce2ed..9512a17831 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeDefAtStartOfFile.types +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeDefAtStartOfFile.types @@ -11,5 +11,5 @@ let b; /** @type {Third} */ let c; ->c : Third +>c : number diff --git a/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js b/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js index b4f596158e..b9d465a10e 100644 --- a/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js +++ b/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js @@ -28,14 +28,12 @@ var see3 = true //// [linkTagEmit1.js] -"use strict"; /** @typedef {number} N */ /** * @typedef {Object} D1 * @property {1} e Just link to {@link NS.R} this time * @property {1} m Wyatt Earp loved {@link N integers} I bet. */ -Object.defineProperty(exports, "__esModule", { value: true }); /** @typedef {number} Z @see N {@link N} */ /** * @param {number} integer {@link Z} @@ -55,11 +53,18 @@ var see3 = true; * @property {1} e Just link to {@link NS.R} this time * @property {1} m Wyatt Earp loved {@link N integers} I bet. */ -export type N = number; -export type D1 = { +type N = number; +type D1 = { e: 1; m: 1; }; -export type Z = number; -export type Attempt = number; +type Z = number; +/** @typedef {number} Z @see N {@link N} */ +/** + * @param {number} integer {@link Z} + */ +declare function computeCommonSourceDirectoryOfFilenames(integer: number): number; +/** {@link https://hvad} */ +declare var see3: boolean; +type Attempt = number; /** @typedef {number} Attempt {@link https://wat} {@linkcode I think lingcod is better} {@linkplain or lutefisk}*/ diff --git a/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js.diff b/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js.diff index 2e9e68c8c3..f6a41a9ba1 100644 --- a/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js.diff +++ b/testdata/baselines/reference/submodule/conformance/linkTagEmit1.js.diff @@ -1,21 +1,6 @@ --- old.linkTagEmit1.js +++ new.linkTagEmit1.js -@@= skipped -27, +27 lines =@@ - - - //// [linkTagEmit1.js] -+"use strict"; - /** @typedef {number} N */ - /** - * @typedef {Object} D1 - * @property {1} e Just link to {@link NS.R} this time - * @property {1} m Wyatt Earp loved {@link N integers} I bet. - */ -+Object.defineProperty(exports, "__esModule", { value: true }); - /** @typedef {number} Z @see N {@link N} */ - /** - * @param {number} integer {@link Z} -@@= skipped -25, +27 lines =@@ +@@= skipped -52, +52 lines =@@ * @property {1} e Just link to {@link NS.R} this time * @property {1} m Wyatt Earp loved {@link N integers} I bet. */ @@ -26,24 +11,25 @@ -declare function computeCommonSourceDirectoryOfFilenames(integer: number): number; -/** {@link https://hvad} */ -declare var see3: boolean; --type N = number; --type D1 = { + type N = number; + type D1 = { - /** - * Just link to {@link NS.R} this time - */ -+export type N = number; -+export type D1 = { e: 1; - /** - * Wyatt Earp loved {@link N integers} I bet. - */ m: 1; }; --type Z = number; --/** + type Z = number; ++/** @typedef {number} Z @see N {@link N} */ + /** - * {@link https://wat} {@linkcode I think lingcod is better} {@linkplain or lutefisk} -- */ --type Attempt = number; -+export type Z = number; -+export type Attempt = number; ++ * @param {number} integer {@link Z} + */ ++declare function computeCommonSourceDirectoryOfFilenames(integer: number): number; ++/** {@link https://hvad} */ ++declare var see3: boolean; + type Attempt = number; +/** @typedef {number} Attempt {@link https://wat} {@linkcode I think lingcod is better} {@linkplain or lutefisk}*/ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js index dd51eb1722..a88f505406 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js @@ -38,7 +38,6 @@ module.exports = a; Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; -export = a; module.exports = a; //// [index.js] // esm format file @@ -48,7 +47,6 @@ export {}; // esm format file import "fs"; const a = {}; -export = a; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff index 87ec4bc527..699333ea8a 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff @@ -7,16 +7,8 @@ +Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; -+export = a; - module.exports = a; - //// [index.js] - // esm format file -@@= skipped -11, +13 lines =@@ - // esm format file - import "fs"; - const a = {}; -+export = a; module.exports = a; +@@= skipped -15, +16 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js index 6007d9749d..f2ed933815 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js @@ -36,7 +36,6 @@ module.exports = a; //// [file.js] // cjs format file const a = {}; -export = a; module.exports = a; //// [index.js] // esm format file @@ -46,7 +45,6 @@ export {}; // esm format file import "fs"; const a = {}; -export = a; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff index cecf6ef084..25030890c9 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff @@ -7,16 +7,8 @@ -"use strict"; // cjs format file const a = {}; -+export = a; - module.exports = a; - //// [index.js] - // esm format file -@@= skipped -12, +12 lines =@@ - // esm format file - import "fs"; - const a = {}; -+export = a; module.exports = a; +@@= skipped -16, +15 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js index dd51eb1722..a88f505406 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js @@ -38,7 +38,6 @@ module.exports = a; Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; -export = a; module.exports = a; //// [index.js] // esm format file @@ -48,7 +47,6 @@ export {}; // esm format file import "fs"; const a = {}; -export = a; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff index aa2779e63b..14e8fb2342 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff @@ -7,16 +7,8 @@ +Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; -+export = a; - module.exports = a; - //// [index.js] - // esm format file -@@= skipped -11, +13 lines =@@ - // esm format file - import "fs"; - const a = {}; -+export = a; module.exports = a; +@@= skipped -15, +16 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js index dd51eb1722..a88f505406 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js @@ -38,7 +38,6 @@ module.exports = a; Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; -export = a; module.exports = a; //// [index.js] // esm format file @@ -48,7 +47,6 @@ export {}; // esm format file import "fs"; const a = {}; -export = a; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff index 3ecaf4c8a6..aaf2b1bd7d 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff @@ -7,16 +7,8 @@ +Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; -+export = a; - module.exports = a; - //// [index.js] - // esm format file -@@= skipped -11, +13 lines =@@ - // esm format file - import "fs"; - const a = {}; -+export = a; module.exports = a; +@@= skipped -15, +16 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js index 41870a452e..750a0afa50 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js @@ -23,7 +23,6 @@ three.foo; //// [1.cjs] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -export = {}; module.exports = {}; //// [2.cjs] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff index 16a4552b04..6312e19c7f 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff @@ -5,7 +5,6 @@ //// [1.cjs] "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); -+export = {}; module.exports = {}; //// [2.cjs] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js index 41870a452e..750a0afa50 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js @@ -23,7 +23,6 @@ three.foo; //// [1.cjs] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -export = {}; module.exports = {}; //// [2.cjs] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff index 115c779170..4986156d82 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff @@ -5,7 +5,6 @@ //// [1.cjs] "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); -+export = {}; module.exports = {}; //// [2.cjs] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js index 41870a452e..750a0afa50 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js @@ -23,7 +23,6 @@ three.foo; //// [1.cjs] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -export = {}; module.exports = {}; //// [2.cjs] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff index 5c15cd3392..821b4cd9cf 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff @@ -5,7 +5,6 @@ //// [1.cjs] "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); -+export = {}; module.exports = {}; //// [2.cjs] "use strict"; diff --git a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.js b/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.js index de8ae0c44d..8d6e30dee8 100644 --- a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.js +++ b/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.js @@ -10,9 +10,6 @@ import * as tsConstants from "../lib/constants"; export { tsConstants }; //// [constants.js] -export = { - str: 'x', -}; module.exports = { str: 'x', }; diff --git a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.js.diff b/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.js.diff deleted file mode 100644 index 5f2e822088..0000000000 --- a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.js.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- old.reExportJsFromTs.js -+++ new.reExportJsFromTs.js -@@= skipped -9, +9 lines =@@ - export { tsConstants }; - - //// [constants.js] -+export = { -+ str: 'x', -+}; - module.exports = { - str: 'x', - }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js index 228caa8529..2db0ac558f 100644 --- a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js +++ b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js @@ -29,11 +29,9 @@ const p = {}; //// [bug39372.js] -"use strict"; /** @typedef {ReadonlyArray} JsonArray */ /** @typedef {{ readonly [key: string]: Json }} JsonRecord */ /** @typedef {boolean | number | string | null | JsonRecord | JsonArray | readonly []} Json */ -Object.defineProperty(exports, "__esModule", { value: true }); /** * @template T * @typedef {{ @@ -60,12 +58,12 @@ const p = {}; /** @typedef {ReadonlyArray} JsonArray */ /** @typedef {{ readonly [key: string]: Json }} JsonRecord */ /** @typedef {boolean | number | string | null | JsonRecord | JsonArray | readonly []} Json */ -export type JsonArray = ReadonlyArray; -export type JsonRecord = { +type JsonArray = ReadonlyArray; +type JsonRecord = { readonly [key: string]: Json; }; -export type Json = boolean | number | string | null | JsonRecord | JsonArray | readonly []; -export type XMLObject = { +type Json = boolean | number | string | null | JsonRecord | JsonArray | readonly []; +type XMLObject = { $A: { [K in keyof T]?: XMLObject[]; }; @@ -80,3 +78,25 @@ export type XMLObject = { } & { [K in keyof T]?: (T[K] extends string ? string : XMLObject); }; +/** + * @template T + * @typedef {{ + $A: { + [K in keyof T]?: XMLObject[] + }, + $O: { + [K in keyof T]?: { + $$?: Record + } & (T[K] extends string ? {$:string} : XMLObject) + }, + $$?: Record, + } & { + [K in keyof T]?: ( + T[K] extends string ? string + : XMLObject + ) +}} XMLObject */ +/** @type {XMLObject<{foo:string}>} */ +declare const p: XMLObject<{ + foo: string; +}>; diff --git a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js.diff b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js.diff index c0b3bccd2c..b02692565c 100644 --- a/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js.diff +++ b/testdata/baselines/reference/submodule/conformance/recursiveTypeReferences2.js.diff @@ -1,49 +1,40 @@ --- old.recursiveTypeReferences2.js +++ new.recursiveTypeReferences2.js -@@= skipped -28, +28 lines =@@ - - - //// [bug39372.js] -+"use strict"; +@@= skipped -57, +57 lines =@@ /** @typedef {ReadonlyArray} JsonArray */ /** @typedef {{ readonly [key: string]: Json }} JsonRecord */ /** @typedef {boolean | number | string | null | JsonRecord | JsonArray | readonly []} Json */ -+Object.defineProperty(exports, "__esModule", { value: true }); ++type JsonArray = ReadonlyArray; ++type JsonRecord = { ++ readonly [key: string]: Json; ++}; ++type Json = boolean | number | string | null | JsonRecord | JsonArray | readonly []; ++type XMLObject = { ++ $A: { ++ [K in keyof T]?: XMLObject[]; ++ }; ++ $O: { ++ [K in keyof T]?: { ++ $$?: Record; ++ } & (T[K] extends string ? { ++ $: string; ++ } : XMLObject); ++ }; ++ $$?: Record; ++} & { ++ [K in keyof T]?: (T[K] extends string ? string : XMLObject); ++}; /** * @template T * @typedef {{ -@@= skipped -29, +31 lines =@@ - /** @typedef {ReadonlyArray} JsonArray */ - /** @typedef {{ readonly [key: string]: Json }} JsonRecord */ - /** @typedef {boolean | number | string | null | JsonRecord | JsonArray | readonly []} Json */ --/** -- * @template T -- * @typedef {{ -- $A: { -- [K in keyof T]?: XMLObject[] -- }, -- $O: { -- [K in keyof T]?: { -- $$?: Record -- } & (T[K] extends string ? {$:string} : XMLObject) -- }, -- $$?: Record, -- } & { -- [K in keyof T]?: ( -- T[K] extends string ? string -- : XMLObject -- ) --}} XMLObject */ --/** @type {XMLObject<{foo:string}>} */ --declare const p: XMLObject<{ -- foo: string; --}>; +@@= skipped -22, +42 lines =@@ + declare const p: XMLObject<{ + foo: string; + }>; -type JsonArray = ReadonlyArray; -type JsonRecord = { -+export type JsonArray = ReadonlyArray; -+export type JsonRecord = { - readonly [key: string]: Json; - }; +- readonly [key: string]: Json; +-}; -type Json = boolean | number | string | null | JsonRecord | JsonArray | readonly []; -/** - * @@ -55,20 +46,5 @@ - } & (T[K] extends string ? { - $: string; - } : XMLObject); }; -+export type Json = boolean | number | string | null | JsonRecord | JsonArray | readonly []; -+export type XMLObject = { -+ $A: { -+ [K in keyof T]?: XMLObject[]; -+ }; -+ $O: { -+ [K in keyof T]?: { -+ $$?: Record; -+ } & (T[K] extends string ? { -+ $: string; -+ } : XMLObject); -+ }; - $$?: Record; --} & { [K in keyof T]?: (T[K] extends string ? string : XMLObject); }; -+} & { -+ [K in keyof T]?: (T[K] extends string ? string : XMLObject); -+}; \ No newline at end of file +- $$?: Record; +-} & { [K in keyof T]?: (T[K] extends string ? string : XMLObject); }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.js b/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.js index 9ec673efe1..9bf2eff629 100644 --- a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.js +++ b/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.js @@ -12,11 +12,6 @@ console.log(value) //// [mod.js] -export = { - x: { - y: "value" - } -}; module.exports = { x: { y: "value" diff --git a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.js.diff b/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.js.diff deleted file mode 100644 index 36d71c3416..0000000000 --- a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.js.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.requireTwoPropertyAccesses.js -+++ new.requireTwoPropertyAccesses.js -@@= skipped -11, +11 lines =@@ - - - //// [mod.js] -+export = { -+ x: { -+ y: "value" -+ } -+}; - module.exports = { - x: { - y: "value" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/seeTag4.js b/testdata/baselines/reference/submodule/conformance/seeTag4.js index e53677805e..28a9552189 100644 --- a/testdata/baselines/reference/submodule/conformance/seeTag4.js +++ b/testdata/baselines/reference/submodule/conformance/seeTag4.js @@ -14,11 +14,9 @@ let foo; //// [seeTag4.js] -"use strict"; /** * @typedef {any} A */ -Object.defineProperty(exports, "__esModule", { value: true }); /** * @see {@link A} * @see {@linkcode A} diff --git a/testdata/baselines/reference/submodule/conformance/seeTag4.js.diff b/testdata/baselines/reference/submodule/conformance/seeTag4.js.diff deleted file mode 100644 index f9f736b961..0000000000 --- a/testdata/baselines/reference/submodule/conformance/seeTag4.js.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.seeTag4.js -+++ new.seeTag4.js -@@= skipped -13, +13 lines =@@ - - - //// [seeTag4.js] -+"use strict"; - /** - * @typedef {any} A - */ -+Object.defineProperty(exports, "__esModule", { value: true }); - /** - * @see {@link A} - * @see {@linkcode A} \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js b/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js index c6ae7c908d..df598668b6 100644 --- a/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js +++ b/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js @@ -11,9 +11,7 @@ test('hi') // error, T=number //// [typeTagNoErasure.js] -"use strict"; /** @template T @typedef {(data: T1) => T1} Test */ -Object.defineProperty(exports, "__esModule", { value: true }); /** @type {Test} */ const test = dibbity => dibbity; test(1); // ok, T=1 @@ -22,4 +20,6 @@ test('hi'); // error, T=number //// [typeTagNoErasure.d.ts] /** @template T @typedef {(data: T1) => T1} Test */ -export type Test = (data: T1) => T1; +type Test = (data: T1) => T1; +/** @type {Test} */ +declare const test: Test; diff --git a/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js.diff b/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js.diff index 66bac15086..b9c7c6f2fc 100644 --- a/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js.diff +++ b/testdata/baselines/reference/submodule/conformance/typeTagNoErasure.js.diff @@ -1,20 +1,10 @@ --- old.typeTagNoErasure.js +++ new.typeTagNoErasure.js -@@= skipped -10, +10 lines =@@ - - - //// [typeTagNoErasure.js] -+"use strict"; - /** @template T @typedef {(data: T1) => T1} Test */ -+Object.defineProperty(exports, "__esModule", { value: true }); - /** @type {Test} */ - const test = dibbity => dibbity; - test(1); // ok, T=1 -@@= skipped -9, +11 lines =@@ +@@= skipped -19, +19 lines =@@ //// [typeTagNoErasure.d.ts] /** @template T @typedef {(data: T1) => T1} Test */ --/** @type {Test} */ --declare const test: Test; --type Test = (data: T1) => T1; -+export type Test = (data: T1) => T1; \ No newline at end of file ++type Test = (data: T1) => T1; + /** @type {Test} */ + declare const test: Test; +-type Test = (data: T1) => T1; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.errors.txt b/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.errors.txt index d48c75aeb1..ba8528abbb 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.errors.txt @@ -1,5 +1,3 @@ -mod1.js(3,23): error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. -mod1.js(4,7): error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. mod1.js(7,9): error TS2339: Property 'Bar' does not exist on type 'typeof import("mod1")'. mod1.js(10,1): error TS2300: Duplicate identifier 'export='. mod1.js(10,1): error TS2309: An export assignment cannot be used in a module with other exported elements. @@ -22,15 +20,11 @@ use.js(4,12): error TS2503: Cannot find namespace 'mod'. var bb; var bbb = new mod.Baz(); -==== mod1.js (8 errors) ==== +==== mod1.js (6 errors) ==== // error /** @typedef {number} Foo */ - ~~~ -!!! error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. class Foo { } // should error - ~~~ -!!! error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. /** @typedef {number} Bar */ exports.Bar = class { } diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule5.errors.txt b/testdata/baselines/reference/submodule/conformance/typedefCrossModule5.errors.txt new file mode 100644 index 0000000000..748c5510b8 --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule5.errors.txt @@ -0,0 +1,63 @@ +mod1.js:1:23 - error TS2300: Duplicate identifier 'Foo'. + +1 /** @typedef {number} Foo */ +   ~~~ + + mod2.js:1:7 - 'Foo' was also declared here. + 1 class Foo { } // should error +    ~~~ + +mod1.js:2:7 - error TS2451: Cannot redeclare block-scoped variable 'Bar'. + +2 class Bar {} +   ~~~ + + mod2.js:2:7 - 'Bar' was also declared here. + 2 const Bar = 3; +    ~~~ + +mod2.js:1:7 - error TS2300: Duplicate identifier 'Foo'. + +1 class Foo { } // should error +   ~~~ + + mod1.js:1:23 - 'Foo' was also declared here. + 1 /** @typedef {number} Foo */ +    ~~~ + +mod2.js:2:7 - error TS2451: Cannot redeclare block-scoped variable 'Bar'. + +2 const Bar = 3; +   ~~~ + + mod1.js:2:7 - 'Bar' was also declared here. + 2 class Bar {} +    ~~~ + + +==== mod1.js (2 errors) ==== + /** @typedef {number} Foo */ + ~~~ +!!! error TS2300: Duplicate identifier 'Foo'. +!!! related TS6203 mod2.js:1:7: 'Foo' was also declared here. + class Bar {} + ~~~ +!!! error TS2451: Cannot redeclare block-scoped variable 'Bar'. +!!! related TS6203 mod2.js:2:7: 'Bar' was also declared here. + +==== mod2.js (2 errors) ==== + class Foo { } // should error + ~~~ +!!! error TS2300: Duplicate identifier 'Foo'. +!!! related TS6203 mod1.js:1:23: 'Foo' was also declared here. + const Bar = 3; + ~~~ +!!! error TS2451: Cannot redeclare block-scoped variable 'Bar'. +!!! related TS6203 mod1.js:2:7: 'Bar' was also declared here. + +Found 4 errors in 2 files. + +Errors Files + 2 mod1.js:1 + 2 mod2.js:1 + diff --git a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.errors.txt b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.errors.txt index 430e0df3e9..14961de2a9 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.errors.txt @@ -1,6 +1,6 @@ a.js(12,23): error TS2741: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'. a.js(15,12): error TS2314: Generic type 'Everything' requires 5 type argument(s). -test.ts(1,23): error TS2304: Cannot find name 'Everything'. +test.ts(1,34): error TS2741: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'. ==== a.js (2 errors) ==== @@ -28,6 +28,7 @@ test.ts(1,23): error TS2304: Cannot find name 'Everything'. ==== test.ts (1 errors) ==== declare var actually: Everything<{ a: number }, undefined, { c: 1, d: 1 }, number, string>; - ~~~~~~~~~~ -!!! error TS2304: Cannot find name 'Everything'. + ~~~~~~~~~~~~~~ +!!! error TS2741: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'. +!!! related TS2728 a.js:2:28: 'b' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.symbols b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.symbols index 43cf894f0c..818555b778 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.symbols +++ b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.symbols @@ -24,7 +24,7 @@ var insufficient; === test.ts === declare var actually: Everything<{ a: number }, undefined, { c: 1, d: 1 }, number, string>; >actually : Symbol(actually, Decl(test.ts, 0, 11)) ->Everything : Symbol(Everything) +>Everything : Symbol(Everything, Decl(a.js, 5, 3)) >a : Symbol(a, Decl(test.ts, 0, 34)) >c : Symbol(c, Decl(test.ts, 0, 61)) >d : Symbol(d, Decl(test.ts, 0, 67)) diff --git a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.symbols.diff b/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.symbols.diff deleted file mode 100644 index 681fc7b3d6..0000000000 --- a/testdata/baselines/reference/submodule/conformance/typedefMultipleTypeParameters.symbols.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.typedefMultipleTypeParameters.symbols -+++ new.typedefMultipleTypeParameters.symbols -@@= skipped -23, +23 lines =@@ - === test.ts === - declare var actually: Everything<{ a: number }, undefined, { c: 1, d: 1 }, number, string>; - >actually : Symbol(actually, Decl(test.ts, 0, 11)) -->Everything : Symbol(Everything, Decl(a.js, 5, 3)) -+>Everything : Symbol(Everything) - >a : Symbol(a, Decl(test.ts, 0, 34)) - >c : Symbol(c, Decl(test.ts, 0, 61)) - >d : Symbol(d, Decl(test.ts, 0, 67)) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js b/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js index 68931be143..230abbb8ef 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js +++ b/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js @@ -24,7 +24,7 @@ exports.Preferences = Preferences; //// [typedefOnSemicolonClassElement.d.ts] export declare class Preferences { - export type A = string; + type A = string; /** @type {A} */ a: A; } @@ -40,8 +40,8 @@ dist/typedefOnSemicolonClassElement.d.ts(5,1): error TS1128: Declaration or stat ==== dist/typedefOnSemicolonClassElement.d.ts (3 errors) ==== export declare class Preferences { - export type A = string; - ~~~~~~ + type A = string; + ~~~~ !!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. /** @type {A} */ a: A; diff --git a/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js.diff b/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js.diff index b1d29ecaf0..d4a2b25707 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js.diff +++ b/testdata/baselines/reference/submodule/conformance/typedefOnSemicolonClassElement.js.diff @@ -19,7 +19,7 @@ //// [typedefOnSemicolonClassElement.d.ts] -export class Preferences { +export declare class Preferences { -+ export type A = string; ++ type A = string; /** @type {A} */ - a: string; + a: A; @@ -36,8 +36,8 @@ + +==== dist/typedefOnSemicolonClassElement.d.ts (3 errors) ==== + export declare class Preferences { -+ export type A = string; -+ ~~~~~~ ++ type A = string; ++ ~~~~ +!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + /** @type {A} */ + a: A; diff --git a/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js b/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js index 70244a3f6f..90daac9677 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js +++ b/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js @@ -82,8 +82,6 @@ function proof (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) { //// [typedefOnStatements.js] -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); /** @typedef {{a: string}} A */ ; /** @typedef {{ b: string }} B */ @@ -160,54 +158,74 @@ function proof(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { //// [typedefOnStatements.d.ts] -export type A = { +type A = { a: string; }; -export type B = { +type B = { b: string; }; -export type C = { +type C = { c: string; }; -export type D = { +type D = { d: string; }; -export type E = { +type E = { e: string; }; -export type F = { +type F = { f: string; }; -export type G = { +type G = { g: string; }; -export type H = { +type H = { h: string; }; -export type I = { +type I = { i: string; }; -export type J = { +type J = { j: string; }; -export type K = { +type K = { k: string; }; -export type L = { +type L = { l: string; }; -export type M = { +type M = { m: string; }; -export type N = { +type N = { n: string; }; -export type O = { +type O = { o: string; }; -export type P = { +type P = { p: string; }; -export type Q = { +type Q = { q: string; }; +/** + * @param {A} a + * @param {B} b + * @param {C} c + * @param {D} d + * @param {E} e + * @param {F} f + * @param {G} g + * @param {H} h + * @param {I} i + * @param {J} j + * @param {K} k + * @param {L} l + * @param {M} m + * @param {N} n + * @param {O} o + * @param {P} p + * @param {Q} q + */ +declare function proof(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L, m: M, n: N, o: O, p: P, q: Q): void; diff --git a/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js.diff b/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js.diff index 1090c64ecc..2c69789f2a 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js.diff +++ b/testdata/baselines/reference/submodule/conformance/typedefOnStatements.js.diff @@ -1,14 +1,14 @@ --- old.typedefOnStatements.js +++ new.typedefOnStatements.js -@@= skipped -82, +82 lines =@@ +@@= skipped -81, +81 lines =@@ + //// [typedefOnStatements.js] - "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); +-"use strict"; /** @typedef {{a: string}} A */ ; /** @typedef {{ b: string }} B */ -@@= skipped -76, +77 lines =@@ +@@= skipped -77, +76 lines =@@ //// [typedefOnStatements.d.ts] @@ -32,71 +32,30 @@ - * @param {Q} q - */ -declare function proof(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L, m: M, n: N, o: O, p: P, q: Q): void; --type A = { -+export type A = { + type A = { a: string; }; --type B = { -+export type B = { - b: string; - }; --type C = { -+export type C = { - c: string; - }; --type D = { -+export type D = { - d: string; - }; --type E = { -+export type E = { - e: string; - }; --type F = { -+export type F = { - f: string; - }; --type G = { -+export type G = { - g: string; - }; --type H = { -+export type H = { - h: string; - }; --type I = { -+export type I = { - i: string; - }; --type J = { -+export type J = { - j: string; - }; --type K = { -+export type K = { - k: string; - }; --type L = { -+export type L = { - l: string; - }; --type M = { -+export type M = { - m: string; - }; --type N = { -+export type N = { - n: string; - }; --type O = { -+export type O = { - o: string; - }; --type P = { -+export type P = { - p: string; - }; --type Q = { -+export type Q = { +@@= skipped -71, +51 lines =@@ + type Q = { q: string; - }; \ No newline at end of file + }; ++/** ++ * @param {A} a ++ * @param {B} b ++ * @param {C} c ++ * @param {D} d ++ * @param {E} e ++ * @param {F} f ++ * @param {G} g ++ * @param {H} h ++ * @param {I} i ++ * @param {J} j ++ * @param {K} k ++ * @param {L} l ++ * @param {M} m ++ * @param {N} n ++ * @param {O} o ++ * @param {P} p ++ * @param {Q} q ++ */ ++declare function proof(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L, m: M, n: N, o: O, p: P, q: Q): void; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/typedefTagWrapping.errors.txt b/testdata/baselines/reference/submodule/conformance/typedefTagWrapping.errors.txt index 80e1108585..2371132076 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefTagWrapping.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/typedefTagWrapping.errors.txt @@ -1,22 +1,29 @@ mod1.js(2,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? +mod1.js(2,22): error TS2300: Duplicate identifier '(Missing)'. mod1.js(2,22): error TS1005: '}' expected. -mod1.js(9,12): error TS2304: Cannot find name 'Type1'. +mod1.js(9,12): error TS2552: Cannot find name 'Type1'. Did you mean 'Type2'? mod3.js(4,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? +mod3.js(4,22): error TS2300: Duplicate identifier '(Missing)'. mod3.js(4,22): error TS1005: '}' expected. mod3.js(10,12): error TS2304: Cannot find name 'StringOrNumber1'. mod4.js(4,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? +mod4.js(4,22): error TS2300: Duplicate identifier '(Missing)'. mod4.js(4,22): error TS1005: '}' expected. mod4.js(11,12): error TS2304: Cannot find name 'StringOrNumber2'. mod7.js(5,7): error TS1110: Type expected. mod7.js(8,4): error TS1110: Type expected. -==== mod1.js (3 errors) ==== +==== mod1.js (4 errors) ==== /** * @typedef {function(string): boolean} ~~~~~~~~ !!! error TS2552: Cannot find name 'function'. Did you mean 'Function'? !!! related TS2728 lib.es5.d.ts:--:--: 'Function' is declared here. + +!!! error TS2300: Duplicate identifier '(Missing)'. +!!! related TS6203 mod3.js:4:22: '(Missing)' was also declared here. +!!! related TS6203 mod4.js:4:22: '(Missing)' was also declared here. ~ !!! error TS1005: '}' expected. * Type1 @@ -27,7 +34,7 @@ mod7.js(8,4): error TS1110: Type expected. * line than the typedef tag. * @param {Type1} func The function to call. ~~~~~ -!!! error TS2304: Cannot find name 'Type1'. +!!! error TS2552: Cannot find name 'Type1'. Did you mean 'Type2'? * @param {string} arg The argument to call it with. * @returns {boolean} The return. */ @@ -53,7 +60,7 @@ mod7.js(8,4): error TS1110: Type expected. return obj.boo ? obj.num : obj.str; } -==== mod3.js (3 errors) ==== +==== mod3.js (4 errors) ==== /** * A function whose signature is very long. * @@ -61,6 +68,9 @@ mod7.js(8,4): error TS1110: Type expected. ~~~~~~~~ !!! error TS2552: Cannot find name 'function'. Did you mean 'Function'? !!! related TS2728 lib.es5.d.ts:--:--: 'Function' is declared here. + +!!! error TS2300: Duplicate identifier '(Missing)'. +!!! related TS6203 mod1.js:2:22: '(Missing)' was also declared here. ~ !!! error TS1005: '}' expected. * (string|number)} StringOrNumber1 @@ -80,7 +90,7 @@ mod7.js(8,4): error TS1110: Type expected. return func(bool, str, num) } -==== mod4.js (3 errors) ==== +==== mod4.js (4 errors) ==== /** * A function whose signature is very long. * @@ -88,6 +98,9 @@ mod7.js(8,4): error TS1110: Type expected. ~~~~~~~~ !!! error TS2552: Cannot find name 'function'. Did you mean 'Function'? !!! related TS2728 lib.es5.d.ts:--:--: 'Function' is declared here. + +!!! error TS2300: Duplicate identifier '(Missing)'. +!!! related TS6203 mod1.js:2:22: '(Missing)' was also declared here. ~ !!! error TS1005: '}' expected. * number): diff --git a/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.errors.txt.diff index 8c877aa4f3..de61884fc1 100644 --- a/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.errors.txt.diff +++ b/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.errors.txt.diff @@ -3,14 +3,12 @@ @@= skipped -0, +0 lines =@@ - +enumDef.js(14,21): error TS1003: Identifier expected. -+enumDef.js(16,18): error TS2339: Property 'Blah' does not exist on type '{ Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }'. -+index.js(4,17): error TS2503: Cannot find namespace 'Host'. -+index.js(8,21): error TS2304: Cannot find name 'Host'. -+index.js(13,11): error TS2503: Cannot find namespace 'Host'. -+index.js(18,11): error TS2503: Cannot find namespace 'Host'. ++index.js(4,17): error TS2702: 'Host' only refers to a type, but is being used as a namespace here. ++index.js(13,11): error TS2702: 'Host' only refers to a type, but is being used as a namespace here. ++index.js(18,11): error TS2702: 'Host' only refers to a type, but is being used as a namespace here. + + -+==== enumDef.js (2 errors) ==== ++==== enumDef.js (1 errors) ==== + var Host = {}; + Host.UserMetrics = {}; + /** @enum {number} */ @@ -30,37 +28,33 @@ + +!!! error TS1003: Identifier expected. + Host.UserMetrics.Blah = { -+ ~~~~ -+!!! error TS2339: Property 'Blah' does not exist on type '{ Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }'. + x: 12 + } -+==== index.js (4 errors) ==== ++==== index.js (3 errors) ==== + var Other = {}; + Other.Cls = class { + /** + * @param {!Host.UserMetrics.Action} p + ~~~~ -+!!! error TS2503: Cannot find namespace 'Host'. ++!!! error TS2702: 'Host' only refers to a type, but is being used as a namespace here. + */ + method(p) {} + usage() { + this.method(Host.UserMetrics.Action.WindowDocked); -+ ~~~~ -+!!! error TS2304: Cannot find name 'Host'. + } + } + + /** + * @type {Host.UserMetrics.Bargh} + ~~~~ -+!!! error TS2503: Cannot find namespace 'Host'. ++!!! error TS2702: 'Host' only refers to a type, but is being used as a namespace here. + */ + var x = "ok"; + + /** + * @type {Host.UserMetrics.Blah} + ~~~~ -+!!! error TS2503: Cannot find namespace 'Host'. ++!!! error TS2702: 'Host' only refers to a type, but is being used as a namespace here. + */ + var y = "ok"; + \ No newline at end of file diff --git a/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.types.diff b/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.types.diff index 6acccc05c0..691473114e 100644 --- a/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.types.diff +++ b/testdata/baselines/reference/submoduleAccepted/compiler/jsEnumCrossFileExport.types.diff @@ -6,8 +6,8 @@ var Host = {}; ->Host : typeof Host ->{} : {} -+>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } -+>{} : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } ++>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } ++>{} : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } Host.UserMetrics = {}; ->Host.UserMetrics = {} : typeof Host.UserMetrics @@ -15,11 +15,11 @@ ->Host : typeof Host ->UserMetrics : typeof Host.UserMetrics ->{} : {} -+>Host.UserMetrics = {} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } -+>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } -+>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } -+>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } -+>{} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ++>Host.UserMetrics = {} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } ++>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } ++>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } ++>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } ++>{} : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } /** @enum {number} */ Host.UserMetrics.Action = { @@ -28,30 +28,26 @@ ->Host.UserMetrics : typeof Host.UserMetrics ->Host : typeof Host ->UserMetrics : typeof Host.UserMetrics -+>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } -+>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } -+>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } ++>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } ++>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } ++>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } >Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } >{ WindowDocked: 1, WindowUndocked: 2, ScriptsBreakpointSet: 3, TimelineStarted: 4,} : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } -@@= skipped -45, +45 lines =@@ - */ +@@= skipped -46, +46 lines =@@ Host.UserMetrics.Blah = { >Host.UserMetrics.Blah = { x: 12} : { x: number; } -->Host.UserMetrics.Blah : { x: number; } + >Host.UserMetrics.Blah : { x: number; } ->Host.UserMetrics : typeof Host.UserMetrics ->Host : typeof Host ->UserMetrics : typeof Host.UserMetrics -->Blah : { x: number; } -+>Host.UserMetrics.Blah : any -+>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } -+>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; }; } -+>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; } -+>Blah : any ++>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } ++>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } ++>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } + >Blah : { x: number; } >{ x: 12} : { x: number; } - x: 12 -@@= skipped -13, +13 lines =@@ +@@= skipped -12, +12 lines =@@ } === index.js === var Other = {}; @@ -77,28 +73,20 @@ usage() { >usage : () => void -@@= skipped -10, +10 lines =@@ - >this.method : (p: Host.UserMetrics.Action) => void - >this : this +@@= skipped -12, +12 lines =@@ >method : (p: Host.UserMetrics.Action) => void -->Host.UserMetrics.Action.WindowDocked : number -->Host.UserMetrics.Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } + >Host.UserMetrics.Action.WindowDocked : number + >Host.UserMetrics.Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } ->Host.UserMetrics : typeof Host.UserMetrics ->Host : typeof Host ->UserMetrics : typeof Host.UserMetrics -->Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } -->WindowDocked : number -+>Host.UserMetrics.Action.WindowDocked : any -+>Host.UserMetrics.Action : any -+>Host.UserMetrics : any -+>Host : any -+>UserMetrics : any -+>Action : any -+>WindowDocked : any ++>Host.UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } ++>Host : { UserMetrics: { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; }; } ++>UserMetrics : { Action: { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; }; Blah: { x: number; }; } + >Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } + >WindowDocked : number } - } - -@@= skipped -14, +14 lines =@@ +@@= skipped -12, +12 lines =@@ * @type {Host.UserMetrics.Bargh} */ var x = "ok"; diff --git a/testdata/baselines/reference/submoduleAccepted/compiler/recursiveResolveDeclaredMembers.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/compiler/recursiveResolveDeclaredMembers.errors.txt.diff deleted file mode 100644 index 92d1e024a9..0000000000 --- a/testdata/baselines/reference/submoduleAccepted/compiler/recursiveResolveDeclaredMembers.errors.txt.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- old.recursiveResolveDeclaredMembers.errors.txt -+++ new.recursiveResolveDeclaredMembers.errors.txt -@@= skipped -0, +0 lines =@@ -- -+types.ts(2,9): error TS2304: Cannot find name 'E'. -+ -+ -+==== types.ts (1 errors) ==== -+ export interface F { -+ (): E; -+ ~ -+!!! error TS2304: Cannot find name 'E'. -+ } -+ export interface D {} -+ -+==== other.js (0 errors) ==== -+ /** @typedef {import("./types").D} E */ -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocTypedefOnlySourceFile.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocTypedefOnlySourceFile.errors.txt.diff index 60fa860711..2b38c2bb66 100644 --- a/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocTypedefOnlySourceFile.errors.txt.diff +++ b/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocTypedefOnlySourceFile.errors.txt.diff @@ -5,18 +5,15 @@ - - -==== 0.js (1 errors) ==== -+0.js(3,5): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. +0.js(6,21): error TS1003: Identifier expected. +0.js(8,9): error TS2339: Property 'SomeName' does not exist on type '{}'. +0.js(10,12): error TS2503: Cannot find namespace 'exports'. + + -+==== 0.js (4 errors) ==== ++==== 0.js (3 errors) ==== // @ts-check var exports = {}; -+ ~~~~~~~ -+!!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. /** * @typedef {string} diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/jsdocTypeDefAtStartOfFile.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/jsdocTypeDefAtStartOfFile.errors.txt.diff deleted file mode 100644 index 54ee845a3b..0000000000 --- a/testdata/baselines/reference/submoduleAccepted/conformance/jsdocTypeDefAtStartOfFile.errors.txt.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.jsdocTypeDefAtStartOfFile.errors.txt -+++ new.jsdocTypeDefAtStartOfFile.errors.txt -@@= skipped -0, +0 lines =@@ -- -+index.js(1,12): error TS2304: Cannot find name 'AnyEffect'. -+index.js(3,12): error TS2304: Cannot find name 'Third'. -+ -+ -+==== dtsEquivalent.js (0 errors) ==== -+ /** @typedef {{[k: string]: any}} AnyEffect */ -+ /** @typedef {number} Third */ -+==== index.js (2 errors) ==== -+ /** @type {AnyEffect} */ -+ ~~~~~~~~~ -+!!! error TS2304: Cannot find name 'AnyEffect'. -+ let b; -+ /** @type {Third} */ -+ ~~~~~ -+!!! error TS2304: Cannot find name 'Third'. -+ let c; -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/jsdocTypeDefAtStartOfFile.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/jsdocTypeDefAtStartOfFile.types.diff deleted file mode 100644 index ec80ec7adf..0000000000 --- a/testdata/baselines/reference/submoduleAccepted/conformance/jsdocTypeDefAtStartOfFile.types.diff +++ /dev/null @@ -1,8 +0,0 @@ ---- old.jsdocTypeDefAtStartOfFile.types -+++ new.jsdocTypeDefAtStartOfFile.types -@@= skipped -10, +10 lines =@@ - - /** @type {Third} */ - let c; -->c : number -+>c : Third diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule2.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule2.errors.txt.diff index 0a4e1b8385..1fca153ea0 100644 --- a/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule2.errors.txt.diff +++ b/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule2.errors.txt.diff @@ -8,8 +8,6 @@ - - -==== use.js (0 errors) ==== -+mod1.js(3,23): error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. -+mod1.js(4,7): error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. +mod1.js(7,9): error TS2339: Property 'Bar' does not exist on type 'typeof import("mod1")'. +mod1.js(10,1): error TS2300: Duplicate identifier 'export='. +mod1.js(10,1): error TS2309: An export assignment cannot be used in a module with other exported elements. @@ -33,17 +31,15 @@ var bbb = new mod.Baz(); -==== mod1.js (4 errors) ==== -+==== mod1.js (8 errors) ==== ++==== mod1.js (6 errors) ==== // error /** @typedef {number} Foo */ - ~~~ +- ~~~ -!!! error TS2300: Duplicate identifier 'Foo'. -+!!! error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. class Foo { } // should error - ~~~ +- ~~~ -!!! error TS2300: Duplicate identifier 'Foo'. -+!!! error TS2395: Individual declarations in merged declaration 'Foo' must be all exported or all local. /** @typedef {number} Bar */ exports.Bar = class { } @@ -71,7 +67,7 @@ // ok -@@= skipped -42, +56 lines =@@ +@@= skipped -42, +50 lines =@@ /** @typedef {number} Quid */ exports.Quid = 2; diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule5.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule5.errors.txt.diff index 19a0c57f0f..7c1308d36e 100644 --- a/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule5.errors.txt.diff +++ b/testdata/baselines/reference/submoduleAccepted/conformance/typedefCrossModule5.errors.txt.diff @@ -1,67 +1,52 @@ --- old.typedefCrossModule5.errors.txt +++ new.typedefCrossModule5.errors.txt -@@= skipped -0, +0 lines =@@ --mod1.js:1:23 - error TS2300: Duplicate identifier 'Foo'. -- --1 /** @typedef {number} Foo */ --   ~~~ -- +@@= skipped -2, +2 lines =@@ + 1 /** @typedef {number} Foo */ +    ~~~ + - mod2.js:1:7 -- 1 class Foo { } // should error --    ~~~ ++ mod2.js:1:7 - 'Foo' was also declared here. + 1 class Foo { } // should error +    ~~~ - 'Foo' was also declared here. --mod1.js:2:7 - error TS2451: Cannot redeclare block-scoped variable 'Bar'. -- --2 class Bar {} --   ~~~ -- ++ + mod1.js:2:7 - error TS2451: Cannot redeclare block-scoped variable 'Bar'. + + 2 class Bar {} +    ~~~ + - mod2.js:2:7 -- 2 const Bar = 3; --    ~~~ ++ mod2.js:2:7 - 'Bar' was also declared here. + 2 const Bar = 3; +    ~~~ - 'Bar' was also declared here. --mod2.js:1:7 - error TS2300: Duplicate identifier 'Foo'. -- --1 class Foo { } // should error --   ~~~ -- ++ + mod2.js:1:7 - error TS2300: Duplicate identifier 'Foo'. + + 1 class Foo { } // should error +    ~~~ + - mod1.js:1:23 -- 1 /** @typedef {number} Foo */ --    ~~~ ++ mod1.js:1:23 - 'Foo' was also declared here. + 1 /** @typedef {number} Foo */ +    ~~~ - 'Foo' was also declared here. --mod2.js:2:7 - error TS2451: Cannot redeclare block-scoped variable 'Bar'. -- --2 const Bar = 3; --   ~~~ -- ++ + mod2.js:2:7 - error TS2451: Cannot redeclare block-scoped variable 'Bar'. + + 2 const Bar = 3; +    ~~~ + - mod1.js:2:7 -- 2 class Bar {} --    ~~~ ++ mod1.js:2:7 - 'Bar' was also declared here. + 2 class Bar {} +    ~~~ - 'Bar' was also declared here. -- -- --==== mod1.js (2 errors) ==== -- /** @typedef {number} Foo */ -- ~~~ --!!! error TS2300: Duplicate identifier 'Foo'. --!!! related TS6203 mod2.js:1:7: 'Foo' was also declared here. -- class Bar {} -- ~~~ --!!! error TS2451: Cannot redeclare block-scoped variable 'Bar'. --!!! related TS6203 mod2.js:2:7: 'Bar' was also declared here. -- --==== mod2.js (2 errors) ==== -- class Foo { } // should error -- ~~~ --!!! error TS2300: Duplicate identifier 'Foo'. --!!! related TS6203 mod1.js:1:23: 'Foo' was also declared here. -- const Bar = 3; -- ~~~ --!!! error TS2451: Cannot redeclare block-scoped variable 'Bar'. --!!! related TS6203 mod1.js:2:7: 'Bar' was also declared here. -- --Found 4 errors in 2 files. -- --Errors Files -- 2 mod1.js:1 -- 2 mod2.js:1 -+ \ No newline at end of file + + + ==== mod1.js (2 errors) ==== +@@= skipped -58, +57 lines =@@ + Errors Files + 2 mod1.js:1 + 2 mod2.js:1 ++ \ No newline at end of file diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/typedefMultipleTypeParameters.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/typedefMultipleTypeParameters.errors.txt.diff index 917202641a..308077e4b8 100644 --- a/testdata/baselines/reference/submoduleAccepted/conformance/typedefMultipleTypeParameters.errors.txt.diff +++ b/testdata/baselines/reference/submoduleAccepted/conformance/typedefMultipleTypeParameters.errors.txt.diff @@ -7,7 +7,7 @@ a.js(15,12): error TS2314: Generic type 'Everything' requires 5 type argument(s). -test.ts(1,34): error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: number; b: string; }'. - Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'. -+test.ts(1,23): error TS2304: Cannot find name 'Everything'. ++test.ts(1,34): error TS2741: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'. ==== a.js (2 errors) ==== @@ -21,14 +21,12 @@ !!! related TS2728 a.js:2:28: 'b' is declared here. var wrong; -@@= skipped -12, +11 lines =@@ - +@@= skipped -13, +12 lines =@@ ==== test.ts (1 errors) ==== declare var actually: Everything<{ a: number }, undefined, { c: 1, d: 1 }, number, string>; -- ~~~~~~~~~~~~~~ + ~~~~~~~~~~~~~~ -!!! error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: number; b: string; }'. -!!! error TS2344: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'. --!!! related TS2728 a.js:2:28: 'b' is declared here. -+ ~~~~~~~~~~ -+!!! error TS2304: Cannot find name 'Everything'. ++!!! error TS2741: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'. + !!! related TS2728 a.js:2:28: 'b' is declared here. \ No newline at end of file diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/typedefTagWrapping.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/typedefTagWrapping.errors.txt.diff index 42766d987e..35649ceb78 100644 --- a/testdata/baselines/reference/submoduleAccepted/conformance/typedefTagWrapping.errors.txt.diff +++ b/testdata/baselines/reference/submoduleAccepted/conformance/typedefTagWrapping.errors.txt.diff @@ -2,12 +2,15 @@ +++ new.typedefTagWrapping.errors.txt @@= skipped -0, +0 lines =@@ +mod1.js(2,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? ++mod1.js(2,22): error TS2300: Duplicate identifier '(Missing)'. +mod1.js(2,22): error TS1005: '}' expected. -+mod1.js(9,12): error TS2304: Cannot find name 'Type1'. ++mod1.js(9,12): error TS2552: Cannot find name 'Type1'. Did you mean 'Type2'? +mod3.js(4,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? ++mod3.js(4,22): error TS2300: Duplicate identifier '(Missing)'. +mod3.js(4,22): error TS1005: '}' expected. +mod3.js(10,12): error TS2304: Cannot find name 'StringOrNumber1'. +mod4.js(4,14): error TS2552: Cannot find name 'function'. Did you mean 'Function'? ++mod4.js(4,22): error TS2300: Duplicate identifier '(Missing)'. +mod4.js(4,22): error TS1005: '}' expected. +mod4.js(11,12): error TS2304: Cannot find name 'StringOrNumber2'. mod7.js(5,7): error TS1110: Type expected. @@ -15,23 +18,27 @@ -==== mod1.js (0 errors) ==== -+==== mod1.js (3 errors) ==== ++==== mod1.js (4 errors) ==== /** * @typedef {function(string): boolean} + ~~~~~~~~ +!!! error TS2552: Cannot find name 'function'. Did you mean 'Function'? +!!! related TS2728 lib.es5.d.ts:--:--: 'Function' is declared here. ++ ++!!! error TS2300: Duplicate identifier '(Missing)'. ++!!! related TS6203 mod3.js:4:22: '(Missing)' was also declared here. ++!!! related TS6203 mod4.js:4:22: '(Missing)' was also declared here. + ~ +!!! error TS1005: '}' expected. * Type1 */ -@@= skipped -11, +25 lines =@@ +@@= skipped -11, +32 lines =@@ * Tries to use a type whose name is on a different * line than the typedef tag. * @param {Type1} func The function to call. + ~~~~~ -+!!! error TS2304: Cannot find name 'Type1'. ++!!! error TS2552: Cannot find name 'Type1'. Did you mean 'Type2'? * @param {string} arg The argument to call it with. * @returns {boolean} The return. */ @@ -40,7 +47,7 @@ } -==== mod3.js (0 errors) ==== -+==== mod3.js (3 errors) ==== ++==== mod3.js (4 errors) ==== /** * A function whose signature is very long. * @@ -48,6 +55,9 @@ + ~~~~~~~~ +!!! error TS2552: Cannot find name 'function'. Did you mean 'Function'? +!!! related TS2728 lib.es5.d.ts:--:--: 'Function' is declared here. ++ ++!!! error TS2300: Duplicate identifier '(Missing)'. ++!!! related TS6203 mod1.js:2:22: '(Missing)' was also declared here. + ~ +!!! error TS1005: '}' expected. * (string|number)} StringOrNumber1 @@ -61,12 +71,12 @@ * @param {boolean} bool The condition. * @param {string} str The string. * @param {number} num The number. -@@= skipped -20, +27 lines =@@ +@@= skipped -20, +30 lines =@@ return func(bool, str, num) } -==== mod4.js (0 errors) ==== -+==== mod4.js (3 errors) ==== ++==== mod4.js (4 errors) ==== /** * A function whose signature is very long. * @@ -74,12 +84,15 @@ + ~~~~~~~~ +!!! error TS2552: Cannot find name 'function'. Did you mean 'Function'? +!!! related TS2728 lib.es5.d.ts:--:--: 'Function' is declared here. ++ ++!!! error TS2300: Duplicate identifier '(Missing)'. ++!!! related TS6203 mod1.js:2:22: '(Missing)' was also declared here. + ~ +!!! error TS1005: '}' expected. * number): * (string|number)} StringOrNumber2 */ -@@= skipped -12, +17 lines =@@ +@@= skipped -12, +20 lines =@@ /** * Makes use of a function type with a long signature. * @param {StringOrNumber2} func The function. diff --git a/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js b/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js index 687612fe0b..ecb6d688aa 100644 --- a/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js +++ b/testdata/baselines/reference/tsbuild/javascriptProjectEmit/loads-js-based-projects-and-emits-them-correctly.js @@ -137,13 +137,6 @@ declare const _default: {}; export = _default; //// [/home/src/workspaces/lib/common/nominal.js] *new* -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @template T, Name - * @typedef {T & {[Symbol.species]: Name}} Nominal - */ -export = {}; /** * @template T, Name * @typedef {T & {[Symbol.species]: Name}} Nominal