From 67ba9e5ec4cd3e04e7aaaf7a6238871edc098b22 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 12 Oct 2026 06:12:42 +0000 Subject: [PATCH 1/5] Support default star exports and defer ambiguity errors to access sites Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@users.noreply.github.com> --- tsc/internal/ast/checkflags.go | 1 + tsc/internal/checker/checker.go | 104 +++++++++--------- tsc/internal/printer/helpers.go | 2 +- .../moduletransforms/externalmoduleinfo.go | 7 ++ .../tests/cases/compiler/exportStarDefault.ts | 72 ++++++++++++ .../cases/compiler/exportStarDefaultTypes.ts | 35 ++++++ 6 files changed, 168 insertions(+), 53 deletions(-) create mode 100644 tsc/testdata/tests/cases/compiler/exportStarDefault.ts create mode 100644 tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts diff --git a/tsc/internal/ast/checkflags.go b/tsc/internal/ast/checkflags.go index 7800a585d6355..63460eab113c8 100644 --- a/tsc/internal/ast/checkflags.go +++ b/tsc/internal/ast/checkflags.go @@ -33,6 +33,7 @@ const ( CheckFlagsIsDiscriminantComputed CheckFlags = 1 << 24 // IsDiscriminant flags has been computed CheckFlagsIsDiscriminant CheckFlags = 1 << 25 // Discriminant property CheckFlagsIndexSymbol CheckFlags = 1 << 26 // Synthetic property created from index signature + CheckFlagsExportConflict CheckFlags = 1 << 27 // Ambiguous export from multiple export * declarations CheckFlagsSynthetic = CheckFlagsSyntheticProperty | CheckFlagsSyntheticMethod CheckFlagsNonUniformAndLiteral = CheckFlagsHasNonUniformType | CheckFlagsHasLiteralType CheckFlagsPartial = CheckFlagsReadPartial | CheckFlagsWritePartial diff --git a/tsc/internal/checker/checker.go b/tsc/internal/checker/checker.go index 345ea00ce1437..96351c5031487 100644 --- a/tsc/internal/checker/checker.go +++ b/tsc/internal/checker/checker.go @@ -11559,6 +11559,10 @@ func (c *Checker) checkPropertyAccessExpressionOrQualifiedName(node *ast.Node, l } prop = c.getPropertyOfTypeEx(apparentType, right.Text(), isConstEnumObjectType(apparentType) /*skipObjectFunctionPropertyAugment*/, node.Kind == ast.KindQualifiedName /*includeTypeOnlyMembers*/) } + if c.checkExportConflict(prop, right) { + c.symbolNodeLinks.Get(node).resolvedSymbol = prop + return c.errorType + } c.markLinkedReferences(node, ReferenceHintProperty, prop, leftType) var propType *Type if prop == nil { @@ -14890,23 +14894,7 @@ func (c *Checker) reportNonDefaultExport(moduleSymbol *ast.Symbol, node *ast.Nod if moduleSymbol.Exports() != nil && moduleSymbol.Exports()[node.Symbol().Name()] != nil { c.error(node, diagnostics.Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead, c.symbolToString(moduleSymbol), c.symbolToString(node.Symbol())) } else { - diagnostic := c.error(node.Name(), diagnostics.Module_0_has_no_default_export, c.symbolToString(moduleSymbol)) - var exportStar *ast.Symbol - if moduleSymbol.Exports() != nil { - exportStar = moduleSymbol.Exports()[ast.InternalSymbolNameExportStar] - } - if exportStar != nil { - defaultExport := core.Find(exportStar.Declarations(), func(decl *ast.Declaration) bool { - if !(ast.IsExportDeclaration(decl) && decl.ModuleSpecifier() != nil) { - return false - } - resolvedExternalModuleName := c.resolveExternalModuleName(decl, decl.ModuleSpecifier(), false /*ignoreErrors*/, c.getTypeFromImportAttributes(ast.GetImportAttributes(decl))) - return resolvedExternalModuleName != nil && resolvedExternalModuleName.Exports()[ast.InternalSymbolNameDefault] != nil - }) - if defaultExport != nil { - diagnostic.AddRelatedInfo(createDiagnosticForNode(defaultExport, diagnostics.X_export_Asterisk_does_not_re_export_a_default)) - } - } + c.error(node.Name(), diagnostics.Module_0_has_no_default_export, c.symbolToString(moduleSymbol)) } } @@ -14916,10 +14904,15 @@ func (c *Checker) resolveExportByName(moduleSymbol *ast.Symbol, name string, sou if exportValue != nil { exportSymbol = c.getPropertyOfTypeEx(c.getTypeOfSymbol(exportValue), name, true /*skipObjectFunctionPropertyAugment*/, false /*includeTypeOnlyMembers*/) } else { - exportSymbol = moduleSymbol.Exports()[name] + exportSymbol = c.getExportsOfModule(moduleSymbol)[name] } resolved := c.resolveSymbolEx(exportSymbol, dontResolveAlias) - c.markSymbolOfAliasDeclarationIfTypeOnly(sourceNode, nil) + errorNode := sourceNode.Name() + if ast.IsImportOrExportSpecifier(sourceNode) { + errorNode = sourceNode.PropertyNameOrName() + } + c.checkExportConflict(c.resolveSymbol(exportSymbol), errorNode) + c.markSymbolOfAliasDeclarationIfTypeOnly(sourceNode, c.moduleSymbolLinks.Get(moduleSymbol).typeOnlyExportStarMap[name]) return resolved } @@ -15093,6 +15086,11 @@ func (c *Checker) getExportOfModule(symbol *ast.Symbol, nameText string, specifi if symbol.Flags()&ast.SymbolFlagsModule != 0 { exportSymbol := c.getExportsOfSymbol(symbol)[nameText] resolved := c.resolveSymbolEx(exportSymbol, dontResolveAlias) + errorNode := specifier + if ast.IsImportOrExportSpecifier(specifier) || ast.IsBindingElement(specifier) { + errorNode = specifier.PropertyNameOrName() + } + c.checkExportConflict(c.resolveSymbol(exportSymbol), errorNode) exportStarDeclaration := c.moduleSymbolLinks.Get(symbol).typeOnlyExportStarMap[nameText] c.markSymbolOfAliasDeclarationIfTypeOnly(specifier, exportStarDeclaration) return resolved @@ -15100,6 +15098,16 @@ func (c *Checker) getExportOfModule(symbol *ast.Symbol, nameText string, specifi return nil } +func (c *Checker) checkExportConflict(symbol *ast.Symbol, node *ast.Node) bool { + if symbol == nil || symbol.CheckFlags()&ast.CheckFlagsExportConflict == 0 { + return false + } + if node != nil { + c.error(node, diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, c.symbolToString(symbol.Parent()), symbol.Name()) + } + return true +} + func (c *Checker) isOnlyImportableAsDefault(usage *ast.Node, resolvedModule *ast.Symbol, importAttributesType *Type) bool { // In Node.js, JSON modules don't get named exports if core.ModuleKindNode16 <= c.moduleKind && c.moduleKind <= core.ModuleKindNodeNext { @@ -16249,6 +16257,9 @@ func (c *Checker) resolveQualifiedName(name *ast.Node, left *ast.Node, right *as // `namespace` can be resolved further if there was a symbol merge with a re-export symbol = c.getMergedSymbol(c.getSymbol(c.getExportsOfSymbol(c.resolveAlias(namespace)), text, meaning)) } + if !ignoreErrors { + c.checkExportConflict(c.resolveSymbol(symbol), right) + } if symbol == nil { if !ignoreErrors { namespaceName := c.getFullyQualifiedName(namespace, nil /*containingLocation*/) @@ -16533,13 +16544,6 @@ func (c *Checker) getExportsOfModule(moduleSymbol *ast.Symbol) ast.SymbolTable { return links.resolvedExports } -type ExportCollision struct { - specifierText string - exportsWithDuplicate []*ast.Node -} - -type ExportCollisionTable = map[string]*ExportCollision - func (c *Checker) getExportsOfModuleWorker(moduleSymbol *ast.Symbol) (exports ast.SymbolTable, typeOnlyExportStarMap map[string]*ast.Node) { var visitedSymbols []*ast.Symbol nonTypeOnlyNames := collections.NewSetWithSizeHint[string](len(moduleSymbol.Exports())) @@ -16564,22 +16568,12 @@ func (c *Checker) getExportsOfModuleWorker(moduleSymbol *ast.Symbol) (exports as exportStars := symbol.Exports()[ast.InternalSymbolNameExportStar] if exportStars != nil { nestedSymbols := make(ast.SymbolTable) - lookupTable := make(ExportCollisionTable) for _, node := range exportStars.Declarations() { resolvedModule := c.resolveExternalModuleName(node, node.ModuleSpecifier(), false /*ignoreErrors*/, c.getTypeFromImportAttributes(ast.GetImportAttributes(node))) exportedSymbols := visit(resolvedModule, node, isTypeOnly || node.IsTypeOnly()) - c.extendExportSymbols(nestedSymbols, exportedSymbols, lookupTable, node) + c.extendExportSymbols(nestedSymbols, exportedSymbols, symbol) } - for id, s := range lookupTable { - // It's not an error if the file with multiple `export *`s with duplicate names exports a member with that name itself - if id == ast.InternalSymbolNameExportEquals || len(s.exportsWithDuplicate) == 0 || symbols[id] != nil { - continue - } - for _, node := range s.exportsWithDuplicate { - c.addDiagnostic(createDiagnosticForNode(node, diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, s.specifierText, id)) - } - } - c.extendExportSymbols(symbols, nestedSymbols, nil, nil) + c.extendExportSymbols(symbols, nestedSymbols, nil) } if exportStar != nil && exportStar.IsTypeOnly() { if typeOnlyExportStarMap == nil { @@ -16623,26 +16617,20 @@ func (c *Checker) getExportsOfModuleWorker(moduleSymbol *ast.Symbol) (exports as return exports, typeOnlyExportStarMap } -/** - * Extends one symbol table with another while collecting information on name collisions for error message generation into the `lookupTable` argument - * Not passing `lookupTable` and `exportNode` disables this collection, and just extends the tables - */ -func (c *Checker) extendExportSymbols(target ast.SymbolTable, source ast.SymbolTable, lookupTable ExportCollisionTable, exportNode *ast.Node) { +// A non-nil moduleSymbol collects conflicting star exports. Explicit exports are +// merged afterward without conflicts, so they take precedence over star exports. +func (c *Checker) extendExportSymbols(target ast.SymbolTable, source ast.SymbolTable, moduleSymbol *ast.Symbol) { for id, sourceSymbol := range source { - if id == ast.InternalSymbolNameDefault { + if id == ast.InternalSymbolNameExportStar || id == ast.InternalSymbolNameExportEquals { continue } targetSymbol := target[id] if targetSymbol == nil { target[id] = sourceSymbol - if lookupTable != nil && exportNode != nil { - lookupTable[id] = &ExportCollision{ - specifierText: scanner.GetTextOfNode(exportNode.ModuleSpecifier()), - } - } - } else if lookupTable != nil && exportNode != nil && c.resolveSymbol(targetSymbol) != c.resolveSymbol(sourceSymbol) { - s := lookupTable[id] - s.exportsWithDuplicate = append(s.exportsWithDuplicate, exportNode) + } else if moduleSymbol != nil && targetSymbol.CheckFlags()&ast.CheckFlagsExportConflict == 0 && c.resolveSymbol(targetSymbol) != c.resolveSymbol(sourceSymbol) { + conflict := c.newSymbolEx(ast.SymbolFlagsProperty|ast.SymbolFlagsTypeAlias|ast.SymbolFlagsNamespaceModule, id, ast.CheckFlagsExportConflict) + conflict.SetParent(moduleSymbol) + target[id] = conflict } } } @@ -16886,6 +16874,9 @@ func (c *Checker) GetTypeOfSymbolAtLocation(symbol *ast.Symbol, location *ast.No } func (c *Checker) getTypeOfSymbol(symbol *ast.Symbol) *Type { + if symbol.CheckFlags()&ast.CheckFlagsExportConflict != 0 { + return c.errorType + } if symbol.CheckFlags()&ast.CheckFlagsDeferredType != 0 { return c.getTypeOfSymbolWithDeferredType(symbol) } @@ -24206,6 +24197,8 @@ func (c *Checker) getDeclaredTypeOfSymbol(symbol *ast.Symbol) *Type { func (c *Checker) tryGetDeclaredTypeOfSymbol(symbol *ast.Symbol) *Type { switch { + case symbol.CheckFlags()&ast.CheckFlagsExportConflict != 0: + return c.errorType case symbol.Flags()&(ast.SymbolFlagsClass|ast.SymbolFlagsInterface) != 0: return c.getDeclaredTypeOfClassOrInterface(symbol) case symbol.Flags()&ast.SymbolFlagsTypeParameter != 0: @@ -27558,6 +27551,13 @@ func (c *Checker) getPropertyTypeForIndexType(originalObjectType *Type, objectTy } prop := c.getPropertyOfType(objectType, propName) if prop != nil { + var errorNode *ast.Node + if accessNode != nil { + errorNode = getIndexNodeForAccessExpression(accessNode) + } + if c.checkExportConflict(prop, errorNode) { + return c.errorType + } if accessFlags&AccessFlagsReportDeprecated != 0 && accessNode != nil && len(prop.Declarations()) != 0 && c.isDeprecatedSymbol(prop) && c.isUncalledFunctionReference(accessNode, prop) { var deprecatedNode *ast.Node if accessExpression != nil { diff --git a/tsc/internal/printer/helpers.go b/tsc/internal/printer/helpers.go index 0c412f8dd86dd..7d9b2f065e870 100644 --- a/tsc/internal/printer/helpers.go +++ b/tsc/internal/printer/helpers.go @@ -539,7 +539,7 @@ var exportStarHelper = &EmitHelper{ Dependencies: []*EmitHelper{createBindingHelper}, Priority: &Priority{2}, Text: `var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); };`, } diff --git a/tsc/internal/transformers/moduletransforms/externalmoduleinfo.go b/tsc/internal/transformers/moduletransforms/externalmoduleinfo.go index baf2f040613d3..c3f97cb894899 100644 --- a/tsc/internal/transformers/moduletransforms/externalmoduleinfo.go +++ b/tsc/internal/transformers/moduletransforms/externalmoduleinfo.go @@ -46,6 +46,7 @@ func collectExternalModuleInfo(sourceFile *ast.SourceFile, compilerOptions *core func (c *externalModuleInfoCollector) collect() *externalModuleInfo { hasImportStar := false hasImportDefault := false + hasDefaultToInitialize := false for _, node := range c.sourceFile.Statements.Nodes { // Look through NotEmittedStatement to find elided export= declarations // (e.g., `declare export = x` is elided by the type eraser but must still be collected) @@ -118,6 +119,8 @@ func (c *externalModuleInfoCollector) collect() *externalModuleInfo { if n.IsExportEquals && c.output.exportEquals == nil { // export = x c.output.exportEquals = n + } else if !n.IsExportEquals { + hasDefaultToInitialize = true } case ast.KindVariableStatement: @@ -138,6 +141,7 @@ func (c *externalModuleInfoCollector) collect() *externalModuleInfo { n := node.AsClassDeclaration() if ast.HasSyntacticModifier(node, ast.ModifierFlagsExport) { if ast.HasSyntacticModifier(node, ast.ModifierFlagsDefault) { + hasDefaultToInitialize = true // export default class { } if !c.hasExportDefault { name := n.Name() @@ -160,6 +164,9 @@ func (c *externalModuleInfoCollector) collect() *externalModuleInfo { } } } + if hasDefaultToInitialize && c.output.hasExportStarsToExportValues && c.addUniqueExport("default") { + c.addExportedName(c.emitContext.Factory.NewIdentifier("default")) + } return c.output } diff --git a/tsc/testdata/tests/cases/compiler/exportStarDefault.ts b/tsc/testdata/tests/cases/compiler/exportStarDefault.ts new file mode 100644 index 0000000000000..7b39ec9983a4a --- /dev/null +++ b/tsc/testdata/tests/cases/compiler/exportStarDefault.ts @@ -0,0 +1,72 @@ +// @target: esnext +// @module: esnext, commonjs +// @strict: true +// @declaration: true + +// @filename: first.ts +export default class First { first = 1; } +export const shared = 1; +export const unique = "first"; + +// @filename: second.ts +export default class Second { second = 2; } +export const shared = 2; + +// @filename: single.ts +export * from "./first"; + +// @filename: diamond.ts +export * from "./first"; +export * from "./single"; + +// @filename: ambiguous.ts +export * from "./first"; +export * from "./second"; + +// @filename: forwarded.ts +export * from "./ambiguous"; + +// @filename: resolved.ts +export * from "./ambiguous"; +export { default, shared } from "./first"; + +// @filename: local.ts +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; + +// @filename: consumer.ts +import First from "./single"; +import { default as Diamond, shared as diamondShared } from "./diamond"; +import Resolved, { shared as resolvedShared } from "./resolved"; +import Local, { shared as localShared } from "./local"; +import * as single from "./single"; +import * as ambiguous from "./ambiguous"; +import * as forwarded from "./forwarded"; +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +export { default, shared as conflict } from "./forwarded"; + +new First().first; +new Diamond().first; +new Resolved().first; +new single.default().first; +new single["default"]().first; +const one: 1 = diamondShared; +const anotherOne: 1 = resolvedShared; +const text: string = Local; +const flag: boolean = localShared; +const nonconflicting: string = unique; + +ambiguous.default; +ambiguous["default"]; +ambiguous.shared; +ambiguous["shared"]; +forwarded.default; +forwarded["shared"]; +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +ambiguous["shared"].nonexistent(); +Conflict.nonexistent(); +NamedConflict.nonexistent(); +shared.nonexistent(); diff --git a/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts b/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts new file mode 100644 index 0000000000000..81a65927268ea --- /dev/null +++ b/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts @@ -0,0 +1,35 @@ +// @target: esnext +// @module: esnext +// @strict: true +// @noEmit: true + +// @filename: first.ts +export default interface First { first: number; } +export interface Shared { first: number; } + +// @filename: second.ts +export default interface Second { second: number; } +export interface Shared { second: number; } + +// @filename: single.ts +export type * from "./first"; + +// @filename: ambiguous.ts +export type * from "./first"; +export type * from "./second"; + +// @filename: resolved.ts +export type * from "./ambiguous"; +export type { default, Shared } from "./first"; + +// @filename: consumer.ts +import type First from "./single"; +import type Resolved from "./resolved"; +import type Conflict, { Shared } from "./ambiguous"; +import type * as ns from "./ambiguous"; +export type { default, Shared } from "./ambiguous"; +const first: First = { first: 1 }; +const resolved: Resolved = first; +const conflict: Conflict = {}; +const shared: Shared = {}; +const qualified: ns.Shared = {}; From a6131031bb91945ebe9cb88419039eb9860d2a57 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 12 Oct 2026 06:21:36 +0000 Subject: [PATCH 2/5] Handle synthetic-default probes and transitive conflict access safely Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@users.noreply.github.com> --- tsc/internal/checker/checker.go | 17 ++++++++---- .../tests/cases/compiler/exportStarDefault.ts | 26 +++++++++++++++++++ .../cases/compiler/exportStarDefaultTypes.ts | 1 + 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/tsc/internal/checker/checker.go b/tsc/internal/checker/checker.go index 96351c5031487..bcc27ef0db954 100644 --- a/tsc/internal/checker/checker.go +++ b/tsc/internal/checker/checker.go @@ -14907,9 +14907,12 @@ func (c *Checker) resolveExportByName(moduleSymbol *ast.Symbol, name string, sou exportSymbol = c.getExportsOfModule(moduleSymbol)[name] } resolved := c.resolveSymbolEx(exportSymbol, dontResolveAlias) - errorNode := sourceNode.Name() - if ast.IsImportOrExportSpecifier(sourceNode) { - errorNode = sourceNode.PropertyNameOrName() + var errorNode *ast.Node + if sourceNode != nil { + errorNode = sourceNode.Name() + if ast.IsImportOrExportSpecifier(sourceNode) { + errorNode = sourceNode.PropertyNameOrName() + } } c.checkExportConflict(c.resolveSymbol(exportSymbol), errorNode) c.markSymbolOfAliasDeclarationIfTypeOnly(sourceNode, c.moduleSymbolLinks.Get(moduleSymbol).typeOnlyExportStarMap[name]) @@ -15099,6 +15102,7 @@ func (c *Checker) getExportOfModule(symbol *ast.Symbol, nameText string, specifi } func (c *Checker) checkExportConflict(symbol *ast.Symbol, node *ast.Node) bool { + symbol = c.resolveSymbol(symbol) if symbol == nil || symbol.CheckFlags()&ast.CheckFlagsExportConflict == 0 { return false } @@ -16233,8 +16237,8 @@ func (c *Checker) resolveQualifiedName(name *ast.Node, left *ast.Node, right *as if namespace == nil || ast.NodeIsMissing(right) { return nil } - if namespace == c.unknownSymbol { - return namespace + if namespace == c.unknownSymbol || namespace.CheckFlags()&ast.CheckFlagsExportConflict != 0 { + return c.unknownSymbol } if namespace.ValueDeclaration() != nil && ast.IsInJSFile(namespace.ValueDeclaration()) && @@ -27556,6 +27560,9 @@ func (c *Checker) getPropertyTypeForIndexType(originalObjectType *Type, objectTy errorNode = getIndexNodeForAccessExpression(accessNode) } if c.checkExportConflict(prop, errorNode) { + if accessExpression != nil && accessFlags&AccessFlagsCacheSymbol != 0 { + c.symbolNodeLinks.Get(accessNode).resolvedSymbol = prop + } return c.errorType } if accessFlags&AccessFlagsReportDeprecated != 0 && accessNode != nil && len(prop.Declarations()) != 0 && c.isDeprecatedSymbol(prop) && c.isUncalledFunctionReference(accessNode, prop) { diff --git a/tsc/testdata/tests/cases/compiler/exportStarDefault.ts b/tsc/testdata/tests/cases/compiler/exportStarDefault.ts index 7b39ec9983a4a..08932b2cdd15c 100644 --- a/tsc/testdata/tests/cases/compiler/exportStarDefault.ts +++ b/tsc/testdata/tests/cases/compiler/exportStarDefault.ts @@ -36,14 +36,36 @@ export * from "./second"; export default "local"; export const shared = true; +// @filename: localClass.ts +export * from "./first"; +export default class LocalClass { local = true; } + +// @filename: localFunction.ts +export * from "./first"; +export default function localFunction() { return true; } + +// @filename: cycleA.ts +export * from "./cycleB"; + +// @filename: cycleB.ts +export * from "./cycleA"; +export * from "./first"; + +// @filename: namedConflict.ts +export { shared } from "./ambiguous"; + // @filename: consumer.ts import First from "./single"; import { default as Diamond, shared as diamondShared } from "./diamond"; import Resolved, { shared as resolvedShared } from "./resolved"; import Local, { shared as localShared } from "./local"; +import LocalClass from "./localClass"; +import localFunction from "./localFunction"; +import Cycle from "./cycleA"; import * as single from "./single"; import * as ambiguous from "./ambiguous"; import * as forwarded from "./forwarded"; +import * as namedConflict from "./namedConflict"; import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; export { default, shared as conflict } from "./forwarded"; @@ -52,6 +74,9 @@ new Diamond().first; new Resolved().first; new single.default().first; new single["default"]().first; +new LocalClass().local; +const localResult: boolean = localFunction(); +new Cycle().first; const one: 1 = diamondShared; const anotherOne: 1 = resolvedShared; const text: string = Local; @@ -64,6 +89,7 @@ ambiguous.shared; ambiguous["shared"]; forwarded.default; forwarded["shared"]; +namedConflict.shared; // Conflicting accesses have the error type, without cascading errors. ambiguous.default.nonexistent(); ambiguous["shared"].nonexistent(); diff --git a/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts b/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts index 81a65927268ea..1fbaf4c18160a 100644 --- a/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts +++ b/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts @@ -33,3 +33,4 @@ const resolved: Resolved = first; const conflict: Conflict = {}; const shared: Shared = {}; const qualified: ns.Shared = {}; +const nested: ns.Shared.Nested = {}; From c1cb2d2c2b523f1f91cc533cc7342dd7714422a0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 12 Oct 2026 06:31:57 +0000 Subject: [PATCH 3/5] Preserve error types for conflicting declaration-file default exports Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@users.noreply.github.com> --- tsc/internal/checker/checker.go | 2 +- .../tests/cases/compiler/exportStarDefault.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/tsc/internal/checker/checker.go b/tsc/internal/checker/checker.go index bcc27ef0db954..c5cac50c5c3d1 100644 --- a/tsc/internal/checker/checker.go +++ b/tsc/internal/checker/checker.go @@ -15165,7 +15165,7 @@ func (c *Checker) canHaveSyntheticDefault(file *ast.Node, moduleSymbol *ast.Symb if file == nil || file.AsSourceFile().IsDeclarationFile { // Definitely cannot have a synthetic default if they have a syntactic default member specified defaultExportSymbol := c.resolveExportByName(moduleSymbol, ast.InternalSymbolNameDefault /*sourceNode*/, nil /*dontResolveAlias*/, true) // Dont resolve alias because we want the immediately exported symbol's declaration - if defaultExportSymbol != nil && core.Some(defaultExportSymbol.Declarations(), isSyntacticDefault) { + if defaultExportSymbol != nil && (c.resolveSymbol(defaultExportSymbol).CheckFlags()&ast.CheckFlagsExportConflict != 0 || core.Some(defaultExportSymbol.Declarations(), isSyntacticDefault)) { return false } // It _might_ still be incorrect to assume there is no __esModule marker on the import at runtime, even if there is no `default` member diff --git a/tsc/testdata/tests/cases/compiler/exportStarDefault.ts b/tsc/testdata/tests/cases/compiler/exportStarDefault.ts index 08932b2cdd15c..8bc4280dbd7e2 100644 --- a/tsc/testdata/tests/cases/compiler/exportStarDefault.ts +++ b/tsc/testdata/tests/cases/compiler/exportStarDefault.ts @@ -54,6 +54,16 @@ export * from "./first"; // @filename: namedConflict.ts export { shared } from "./ambiguous"; +// @filename: firstDeclaration.d.ts +export default class FirstDeclaration { first: number; } + +// @filename: secondDeclaration.d.ts +export default class SecondDeclaration { second: number; } + +// @filename: ambiguousDeclaration.d.ts +export * from "./firstDeclaration"; +export * from "./secondDeclaration"; + // @filename: consumer.ts import First from "./single"; import { default as Diamond, shared as diamondShared } from "./diamond"; @@ -67,6 +77,7 @@ import * as ambiguous from "./ambiguous"; import * as forwarded from "./forwarded"; import * as namedConflict from "./namedConflict"; import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +import DeclarationConflict from "./ambiguousDeclaration"; export { default, shared as conflict } from "./forwarded"; new First().first; @@ -96,3 +107,4 @@ ambiguous["shared"].nonexistent(); Conflict.nonexistent(); NamedConflict.nonexistent(); shared.nonexistent(); +DeclarationConflict.nonexistent(); From c398d1f8d7ff8d6867bb869d255d29903cbd876d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 12 Oct 2026 06:36:25 +0000 Subject: [PATCH 4/5] Update compiler baselines for default star exports and access-time conflicts Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@users.noreply.github.com> --- .../assertionFunctionWildcardImport1.js | 2 +- .../declarationEmitAliasExportStar.js | 2 +- ...nedNamespaceNoTripleSlashTypesReference.js | 2 +- ...clarationEmitReexportedSymlinkReference.js | 2 +- ...larationEmitReexportedSymlinkReference2.js | 2 +- ...larationEmitReexportedSymlinkReference3.js | 2 +- ...bleUnderscoreExportStarConflict.errors.txt | 15 - .../doubleUnderscoreExportStarConflict.js | 2 +- .../es6ExportAllInEs5(target=es2015).js | 2 +- .../compiler/es6ExportEqualsInterop.js | 2 +- ...uleInteropWithExportStar(target=es2015).js | 2 +- ...ortStarDefault(module=commonjs).errors.txt | 156 ++++++ .../exportStarDefault(module=commonjs).js | 467 ++++++++++++++++++ ...exportStarDefault(module=commonjs).symbols | 263 ++++++++++ .../exportStarDefault(module=commonjs).types | 302 +++++++++++ ...xportStarDefault(module=esnext).errors.txt | 156 ++++++ .../exportStarDefault(module=esnext).js | 244 +++++++++ .../exportStarDefault(module=esnext).symbols | 263 ++++++++++ .../exportStarDefault(module=esnext).types | 302 +++++++++++ .../exportStarDefaultTypes.errors.txt | 53 ++ .../compiler/exportStarDefaultTypes.symbols | 84 ++++ .../compiler/exportStarDefaultTypes.types | 80 +++ .../reference/compiler/exportStarForValues.js | 2 +- .../compiler/exportStarForValues2.js | 4 +- .../compiler/exportStarForValues3.js | 8 +- .../compiler/exportStarForValues4.js | 4 +- .../compiler/exportStarForValues5.js | 2 +- .../compiler/exportStarForValues7.js | 4 +- .../compiler/exportStarForValues8.js | 8 +- .../compiler/exportStarForValues9.js | 4 +- ...xportStarFromEmptyModule(target=es2015).js | 2 +- .../reference/compiler/exportStarNotElided.js | 2 +- .../mergeMultipleInterfacesReexported.js | 2 +- ...ugmentationDoesInterfaceMergeOfReexport.js | 2 +- ...ntationDoesNamespaceEnumMergeOfReexport.js | 2 +- ...ugmentationDoesNamespaceMergeOfReexport.js | 2 +- ...entationEnumClassMergeOfReexportIsError.js | 2 +- ...tionExportStarShadowingGlobalIsNameable.js | 2 +- ...duleSameValueDuplicateExportedBindings1.js | 4 +- ...duleSameValueDuplicateExportedBindings2.js | 2 +- .../symbolLinkDeclarationEmitModuleNames.js | 2 +- .../conformance/ambientShorthand_reExport.js | 2 +- .../reference/conformance/exportNamespace1.js | 2 +- .../reference/conformance/exportNamespace5.js | 2 +- .../reference/conformance/exportNamespace6.js | 2 +- .../conformance/exportNamespace8.errors.txt | 10 +- .../reference/conformance/exportNamespace8.js | 2 +- .../conformance/exportNamespace8.types | 8 +- .../conformance/exportNamespace9.errors.txt | 11 +- .../reference/conformance/exportNamespace9.js | 2 +- .../conformance/exportNamespace9.symbols | 2 +- .../conformance/exportNamespace9.types | 6 +- .../exportStar(target=es2015).errors.txt | 20 +- .../conformance/exportStar(target=es2015).js | 2 +- .../exportStar(target=es2015).types | 12 +- .../importAssertion2(module=commonjs).js | 2 +- .../importAttributes2(module=commonjs).js | 2 +- .../inlineJsxFactoryDeclarations.js | 2 +- ...sDeclarationsExportForms(target=es2015).js | 4 +- ...clarationsExportFormsErr(target=es2015).js | 2 +- ...ibling-package-through-indirect-symlink.js | 2 +- .../cases/compiler/exportStarDefaultTypes.ts | 3 +- 62 files changed, 2457 insertions(+), 108 deletions(-) delete mode 100644 tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.errors.txt create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).errors.txt create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).js create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).symbols create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).types create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).errors.txt create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).js create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).symbols create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).types create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.errors.txt create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.symbols create mode 100644 tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.types diff --git a/tsc/testdata/baselines/reference/compiler/assertionFunctionWildcardImport1.js b/tsc/testdata/baselines/reference/compiler/assertionFunctionWildcardImport1.js index 11f0c6c93f61f..627cac3d5121e 100644 --- a/tsc/testdata/baselines/reference/compiler/assertionFunctionWildcardImport1.js +++ b/tsc/testdata/baselines/reference/compiler/assertionFunctionWildcardImport1.js @@ -124,7 +124,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("../../core/_namespaces/ts"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/declarationEmitAliasExportStar.js b/tsc/testdata/baselines/reference/compiler/declarationEmitAliasExportStar.js index 7215f2f291fa6..6d0b4385cff0f 100644 --- a/tsc/testdata/baselines/reference/compiler/declarationEmitAliasExportStar.js +++ b/tsc/testdata/baselines/reference/compiler/declarationEmitAliasExportStar.js @@ -26,7 +26,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./thingB"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js b/tsc/testdata/baselines/reference/compiler/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js index 2d15052e32dba..0c748689f2256 100644 --- a/tsc/testdata/baselines/reference/compiler/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js +++ b/tsc/testdata/baselines/reference/compiler/declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.js @@ -68,7 +68,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("@emotion/core"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference.js b/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference.js index 8ac5615ef5ca5..e95e2ba73bc20 100644 --- a/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference.js +++ b/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference.js @@ -63,7 +63,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./keys"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference2.js b/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference2.js index 39c84dd98a5cc..bc95fab1565a7 100644 --- a/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference2.js +++ b/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference2.js @@ -66,7 +66,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./keys"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference3.js b/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference3.js index 3107740ce24c8..bb46b75f14a01 100644 --- a/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference3.js +++ b/tsc/testdata/baselines/reference/compiler/declarationEmitReexportedSymlinkReference3.js @@ -63,7 +63,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./keys"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.errors.txt b/tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.errors.txt deleted file mode 100644 index 8f5b57d910c94..0000000000000 --- a/tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.errors.txt +++ /dev/null @@ -1,15 +0,0 @@ -index.tsx(2,1): error TS2308: Module "./b" has already exported a member named '__foo'. Consider explicitly re-exporting to resolve the ambiguity. - - -==== index.tsx (1 errors) ==== - export * from "./b"; - export * from "./c"; - ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: Module "./b" has already exported a member named '__foo'. Consider explicitly re-exporting to resolve the ambiguity. - -==== b.ts (0 errors) ==== - export function __foo(): number | void {} - -==== c.ts (0 errors) ==== - export function __foo(): string | void {} - \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.js b/tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.js index 23e8d188bdc14..1a9ce6625d3c5 100644 --- a/tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.js +++ b/tsc/testdata/baselines/reference/compiler/doubleUnderscoreExportStarConflict.js @@ -35,7 +35,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./b"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/es6ExportAllInEs5(target=es2015).js b/tsc/testdata/baselines/reference/compiler/es6ExportAllInEs5(target=es2015).js index e04d79ecbc09b..c304301e22a3e 100644 --- a/tsc/testdata/baselines/reference/compiler/es6ExportAllInEs5(target=es2015).js +++ b/tsc/testdata/baselines/reference/compiler/es6ExportAllInEs5(target=es2015).js @@ -41,7 +41,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./server"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/es6ExportEqualsInterop.js b/tsc/testdata/baselines/reference/compiler/es6ExportEqualsInterop.js index e1bc8f717a01b..0d63fee7df1ed 100644 --- a/tsc/testdata/baselines/reference/compiler/es6ExportEqualsInterop.js +++ b/tsc/testdata/baselines/reference/compiler/es6ExportEqualsInterop.js @@ -243,7 +243,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.a0 = exports.a9 = exports.a8 = exports.a7 = exports.a6 = exports.a5 = exports.a4 = exports.a3 = exports.a2 = exports.a1 = void 0; diff --git a/tsc/testdata/baselines/reference/compiler/esModuleInteropWithExportStar(target=es2015).js b/tsc/testdata/baselines/reference/compiler/esModuleInteropWithExportStar(target=es2015).js index 19c10e937b370..115cd88e303d7 100644 --- a/tsc/testdata/baselines/reference/compiler/esModuleInteropWithExportStar(target=es2015).js +++ b/tsc/testdata/baselines/reference/compiler/esModuleInteropWithExportStar(target=es2015).js @@ -48,7 +48,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.y = exports.x = void 0; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).errors.txt b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).errors.txt new file mode 100644 index 0000000000000..42315017a2919 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).errors.txt @@ -0,0 +1,156 @@ +consumer.ts(12,8): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(12,20): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(12,46): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(13,8): error TS2308: Module "ambiguousDeclaration" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(14,10): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(14,19): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(30,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(31,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(32,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(33,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(34,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(35,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(36,15): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(38,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(39,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +namedConflict.ts(1,10): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + + +==== first.ts (0 errors) ==== + export default class First { first = 1; } + export const shared = 1; + export const unique = "first"; + +==== second.ts (0 errors) ==== + export default class Second { second = 2; } + export const shared = 2; + +==== single.ts (0 errors) ==== + export * from "./first"; + +==== diamond.ts (0 errors) ==== + export * from "./first"; + export * from "./single"; + +==== ambiguous.ts (0 errors) ==== + export * from "./first"; + export * from "./second"; + +==== forwarded.ts (0 errors) ==== + export * from "./ambiguous"; + +==== resolved.ts (0 errors) ==== + export * from "./ambiguous"; + export { default, shared } from "./first"; + +==== local.ts (0 errors) ==== + export * from "./first"; + export * from "./second"; + export default "local"; + export const shared = true; + +==== localClass.ts (0 errors) ==== + export * from "./first"; + export default class LocalClass { local = true; } + +==== localFunction.ts (0 errors) ==== + export * from "./first"; + export default function localFunction() { return true; } + +==== cycleA.ts (0 errors) ==== + export * from "./cycleB"; + +==== cycleB.ts (0 errors) ==== + export * from "./cycleA"; + export * from "./first"; + +==== namedConflict.ts (1 errors) ==== + export { shared } from "./ambiguous"; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + +==== firstDeclaration.d.ts (0 errors) ==== + export default class FirstDeclaration { first: number; } + +==== secondDeclaration.d.ts (0 errors) ==== + export default class SecondDeclaration { second: number; } + +==== ambiguousDeclaration.d.ts (0 errors) ==== + export * from "./firstDeclaration"; + export * from "./secondDeclaration"; + +==== consumer.ts (15 errors) ==== + import First from "./single"; + import { default as Diamond, shared as diamondShared } from "./diamond"; + import Resolved, { shared as resolvedShared } from "./resolved"; + import Local, { shared as localShared } from "./local"; + import LocalClass from "./localClass"; + import localFunction from "./localFunction"; + import Cycle from "./cycleA"; + import * as single from "./single"; + import * as ambiguous from "./ambiguous"; + import * as forwarded from "./forwarded"; + import * as namedConflict from "./namedConflict"; + import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + import DeclarationConflict from "./ambiguousDeclaration"; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS2308: Module "ambiguousDeclaration" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + export { default, shared as conflict } from "./forwarded"; + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + + new First().first; + new Diamond().first; + new Resolved().first; + new single.default().first; + new single["default"]().first; + new LocalClass().local; + const localResult: boolean = localFunction(); + new Cycle().first; + const one: 1 = diamondShared; + const anotherOne: 1 = resolvedShared; + const text: string = Local; + const flag: boolean = localShared; + const nonconflicting: string = unique; + + ambiguous.default; + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous["default"]; + ~~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous.shared; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous["shared"]; + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + forwarded.default; + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + forwarded["shared"]; + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + namedConflict.shared; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + // Conflicting accesses have the error type, without cascading errors. + ambiguous.default.nonexistent(); + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous["shared"].nonexistent(); + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + Conflict.nonexistent(); + NamedConflict.nonexistent(); + shared.nonexistent(); + DeclarationConflict.nonexistent(); + \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).js b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).js new file mode 100644 index 0000000000000..840fc27fff3f5 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).js @@ -0,0 +1,467 @@ +//// [tests/cases/compiler/exportStarDefault.ts] //// + +//// [first.ts] +export default class First { first = 1; } +export const shared = 1; +export const unique = "first"; + +//// [second.ts] +export default class Second { second = 2; } +export const shared = 2; + +//// [single.ts] +export * from "./first"; + +//// [diamond.ts] +export * from "./first"; +export * from "./single"; + +//// [ambiguous.ts] +export * from "./first"; +export * from "./second"; + +//// [forwarded.ts] +export * from "./ambiguous"; + +//// [resolved.ts] +export * from "./ambiguous"; +export { default, shared } from "./first"; + +//// [local.ts] +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; + +//// [localClass.ts] +export * from "./first"; +export default class LocalClass { local = true; } + +//// [localFunction.ts] +export * from "./first"; +export default function localFunction() { return true; } + +//// [cycleA.ts] +export * from "./cycleB"; + +//// [cycleB.ts] +export * from "./cycleA"; +export * from "./first"; + +//// [namedConflict.ts] +export { shared } from "./ambiguous"; + +//// [firstDeclaration.d.ts] +export default class FirstDeclaration { first: number; } + +//// [secondDeclaration.d.ts] +export default class SecondDeclaration { second: number; } + +//// [ambiguousDeclaration.d.ts] +export * from "./firstDeclaration"; +export * from "./secondDeclaration"; + +//// [consumer.ts] +import First from "./single"; +import { default as Diamond, shared as diamondShared } from "./diamond"; +import Resolved, { shared as resolvedShared } from "./resolved"; +import Local, { shared as localShared } from "./local"; +import LocalClass from "./localClass"; +import localFunction from "./localFunction"; +import Cycle from "./cycleA"; +import * as single from "./single"; +import * as ambiguous from "./ambiguous"; +import * as forwarded from "./forwarded"; +import * as namedConflict from "./namedConflict"; +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +import DeclarationConflict from "./ambiguousDeclaration"; +export { default, shared as conflict } from "./forwarded"; + +new First().first; +new Diamond().first; +new Resolved().first; +new single.default().first; +new single["default"]().first; +new LocalClass().local; +const localResult: boolean = localFunction(); +new Cycle().first; +const one: 1 = diamondShared; +const anotherOne: 1 = resolvedShared; +const text: string = Local; +const flag: boolean = localShared; +const nonconflicting: string = unique; + +ambiguous.default; +ambiguous["default"]; +ambiguous.shared; +ambiguous["shared"]; +forwarded.default; +forwarded["shared"]; +namedConflict.shared; +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +ambiguous["shared"].nonexistent(); +Conflict.nonexistent(); +NamedConflict.nonexistent(); +shared.nonexistent(); +DeclarationConflict.nonexistent(); + + +//// [first.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.unique = exports.shared = void 0; +class First { + first = 1; +} +exports.default = First; +exports.shared = 1; +exports.unique = "first"; +//// [second.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.shared = void 0; +class Second { + second = 2; +} +exports.default = Second; +exports.shared = 2; +//// [single.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./first"), exports); +//// [diamond.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./first"), exports); +__exportStar(require("./single"), exports); +//// [ambiguous.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./first"), exports); +__exportStar(require("./second"), exports); +//// [forwarded.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./ambiguous"), exports); +//// [resolved.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.shared = exports.default = void 0; +__exportStar(require("./ambiguous"), exports); +var first_1 = require("./first"); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(first_1).default; } }); +Object.defineProperty(exports, "shared", { enumerable: true, get: function () { return first_1.shared; } }); +//// [local.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = exports.shared = void 0; +__exportStar(require("./first"), exports); +__exportStar(require("./second"), exports); +exports.default = "local"; +exports.shared = true; +//// [localClass.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = void 0; +__exportStar(require("./first"), exports); +class LocalClass { + local = true; +} +exports.default = LocalClass; +//// [localFunction.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = localFunction; +__exportStar(require("./first"), exports); +function localFunction() { return true; } +//// [cycleB.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./cycleA"), exports); +__exportStar(require("./first"), exports); +//// [cycleA.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./cycleB"), exports); +//// [namedConflict.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.shared = void 0; +var ambiguous_1 = require("./ambiguous"); +Object.defineProperty(exports, "shared", { enumerable: true, get: function () { return ambiguous_1.shared; } }); +//// [consumer.js] +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.conflict = exports.default = void 0; +const single_1 = __importDefault(require("./single")); +const diamond_1 = __importStar(require("./diamond")); +const resolved_1 = __importStar(require("./resolved")); +const local_1 = __importStar(require("./local")); +const localClass_1 = __importDefault(require("./localClass")); +const localFunction_1 = __importDefault(require("./localFunction")); +const cycleA_1 = __importDefault(require("./cycleA")); +const single = __importStar(require("./single")); +const ambiguous = __importStar(require("./ambiguous")); +const forwarded = __importStar(require("./forwarded")); +const namedConflict = __importStar(require("./namedConflict")); +const ambiguous_1 = __importStar(require("./ambiguous")); +const ambiguousDeclaration_1 = __importDefault(require("./ambiguousDeclaration")); +var forwarded_1 = require("./forwarded"); +Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(forwarded_1).default; } }); +Object.defineProperty(exports, "conflict", { enumerable: true, get: function () { return forwarded_1.shared; } }); +new single_1.default().first; +new diamond_1.default().first; +new resolved_1.default().first; +new single.default().first; +new single["default"]().first; +new localClass_1.default().local; +const localResult = (0, localFunction_1.default)(); +new cycleA_1.default().first; +const one = diamond_1.shared; +const anotherOne = resolved_1.shared; +const text = local_1.default; +const flag = local_1.shared; +const nonconflicting = ambiguous_1.unique; +ambiguous.default; +ambiguous["default"]; +ambiguous.shared; +ambiguous["shared"]; +forwarded.default; +forwarded["shared"]; +namedConflict.shared; +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +ambiguous["shared"].nonexistent(); +ambiguous_1.default.nonexistent(); +ambiguous_1.default.nonexistent(); +ambiguous_1.shared.nonexistent(); +ambiguousDeclaration_1.default.nonexistent(); + + +//// [first.d.ts] +export default class First { + first: number; +} +export declare const shared = 1; +export declare const unique = "first"; +//// [second.d.ts] +export default class Second { + second: number; +} +export declare const shared = 2; +//// [single.d.ts] +export * from "./first"; +//// [diamond.d.ts] +export * from "./first"; +export * from "./single"; +//// [ambiguous.d.ts] +export * from "./first"; +export * from "./second"; +//// [forwarded.d.ts] +export * from "./ambiguous"; +//// [resolved.d.ts] +export * from "./ambiguous"; +export { default, shared } from "./first"; +//// [local.d.ts] +export * from "./first"; +export * from "./second"; +declare const _default = "local"; +export default _default; +export declare const shared = true; +//// [localClass.d.ts] +export * from "./first"; +export default class LocalClass { + local: boolean; +} +//// [localFunction.d.ts] +export * from "./first"; +export default function localFunction(): boolean; +//// [cycleB.d.ts] +export * from "./cycleA"; +export * from "./first"; +//// [cycleA.d.ts] +export * from "./cycleB"; +//// [namedConflict.d.ts] +export { shared } from "./ambiguous"; +//// [consumer.d.ts] +export { default, shared as conflict } from "./forwarded"; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).symbols b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).symbols new file mode 100644 index 0000000000000..910d2be6cd638 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).symbols @@ -0,0 +1,263 @@ +//// [tests/cases/compiler/exportStarDefault.ts] //// + +=== first.ts === +export default class First { first = 1; } +>First : Symbol(First, Decl(first.ts, 0, 0)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +export const shared = 1; +>shared : Symbol(shared, Decl(first.ts, 1, 12)) + +export const unique = "first"; +>unique : Symbol(unique, Decl(first.ts, 2, 12)) + +=== second.ts === +export default class Second { second = 2; } +>Second : Symbol(Second, Decl(second.ts, 0, 0)) +>second : Symbol(Second.second, Decl(second.ts, 0, 29)) + +export const shared = 2; +>shared : Symbol(shared, Decl(second.ts, 1, 12)) + +=== single.ts === + +export * from "./first"; + +=== diamond.ts === + +export * from "./first"; +export * from "./single"; + +=== ambiguous.ts === + +export * from "./first"; +export * from "./second"; + +=== forwarded.ts === + +export * from "./ambiguous"; + +=== resolved.ts === +export * from "./ambiguous"; +export { default, shared } from "./first"; +>default : Symbol(default, Decl(resolved.ts, 1, 8)) +>shared : Symbol(shared, Decl(resolved.ts, 1, 17)) + +=== local.ts === +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; +>shared : Symbol(shared, Decl(local.ts, 3, 12)) + +=== localClass.ts === +export * from "./first"; +export default class LocalClass { local = true; } +>LocalClass : Symbol(LocalClass, Decl(localClass.ts, 0, 24)) +>local : Symbol(LocalClass.local, Decl(localClass.ts, 1, 33)) + +=== localFunction.ts === +export * from "./first"; +export default function localFunction() { return true; } +>localFunction : Symbol(localFunction, Decl(localFunction.ts, 0, 24)) + +=== cycleA.ts === + +export * from "./cycleB"; + +=== cycleB.ts === + +export * from "./cycleA"; +export * from "./first"; + +=== namedConflict.ts === +export { shared } from "./ambiguous"; +>shared : Symbol(shared, Decl(namedConflict.ts, 0, 8)) + +=== firstDeclaration.d.ts === +export default class FirstDeclaration { first: number; } +>FirstDeclaration : Symbol(FirstDeclaration, Decl(firstDeclaration.d.ts, 0, 0)) +>first : Symbol(FirstDeclaration.first, Decl(firstDeclaration.d.ts, 0, 39)) + +=== secondDeclaration.d.ts === +export default class SecondDeclaration { second: number; } +>SecondDeclaration : Symbol(SecondDeclaration, Decl(secondDeclaration.d.ts, 0, 0)) +>second : Symbol(SecondDeclaration.second, Decl(secondDeclaration.d.ts, 0, 40)) + +=== ambiguousDeclaration.d.ts === + +export * from "./firstDeclaration"; +export * from "./secondDeclaration"; + +=== consumer.ts === +import First from "./single"; +>First : Symbol(First, Decl(consumer.ts, 0, 6)) + +import { default as Diamond, shared as diamondShared } from "./diamond"; +>default : Symbol(First, Decl(first.ts, 0, 0)) +>Diamond : Symbol(Diamond, Decl(consumer.ts, 1, 8)) +>shared : Symbol(diamondShared, Decl(first.ts, 1, 12)) +>diamondShared : Symbol(diamondShared, Decl(consumer.ts, 1, 28)) + +import Resolved, { shared as resolvedShared } from "./resolved"; +>Resolved : Symbol(Resolved, Decl(consumer.ts, 2, 6)) +>shared : Symbol(shared, Decl(resolved.ts, 1, 17)) +>resolvedShared : Symbol(resolvedShared, Decl(consumer.ts, 2, 18)) + +import Local, { shared as localShared } from "./local"; +>Local : Symbol(Local, Decl(consumer.ts, 3, 6)) +>shared : Symbol(localShared, Decl(local.ts, 3, 12)) +>localShared : Symbol(localShared, Decl(consumer.ts, 3, 15)) + +import LocalClass from "./localClass"; +>LocalClass : Symbol(LocalClass, Decl(consumer.ts, 4, 6)) + +import localFunction from "./localFunction"; +>localFunction : Symbol(localFunction, Decl(consumer.ts, 5, 6)) + +import Cycle from "./cycleA"; +>Cycle : Symbol(Cycle, Decl(consumer.ts, 6, 6)) + +import * as single from "./single"; +>single : Symbol(single, Decl(consumer.ts, 7, 6)) + +import * as ambiguous from "./ambiguous"; +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) + +import * as forwarded from "./forwarded"; +>forwarded : Symbol(forwarded, Decl(consumer.ts, 9, 6)) + +import * as namedConflict from "./namedConflict"; +>namedConflict : Symbol(namedConflict, Decl(consumer.ts, 10, 6)) + +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +>Conflict : Symbol(Conflict, Decl(consumer.ts, 11, 6)) +>default : Symbol(Conflict) +>NamedConflict : Symbol(NamedConflict, Decl(consumer.ts, 11, 18)) +>shared : Symbol(shared, Decl(consumer.ts, 11, 44)) +>unique : Symbol(unique, Decl(consumer.ts, 11, 52)) + +import DeclarationConflict from "./ambiguousDeclaration"; +>DeclarationConflict : Symbol(DeclarationConflict, Decl(consumer.ts, 12, 6)) + +export { default, shared as conflict } from "./forwarded"; +>default : Symbol(default, Decl(consumer.ts, 13, 8)) +>shared : Symbol(shared) +>conflict : Symbol(conflict, Decl(consumer.ts, 13, 17)) + +new First().first; +>new First().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>First : Symbol(First, Decl(consumer.ts, 0, 6)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new Diamond().first; +>new Diamond().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>Diamond : Symbol(Diamond, Decl(consumer.ts, 1, 8)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new Resolved().first; +>new Resolved().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>Resolved : Symbol(Resolved, Decl(consumer.ts, 2, 6)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new single.default().first; +>new single.default().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>single.default : Symbol(First, Decl(first.ts, 0, 0)) +>single : Symbol(single, Decl(consumer.ts, 7, 6)) +>default : Symbol(First, Decl(first.ts, 0, 0)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new single["default"]().first; +>new single["default"]().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>single : Symbol(single, Decl(consumer.ts, 7, 6)) +>"default" : Symbol(First, Decl(first.ts, 0, 0)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new LocalClass().local; +>new LocalClass().local : Symbol(LocalClass.local, Decl(localClass.ts, 1, 33)) +>LocalClass : Symbol(LocalClass, Decl(consumer.ts, 4, 6)) +>local : Symbol(LocalClass.local, Decl(localClass.ts, 1, 33)) + +const localResult: boolean = localFunction(); +>localResult : Symbol(localResult, Decl(consumer.ts, 21, 5)) +>localFunction : Symbol(localFunction, Decl(consumer.ts, 5, 6)) + +new Cycle().first; +>new Cycle().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>Cycle : Symbol(Cycle, Decl(consumer.ts, 6, 6)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +const one: 1 = diamondShared; +>one : Symbol(one, Decl(consumer.ts, 23, 5)) +>diamondShared : Symbol(diamondShared, Decl(consumer.ts, 1, 28)) + +const anotherOne: 1 = resolvedShared; +>anotherOne : Symbol(anotherOne, Decl(consumer.ts, 24, 5)) +>resolvedShared : Symbol(resolvedShared, Decl(consumer.ts, 2, 18)) + +const text: string = Local; +>text : Symbol(text, Decl(consumer.ts, 25, 5)) +>Local : Symbol(Local, Decl(consumer.ts, 3, 6)) + +const flag: boolean = localShared; +>flag : Symbol(flag, Decl(consumer.ts, 26, 5)) +>localShared : Symbol(localShared, Decl(consumer.ts, 3, 15)) + +const nonconflicting: string = unique; +>nonconflicting : Symbol(nonconflicting, Decl(consumer.ts, 27, 5)) +>unique : Symbol(unique, Decl(consumer.ts, 11, 52)) + +ambiguous.default; +>ambiguous.default : Symbol(Conflict) +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>default : Symbol(Conflict) + +ambiguous["default"]; +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>"default" : Symbol(Conflict) + +ambiguous.shared; +>ambiguous.shared : Symbol(shared) +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>shared : Symbol(shared) + +ambiguous["shared"]; +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>"shared" : Symbol(shared) + +forwarded.default; +>forwarded.default : Symbol(default) +>forwarded : Symbol(forwarded, Decl(consumer.ts, 9, 6)) +>default : Symbol(default) + +forwarded["shared"]; +>forwarded : Symbol(forwarded, Decl(consumer.ts, 9, 6)) +>"shared" : Symbol(shared) + +namedConflict.shared; +>namedConflict.shared : Symbol(namedConflict.shared, Decl(namedConflict.ts, 0, 8)) +>namedConflict : Symbol(namedConflict, Decl(consumer.ts, 10, 6)) +>shared : Symbol(namedConflict.shared, Decl(namedConflict.ts, 0, 8)) + +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +>ambiguous.default : Symbol(Conflict) +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>default : Symbol(Conflict) + +ambiguous["shared"].nonexistent(); +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>"shared" : Symbol(shared) + +Conflict.nonexistent(); +>Conflict : Symbol(Conflict, Decl(consumer.ts, 11, 6)) + +NamedConflict.nonexistent(); +>NamedConflict : Symbol(NamedConflict, Decl(consumer.ts, 11, 18)) + +shared.nonexistent(); +>shared : Symbol(shared, Decl(consumer.ts, 11, 44)) + +DeclarationConflict.nonexistent(); +>DeclarationConflict : Symbol(DeclarationConflict, Decl(consumer.ts, 12, 6)) + diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).types b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).types new file mode 100644 index 0000000000000..9b3ac159f79c3 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=commonjs).types @@ -0,0 +1,302 @@ +//// [tests/cases/compiler/exportStarDefault.ts] //// + +=== first.ts === +export default class First { first = 1; } +>First : First +>first : number +>1 : 1 + +export const shared = 1; +>shared : 1 +>1 : 1 + +export const unique = "first"; +>unique : "first" +>"first" : "first" + +=== second.ts === +export default class Second { second = 2; } +>Second : Second +>second : number +>2 : 2 + +export const shared = 2; +>shared : 2 +>2 : 2 + +=== single.ts === + +export * from "./first"; + +=== diamond.ts === + +export * from "./first"; +export * from "./single"; + +=== ambiguous.ts === + +export * from "./first"; +export * from "./second"; + +=== forwarded.ts === + +export * from "./ambiguous"; + +=== resolved.ts === +export * from "./ambiguous"; +export { default, shared } from "./first"; +>default : typeof import("./first").default +>shared : 1 + +=== local.ts === +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; +>shared : true +>true : true + +=== localClass.ts === +export * from "./first"; +export default class LocalClass { local = true; } +>LocalClass : LocalClass +>local : boolean +>true : true + +=== localFunction.ts === +export * from "./first"; +export default function localFunction() { return true; } +>localFunction : () => boolean +>true : true + +=== cycleA.ts === + +export * from "./cycleB"; + +=== cycleB.ts === + +export * from "./cycleA"; +export * from "./first"; + +=== namedConflict.ts === +export { shared } from "./ambiguous"; +>shared : any + +=== firstDeclaration.d.ts === +export default class FirstDeclaration { first: number; } +>FirstDeclaration : FirstDeclaration +>first : number + +=== secondDeclaration.d.ts === +export default class SecondDeclaration { second: number; } +>SecondDeclaration : SecondDeclaration +>second : number + +=== ambiguousDeclaration.d.ts === + +export * from "./firstDeclaration"; +export * from "./secondDeclaration"; + +=== consumer.ts === +import First from "./single"; +>First : typeof First + +import { default as Diamond, shared as diamondShared } from "./diamond"; +>default : typeof First +>Diamond : typeof First +>shared : 1 +>diamondShared : 1 + +import Resolved, { shared as resolvedShared } from "./resolved"; +>Resolved : typeof First +>shared : 1 +>resolvedShared : 1 + +import Local, { shared as localShared } from "./local"; +>Local : "local" +>shared : true +>localShared : true + +import LocalClass from "./localClass"; +>LocalClass : typeof LocalClass + +import localFunction from "./localFunction"; +>localFunction : () => boolean + +import Cycle from "./cycleA"; +>Cycle : typeof First + +import * as single from "./single"; +>single : typeof single + +import * as ambiguous from "./ambiguous"; +>ambiguous : typeof ambiguous + +import * as forwarded from "./forwarded"; +>forwarded : typeof forwarded + +import * as namedConflict from "./namedConflict"; +>namedConflict : typeof namedConflict + +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +>Conflict : any +>default : any +>NamedConflict : any +>shared : any +>unique : "first" + +import DeclarationConflict from "./ambiguousDeclaration"; +>DeclarationConflict : any + +export { default, shared as conflict } from "./forwarded"; +>default : any +>shared : any +>conflict : any + +new First().first; +>new First().first : number +>new First() : First +>First : typeof First +>first : number + +new Diamond().first; +>new Diamond().first : number +>new Diamond() : First +>Diamond : typeof First +>first : number + +new Resolved().first; +>new Resolved().first : number +>new Resolved() : First +>Resolved : typeof First +>first : number + +new single.default().first; +>new single.default().first : number +>new single.default() : First +>single.default : typeof First +>single : typeof single +>default : typeof First +>first : number + +new single["default"]().first; +>new single["default"]().first : number +>new single["default"]() : First +>single["default"] : typeof First +>single : typeof single +>"default" : "default" +>first : number + +new LocalClass().local; +>new LocalClass().local : boolean +>new LocalClass() : LocalClass +>LocalClass : typeof LocalClass +>local : boolean + +const localResult: boolean = localFunction(); +>localResult : boolean +>localFunction() : boolean +>localFunction : () => boolean + +new Cycle().first; +>new Cycle().first : number +>new Cycle() : First +>Cycle : typeof First +>first : number + +const one: 1 = diamondShared; +>one : 1 +>diamondShared : 1 + +const anotherOne: 1 = resolvedShared; +>anotherOne : 1 +>resolvedShared : 1 + +const text: string = Local; +>text : string +>Local : "local" + +const flag: boolean = localShared; +>flag : boolean +>localShared : true + +const nonconflicting: string = unique; +>nonconflicting : string +>unique : "first" + +ambiguous.default; +>ambiguous.default : any +>ambiguous : typeof ambiguous +>default : any + +ambiguous["default"]; +>ambiguous["default"] : any +>ambiguous : typeof ambiguous +>"default" : "default" + +ambiguous.shared; +>ambiguous.shared : any +>ambiguous : typeof ambiguous +>shared : any + +ambiguous["shared"]; +>ambiguous["shared"] : any +>ambiguous : typeof ambiguous +>"shared" : "shared" + +forwarded.default; +>forwarded.default : any +>forwarded : typeof forwarded +>default : any + +forwarded["shared"]; +>forwarded["shared"] : any +>forwarded : typeof forwarded +>"shared" : "shared" + +namedConflict.shared; +>namedConflict.shared : any +>namedConflict : typeof namedConflict +>shared : any + +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +>ambiguous.default.nonexistent() : any +>ambiguous.default.nonexistent : any +>ambiguous.default : any +>ambiguous : typeof ambiguous +>default : any +>nonexistent : any + +ambiguous["shared"].nonexistent(); +>ambiguous["shared"].nonexistent() : any +>ambiguous["shared"].nonexistent : any +>ambiguous["shared"] : any +>ambiguous : typeof ambiguous +>"shared" : "shared" +>nonexistent : any + +Conflict.nonexistent(); +>Conflict.nonexistent() : any +>Conflict.nonexistent : any +>Conflict : any +>nonexistent : any + +NamedConflict.nonexistent(); +>NamedConflict.nonexistent() : any +>NamedConflict.nonexistent : any +>NamedConflict : any +>nonexistent : any + +shared.nonexistent(); +>shared.nonexistent() : any +>shared.nonexistent : any +>shared : any +>nonexistent : any + +DeclarationConflict.nonexistent(); +>DeclarationConflict.nonexistent() : any +>DeclarationConflict.nonexistent : any +>DeclarationConflict : any +>nonexistent : any + diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).errors.txt b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).errors.txt new file mode 100644 index 0000000000000..42315017a2919 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).errors.txt @@ -0,0 +1,156 @@ +consumer.ts(12,8): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(12,20): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(12,46): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(13,8): error TS2308: Module "ambiguousDeclaration" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(14,10): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(14,19): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(30,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(31,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(32,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(33,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(34,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(35,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(36,15): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(38,11): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(39,11): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. +namedConflict.ts(1,10): error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + + +==== first.ts (0 errors) ==== + export default class First { first = 1; } + export const shared = 1; + export const unique = "first"; + +==== second.ts (0 errors) ==== + export default class Second { second = 2; } + export const shared = 2; + +==== single.ts (0 errors) ==== + export * from "./first"; + +==== diamond.ts (0 errors) ==== + export * from "./first"; + export * from "./single"; + +==== ambiguous.ts (0 errors) ==== + export * from "./first"; + export * from "./second"; + +==== forwarded.ts (0 errors) ==== + export * from "./ambiguous"; + +==== resolved.ts (0 errors) ==== + export * from "./ambiguous"; + export { default, shared } from "./first"; + +==== local.ts (0 errors) ==== + export * from "./first"; + export * from "./second"; + export default "local"; + export const shared = true; + +==== localClass.ts (0 errors) ==== + export * from "./first"; + export default class LocalClass { local = true; } + +==== localFunction.ts (0 errors) ==== + export * from "./first"; + export default function localFunction() { return true; } + +==== cycleA.ts (0 errors) ==== + export * from "./cycleB"; + +==== cycleB.ts (0 errors) ==== + export * from "./cycleA"; + export * from "./first"; + +==== namedConflict.ts (1 errors) ==== + export { shared } from "./ambiguous"; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + +==== firstDeclaration.d.ts (0 errors) ==== + export default class FirstDeclaration { first: number; } + +==== secondDeclaration.d.ts (0 errors) ==== + export default class SecondDeclaration { second: number; } + +==== ambiguousDeclaration.d.ts (0 errors) ==== + export * from "./firstDeclaration"; + export * from "./secondDeclaration"; + +==== consumer.ts (15 errors) ==== + import First from "./single"; + import { default as Diamond, shared as diamondShared } from "./diamond"; + import Resolved, { shared as resolvedShared } from "./resolved"; + import Local, { shared as localShared } from "./local"; + import LocalClass from "./localClass"; + import localFunction from "./localFunction"; + import Cycle from "./cycleA"; + import * as single from "./single"; + import * as ambiguous from "./ambiguous"; + import * as forwarded from "./forwarded"; + import * as namedConflict from "./namedConflict"; + import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + import DeclarationConflict from "./ambiguousDeclaration"; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS2308: Module "ambiguousDeclaration" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + export { default, shared as conflict } from "./forwarded"; + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + + new First().first; + new Diamond().first; + new Resolved().first; + new single.default().first; + new single["default"]().first; + new LocalClass().local; + const localResult: boolean = localFunction(); + new Cycle().first; + const one: 1 = diamondShared; + const anotherOne: 1 = resolvedShared; + const text: string = Local; + const flag: boolean = localShared; + const nonconflicting: string = unique; + + ambiguous.default; + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous["default"]; + ~~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous.shared; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous["shared"]; + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + forwarded.default; + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + forwarded["shared"]; + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + namedConflict.shared; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + // Conflicting accesses have the error type, without cascading errors. + ambiguous.default.nonexistent(); + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ambiguous["shared"].nonexistent(); + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'shared'. Consider explicitly re-exporting to resolve the ambiguity. + Conflict.nonexistent(); + NamedConflict.nonexistent(); + shared.nonexistent(); + DeclarationConflict.nonexistent(); + \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).js b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).js new file mode 100644 index 0000000000000..28d298314030d --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).js @@ -0,0 +1,244 @@ +//// [tests/cases/compiler/exportStarDefault.ts] //// + +//// [first.ts] +export default class First { first = 1; } +export const shared = 1; +export const unique = "first"; + +//// [second.ts] +export default class Second { second = 2; } +export const shared = 2; + +//// [single.ts] +export * from "./first"; + +//// [diamond.ts] +export * from "./first"; +export * from "./single"; + +//// [ambiguous.ts] +export * from "./first"; +export * from "./second"; + +//// [forwarded.ts] +export * from "./ambiguous"; + +//// [resolved.ts] +export * from "./ambiguous"; +export { default, shared } from "./first"; + +//// [local.ts] +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; + +//// [localClass.ts] +export * from "./first"; +export default class LocalClass { local = true; } + +//// [localFunction.ts] +export * from "./first"; +export default function localFunction() { return true; } + +//// [cycleA.ts] +export * from "./cycleB"; + +//// [cycleB.ts] +export * from "./cycleA"; +export * from "./first"; + +//// [namedConflict.ts] +export { shared } from "./ambiguous"; + +//// [firstDeclaration.d.ts] +export default class FirstDeclaration { first: number; } + +//// [secondDeclaration.d.ts] +export default class SecondDeclaration { second: number; } + +//// [ambiguousDeclaration.d.ts] +export * from "./firstDeclaration"; +export * from "./secondDeclaration"; + +//// [consumer.ts] +import First from "./single"; +import { default as Diamond, shared as diamondShared } from "./diamond"; +import Resolved, { shared as resolvedShared } from "./resolved"; +import Local, { shared as localShared } from "./local"; +import LocalClass from "./localClass"; +import localFunction from "./localFunction"; +import Cycle from "./cycleA"; +import * as single from "./single"; +import * as ambiguous from "./ambiguous"; +import * as forwarded from "./forwarded"; +import * as namedConflict from "./namedConflict"; +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +import DeclarationConflict from "./ambiguousDeclaration"; +export { default, shared as conflict } from "./forwarded"; + +new First().first; +new Diamond().first; +new Resolved().first; +new single.default().first; +new single["default"]().first; +new LocalClass().local; +const localResult: boolean = localFunction(); +new Cycle().first; +const one: 1 = diamondShared; +const anotherOne: 1 = resolvedShared; +const text: string = Local; +const flag: boolean = localShared; +const nonconflicting: string = unique; + +ambiguous.default; +ambiguous["default"]; +ambiguous.shared; +ambiguous["shared"]; +forwarded.default; +forwarded["shared"]; +namedConflict.shared; +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +ambiguous["shared"].nonexistent(); +Conflict.nonexistent(); +NamedConflict.nonexistent(); +shared.nonexistent(); +DeclarationConflict.nonexistent(); + + +//// [first.js] +export default class First { + first = 1; +} +export const shared = 1; +export const unique = "first"; +//// [second.js] +export default class Second { + second = 2; +} +export const shared = 2; +//// [single.js] +export * from "./first"; +//// [diamond.js] +export * from "./first"; +export * from "./single"; +//// [ambiguous.js] +export * from "./first"; +export * from "./second"; +//// [forwarded.js] +export * from "./ambiguous"; +//// [resolved.js] +export * from "./ambiguous"; +export { default, shared } from "./first"; +//// [local.js] +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; +//// [localClass.js] +export * from "./first"; +export default class LocalClass { + local = true; +} +//// [localFunction.js] +export * from "./first"; +export default function localFunction() { return true; } +//// [cycleB.js] +export * from "./cycleA"; +export * from "./first"; +//// [cycleA.js] +export * from "./cycleB"; +//// [namedConflict.js] +export { shared } from "./ambiguous"; +//// [consumer.js] +import First from "./single"; +import { default as Diamond, shared as diamondShared } from "./diamond"; +import Resolved, { shared as resolvedShared } from "./resolved"; +import Local, { shared as localShared } from "./local"; +import LocalClass from "./localClass"; +import localFunction from "./localFunction"; +import Cycle from "./cycleA"; +import * as single from "./single"; +import * as ambiguous from "./ambiguous"; +import * as forwarded from "./forwarded"; +import * as namedConflict from "./namedConflict"; +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +import DeclarationConflict from "./ambiguousDeclaration"; +export { default, shared as conflict } from "./forwarded"; +new First().first; +new Diamond().first; +new Resolved().first; +new single.default().first; +new single["default"]().first; +new LocalClass().local; +const localResult = localFunction(); +new Cycle().first; +const one = diamondShared; +const anotherOne = resolvedShared; +const text = Local; +const flag = localShared; +const nonconflicting = unique; +ambiguous.default; +ambiguous["default"]; +ambiguous.shared; +ambiguous["shared"]; +forwarded.default; +forwarded["shared"]; +namedConflict.shared; +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +ambiguous["shared"].nonexistent(); +Conflict.nonexistent(); +NamedConflict.nonexistent(); +shared.nonexistent(); +DeclarationConflict.nonexistent(); + + +//// [first.d.ts] +export default class First { + first: number; +} +export declare const shared = 1; +export declare const unique = "first"; +//// [second.d.ts] +export default class Second { + second: number; +} +export declare const shared = 2; +//// [single.d.ts] +export * from "./first"; +//// [diamond.d.ts] +export * from "./first"; +export * from "./single"; +//// [ambiguous.d.ts] +export * from "./first"; +export * from "./second"; +//// [forwarded.d.ts] +export * from "./ambiguous"; +//// [resolved.d.ts] +export * from "./ambiguous"; +export { default, shared } from "./first"; +//// [local.d.ts] +export * from "./first"; +export * from "./second"; +declare const _default = "local"; +export default _default; +export declare const shared = true; +//// [localClass.d.ts] +export * from "./first"; +export default class LocalClass { + local: boolean; +} +//// [localFunction.d.ts] +export * from "./first"; +export default function localFunction(): boolean; +//// [cycleB.d.ts] +export * from "./cycleA"; +export * from "./first"; +//// [cycleA.d.ts] +export * from "./cycleB"; +//// [namedConflict.d.ts] +export { shared } from "./ambiguous"; +//// [consumer.d.ts] +export { default, shared as conflict } from "./forwarded"; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).symbols b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).symbols new file mode 100644 index 0000000000000..910d2be6cd638 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).symbols @@ -0,0 +1,263 @@ +//// [tests/cases/compiler/exportStarDefault.ts] //// + +=== first.ts === +export default class First { first = 1; } +>First : Symbol(First, Decl(first.ts, 0, 0)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +export const shared = 1; +>shared : Symbol(shared, Decl(first.ts, 1, 12)) + +export const unique = "first"; +>unique : Symbol(unique, Decl(first.ts, 2, 12)) + +=== second.ts === +export default class Second { second = 2; } +>Second : Symbol(Second, Decl(second.ts, 0, 0)) +>second : Symbol(Second.second, Decl(second.ts, 0, 29)) + +export const shared = 2; +>shared : Symbol(shared, Decl(second.ts, 1, 12)) + +=== single.ts === + +export * from "./first"; + +=== diamond.ts === + +export * from "./first"; +export * from "./single"; + +=== ambiguous.ts === + +export * from "./first"; +export * from "./second"; + +=== forwarded.ts === + +export * from "./ambiguous"; + +=== resolved.ts === +export * from "./ambiguous"; +export { default, shared } from "./first"; +>default : Symbol(default, Decl(resolved.ts, 1, 8)) +>shared : Symbol(shared, Decl(resolved.ts, 1, 17)) + +=== local.ts === +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; +>shared : Symbol(shared, Decl(local.ts, 3, 12)) + +=== localClass.ts === +export * from "./first"; +export default class LocalClass { local = true; } +>LocalClass : Symbol(LocalClass, Decl(localClass.ts, 0, 24)) +>local : Symbol(LocalClass.local, Decl(localClass.ts, 1, 33)) + +=== localFunction.ts === +export * from "./first"; +export default function localFunction() { return true; } +>localFunction : Symbol(localFunction, Decl(localFunction.ts, 0, 24)) + +=== cycleA.ts === + +export * from "./cycleB"; + +=== cycleB.ts === + +export * from "./cycleA"; +export * from "./first"; + +=== namedConflict.ts === +export { shared } from "./ambiguous"; +>shared : Symbol(shared, Decl(namedConflict.ts, 0, 8)) + +=== firstDeclaration.d.ts === +export default class FirstDeclaration { first: number; } +>FirstDeclaration : Symbol(FirstDeclaration, Decl(firstDeclaration.d.ts, 0, 0)) +>first : Symbol(FirstDeclaration.first, Decl(firstDeclaration.d.ts, 0, 39)) + +=== secondDeclaration.d.ts === +export default class SecondDeclaration { second: number; } +>SecondDeclaration : Symbol(SecondDeclaration, Decl(secondDeclaration.d.ts, 0, 0)) +>second : Symbol(SecondDeclaration.second, Decl(secondDeclaration.d.ts, 0, 40)) + +=== ambiguousDeclaration.d.ts === + +export * from "./firstDeclaration"; +export * from "./secondDeclaration"; + +=== consumer.ts === +import First from "./single"; +>First : Symbol(First, Decl(consumer.ts, 0, 6)) + +import { default as Diamond, shared as diamondShared } from "./diamond"; +>default : Symbol(First, Decl(first.ts, 0, 0)) +>Diamond : Symbol(Diamond, Decl(consumer.ts, 1, 8)) +>shared : Symbol(diamondShared, Decl(first.ts, 1, 12)) +>diamondShared : Symbol(diamondShared, Decl(consumer.ts, 1, 28)) + +import Resolved, { shared as resolvedShared } from "./resolved"; +>Resolved : Symbol(Resolved, Decl(consumer.ts, 2, 6)) +>shared : Symbol(shared, Decl(resolved.ts, 1, 17)) +>resolvedShared : Symbol(resolvedShared, Decl(consumer.ts, 2, 18)) + +import Local, { shared as localShared } from "./local"; +>Local : Symbol(Local, Decl(consumer.ts, 3, 6)) +>shared : Symbol(localShared, Decl(local.ts, 3, 12)) +>localShared : Symbol(localShared, Decl(consumer.ts, 3, 15)) + +import LocalClass from "./localClass"; +>LocalClass : Symbol(LocalClass, Decl(consumer.ts, 4, 6)) + +import localFunction from "./localFunction"; +>localFunction : Symbol(localFunction, Decl(consumer.ts, 5, 6)) + +import Cycle from "./cycleA"; +>Cycle : Symbol(Cycle, Decl(consumer.ts, 6, 6)) + +import * as single from "./single"; +>single : Symbol(single, Decl(consumer.ts, 7, 6)) + +import * as ambiguous from "./ambiguous"; +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) + +import * as forwarded from "./forwarded"; +>forwarded : Symbol(forwarded, Decl(consumer.ts, 9, 6)) + +import * as namedConflict from "./namedConflict"; +>namedConflict : Symbol(namedConflict, Decl(consumer.ts, 10, 6)) + +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +>Conflict : Symbol(Conflict, Decl(consumer.ts, 11, 6)) +>default : Symbol(Conflict) +>NamedConflict : Symbol(NamedConflict, Decl(consumer.ts, 11, 18)) +>shared : Symbol(shared, Decl(consumer.ts, 11, 44)) +>unique : Symbol(unique, Decl(consumer.ts, 11, 52)) + +import DeclarationConflict from "./ambiguousDeclaration"; +>DeclarationConflict : Symbol(DeclarationConflict, Decl(consumer.ts, 12, 6)) + +export { default, shared as conflict } from "./forwarded"; +>default : Symbol(default, Decl(consumer.ts, 13, 8)) +>shared : Symbol(shared) +>conflict : Symbol(conflict, Decl(consumer.ts, 13, 17)) + +new First().first; +>new First().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>First : Symbol(First, Decl(consumer.ts, 0, 6)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new Diamond().first; +>new Diamond().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>Diamond : Symbol(Diamond, Decl(consumer.ts, 1, 8)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new Resolved().first; +>new Resolved().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>Resolved : Symbol(Resolved, Decl(consumer.ts, 2, 6)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new single.default().first; +>new single.default().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>single.default : Symbol(First, Decl(first.ts, 0, 0)) +>single : Symbol(single, Decl(consumer.ts, 7, 6)) +>default : Symbol(First, Decl(first.ts, 0, 0)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new single["default"]().first; +>new single["default"]().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>single : Symbol(single, Decl(consumer.ts, 7, 6)) +>"default" : Symbol(First, Decl(first.ts, 0, 0)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +new LocalClass().local; +>new LocalClass().local : Symbol(LocalClass.local, Decl(localClass.ts, 1, 33)) +>LocalClass : Symbol(LocalClass, Decl(consumer.ts, 4, 6)) +>local : Symbol(LocalClass.local, Decl(localClass.ts, 1, 33)) + +const localResult: boolean = localFunction(); +>localResult : Symbol(localResult, Decl(consumer.ts, 21, 5)) +>localFunction : Symbol(localFunction, Decl(consumer.ts, 5, 6)) + +new Cycle().first; +>new Cycle().first : Symbol(First.first, Decl(first.ts, 0, 28)) +>Cycle : Symbol(Cycle, Decl(consumer.ts, 6, 6)) +>first : Symbol(First.first, Decl(first.ts, 0, 28)) + +const one: 1 = diamondShared; +>one : Symbol(one, Decl(consumer.ts, 23, 5)) +>diamondShared : Symbol(diamondShared, Decl(consumer.ts, 1, 28)) + +const anotherOne: 1 = resolvedShared; +>anotherOne : Symbol(anotherOne, Decl(consumer.ts, 24, 5)) +>resolvedShared : Symbol(resolvedShared, Decl(consumer.ts, 2, 18)) + +const text: string = Local; +>text : Symbol(text, Decl(consumer.ts, 25, 5)) +>Local : Symbol(Local, Decl(consumer.ts, 3, 6)) + +const flag: boolean = localShared; +>flag : Symbol(flag, Decl(consumer.ts, 26, 5)) +>localShared : Symbol(localShared, Decl(consumer.ts, 3, 15)) + +const nonconflicting: string = unique; +>nonconflicting : Symbol(nonconflicting, Decl(consumer.ts, 27, 5)) +>unique : Symbol(unique, Decl(consumer.ts, 11, 52)) + +ambiguous.default; +>ambiguous.default : Symbol(Conflict) +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>default : Symbol(Conflict) + +ambiguous["default"]; +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>"default" : Symbol(Conflict) + +ambiguous.shared; +>ambiguous.shared : Symbol(shared) +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>shared : Symbol(shared) + +ambiguous["shared"]; +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>"shared" : Symbol(shared) + +forwarded.default; +>forwarded.default : Symbol(default) +>forwarded : Symbol(forwarded, Decl(consumer.ts, 9, 6)) +>default : Symbol(default) + +forwarded["shared"]; +>forwarded : Symbol(forwarded, Decl(consumer.ts, 9, 6)) +>"shared" : Symbol(shared) + +namedConflict.shared; +>namedConflict.shared : Symbol(namedConflict.shared, Decl(namedConflict.ts, 0, 8)) +>namedConflict : Symbol(namedConflict, Decl(consumer.ts, 10, 6)) +>shared : Symbol(namedConflict.shared, Decl(namedConflict.ts, 0, 8)) + +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +>ambiguous.default : Symbol(Conflict) +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>default : Symbol(Conflict) + +ambiguous["shared"].nonexistent(); +>ambiguous : Symbol(ambiguous, Decl(consumer.ts, 8, 6)) +>"shared" : Symbol(shared) + +Conflict.nonexistent(); +>Conflict : Symbol(Conflict, Decl(consumer.ts, 11, 6)) + +NamedConflict.nonexistent(); +>NamedConflict : Symbol(NamedConflict, Decl(consumer.ts, 11, 18)) + +shared.nonexistent(); +>shared : Symbol(shared, Decl(consumer.ts, 11, 44)) + +DeclarationConflict.nonexistent(); +>DeclarationConflict : Symbol(DeclarationConflict, Decl(consumer.ts, 12, 6)) + diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).types b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).types new file mode 100644 index 0000000000000..9b3ac159f79c3 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefault(module=esnext).types @@ -0,0 +1,302 @@ +//// [tests/cases/compiler/exportStarDefault.ts] //// + +=== first.ts === +export default class First { first = 1; } +>First : First +>first : number +>1 : 1 + +export const shared = 1; +>shared : 1 +>1 : 1 + +export const unique = "first"; +>unique : "first" +>"first" : "first" + +=== second.ts === +export default class Second { second = 2; } +>Second : Second +>second : number +>2 : 2 + +export const shared = 2; +>shared : 2 +>2 : 2 + +=== single.ts === + +export * from "./first"; + +=== diamond.ts === + +export * from "./first"; +export * from "./single"; + +=== ambiguous.ts === + +export * from "./first"; +export * from "./second"; + +=== forwarded.ts === + +export * from "./ambiguous"; + +=== resolved.ts === +export * from "./ambiguous"; +export { default, shared } from "./first"; +>default : typeof import("./first").default +>shared : 1 + +=== local.ts === +export * from "./first"; +export * from "./second"; +export default "local"; +export const shared = true; +>shared : true +>true : true + +=== localClass.ts === +export * from "./first"; +export default class LocalClass { local = true; } +>LocalClass : LocalClass +>local : boolean +>true : true + +=== localFunction.ts === +export * from "./first"; +export default function localFunction() { return true; } +>localFunction : () => boolean +>true : true + +=== cycleA.ts === + +export * from "./cycleB"; + +=== cycleB.ts === + +export * from "./cycleA"; +export * from "./first"; + +=== namedConflict.ts === +export { shared } from "./ambiguous"; +>shared : any + +=== firstDeclaration.d.ts === +export default class FirstDeclaration { first: number; } +>FirstDeclaration : FirstDeclaration +>first : number + +=== secondDeclaration.d.ts === +export default class SecondDeclaration { second: number; } +>SecondDeclaration : SecondDeclaration +>second : number + +=== ambiguousDeclaration.d.ts === + +export * from "./firstDeclaration"; +export * from "./secondDeclaration"; + +=== consumer.ts === +import First from "./single"; +>First : typeof First + +import { default as Diamond, shared as diamondShared } from "./diamond"; +>default : typeof First +>Diamond : typeof First +>shared : 1 +>diamondShared : 1 + +import Resolved, { shared as resolvedShared } from "./resolved"; +>Resolved : typeof First +>shared : 1 +>resolvedShared : 1 + +import Local, { shared as localShared } from "./local"; +>Local : "local" +>shared : true +>localShared : true + +import LocalClass from "./localClass"; +>LocalClass : typeof LocalClass + +import localFunction from "./localFunction"; +>localFunction : () => boolean + +import Cycle from "./cycleA"; +>Cycle : typeof First + +import * as single from "./single"; +>single : typeof single + +import * as ambiguous from "./ambiguous"; +>ambiguous : typeof ambiguous + +import * as forwarded from "./forwarded"; +>forwarded : typeof forwarded + +import * as namedConflict from "./namedConflict"; +>namedConflict : typeof namedConflict + +import Conflict, { default as NamedConflict, shared, unique } from "./ambiguous"; +>Conflict : any +>default : any +>NamedConflict : any +>shared : any +>unique : "first" + +import DeclarationConflict from "./ambiguousDeclaration"; +>DeclarationConflict : any + +export { default, shared as conflict } from "./forwarded"; +>default : any +>shared : any +>conflict : any + +new First().first; +>new First().first : number +>new First() : First +>First : typeof First +>first : number + +new Diamond().first; +>new Diamond().first : number +>new Diamond() : First +>Diamond : typeof First +>first : number + +new Resolved().first; +>new Resolved().first : number +>new Resolved() : First +>Resolved : typeof First +>first : number + +new single.default().first; +>new single.default().first : number +>new single.default() : First +>single.default : typeof First +>single : typeof single +>default : typeof First +>first : number + +new single["default"]().first; +>new single["default"]().first : number +>new single["default"]() : First +>single["default"] : typeof First +>single : typeof single +>"default" : "default" +>first : number + +new LocalClass().local; +>new LocalClass().local : boolean +>new LocalClass() : LocalClass +>LocalClass : typeof LocalClass +>local : boolean + +const localResult: boolean = localFunction(); +>localResult : boolean +>localFunction() : boolean +>localFunction : () => boolean + +new Cycle().first; +>new Cycle().first : number +>new Cycle() : First +>Cycle : typeof First +>first : number + +const one: 1 = diamondShared; +>one : 1 +>diamondShared : 1 + +const anotherOne: 1 = resolvedShared; +>anotherOne : 1 +>resolvedShared : 1 + +const text: string = Local; +>text : string +>Local : "local" + +const flag: boolean = localShared; +>flag : boolean +>localShared : true + +const nonconflicting: string = unique; +>nonconflicting : string +>unique : "first" + +ambiguous.default; +>ambiguous.default : any +>ambiguous : typeof ambiguous +>default : any + +ambiguous["default"]; +>ambiguous["default"] : any +>ambiguous : typeof ambiguous +>"default" : "default" + +ambiguous.shared; +>ambiguous.shared : any +>ambiguous : typeof ambiguous +>shared : any + +ambiguous["shared"]; +>ambiguous["shared"] : any +>ambiguous : typeof ambiguous +>"shared" : "shared" + +forwarded.default; +>forwarded.default : any +>forwarded : typeof forwarded +>default : any + +forwarded["shared"]; +>forwarded["shared"] : any +>forwarded : typeof forwarded +>"shared" : "shared" + +namedConflict.shared; +>namedConflict.shared : any +>namedConflict : typeof namedConflict +>shared : any + +// Conflicting accesses have the error type, without cascading errors. +ambiguous.default.nonexistent(); +>ambiguous.default.nonexistent() : any +>ambiguous.default.nonexistent : any +>ambiguous.default : any +>ambiguous : typeof ambiguous +>default : any +>nonexistent : any + +ambiguous["shared"].nonexistent(); +>ambiguous["shared"].nonexistent() : any +>ambiguous["shared"].nonexistent : any +>ambiguous["shared"] : any +>ambiguous : typeof ambiguous +>"shared" : "shared" +>nonexistent : any + +Conflict.nonexistent(); +>Conflict.nonexistent() : any +>Conflict.nonexistent : any +>Conflict : any +>nonexistent : any + +NamedConflict.nonexistent(); +>NamedConflict.nonexistent() : any +>NamedConflict.nonexistent : any +>NamedConflict : any +>nonexistent : any + +shared.nonexistent(); +>shared.nonexistent() : any +>shared.nonexistent : any +>shared : any +>nonexistent : any + +DeclarationConflict.nonexistent(); +>DeclarationConflict.nonexistent() : any +>DeclarationConflict.nonexistent : any +>DeclarationConflict : any +>nonexistent : any + diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.errors.txt b/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.errors.txt new file mode 100644 index 0000000000000..b4d57b9286e9a --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.errors.txt @@ -0,0 +1,53 @@ +consumer.ts(3,13): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(4,15): error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(6,15): error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(6,24): error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(11,21): error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. +consumer.ts(12,18): error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. + + +==== first.ts (0 errors) ==== + export default interface First { first: number; } + export interface Shared { first: number; } + +==== second.ts (0 errors) ==== + export default interface Second { second: number; } + export interface Shared { second: number; } + +==== single.ts (0 errors) ==== + export type * from "./first"; + +==== ambiguous.ts (0 errors) ==== + export type * from "./first"; + export type * from "./second"; + +==== resolved.ts (0 errors) ==== + export type * from "./ambiguous"; + export type { default, Shared } from "./first"; + +==== consumer.ts (6 errors) ==== + import type First from "./single"; + import type Resolved from "./resolved"; + import type Conflict from "./ambiguous"; + ~~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + import type { Shared } from "./ambiguous"; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. + import type * as ns from "./ambiguous"; + export type { default, Shared } from "./ambiguous"; + ~~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'default'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. + const first: First = { first: 1 }; + const resolved: Resolved = first; + const conflict: Conflict = {}; + const shared: Shared = {}; + const qualified: ns.Shared = {}; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. + const nested: ns.Shared.Nested = {}; + ~~~~~~ +!!! error TS2308: Module "ambiguous" has already exported a member named 'Shared'. Consider explicitly re-exporting to resolve the ambiguity. + \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.symbols b/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.symbols new file mode 100644 index 0000000000000..c1e1cee48cd3c --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.symbols @@ -0,0 +1,84 @@ +//// [tests/cases/compiler/exportStarDefaultTypes.ts] //// + +=== first.ts === +export default interface First { first: number; } +>First : Symbol(First, Decl(first.ts, 0, 0)) +>first : Symbol(First.first, Decl(first.ts, 0, 32)) + +export interface Shared { first: number; } +>Shared : Symbol(Shared, Decl(first.ts, 0, 49)) +>first : Symbol(Shared.first, Decl(first.ts, 1, 25)) + +=== second.ts === +export default interface Second { second: number; } +>Second : Symbol(Second, Decl(second.ts, 0, 0)) +>second : Symbol(Second.second, Decl(second.ts, 0, 33)) + +export interface Shared { second: number; } +>Shared : Symbol(Shared, Decl(second.ts, 0, 51)) +>second : Symbol(Shared.second, Decl(second.ts, 1, 25)) + +=== single.ts === + +export type * from "./first"; + +=== ambiguous.ts === + +export type * from "./first"; +export type * from "./second"; + +=== resolved.ts === +export type * from "./ambiguous"; +export type { default, Shared } from "./first"; +>default : Symbol(default, Decl(resolved.ts, 1, 13)) +>Shared : Symbol(Shared, Decl(resolved.ts, 1, 22)) + +=== consumer.ts === +import type First from "./single"; +>First : Symbol(First, Decl(consumer.ts, 0, 6)) + +import type Resolved from "./resolved"; +>Resolved : Symbol(Resolved, Decl(consumer.ts, 1, 6)) + +import type Conflict from "./ambiguous"; +>Conflict : Symbol(Conflict, Decl(consumer.ts, 2, 6)) + +import type { Shared } from "./ambiguous"; +>Shared : Symbol(Shared, Decl(consumer.ts, 3, 13)) + +import type * as ns from "./ambiguous"; +>ns : Symbol(ns, Decl(consumer.ts, 4, 11)) + +export type { default, Shared } from "./ambiguous"; +>default : Symbol(default, Decl(consumer.ts, 5, 13)) +>Shared : Symbol(Shared, Decl(consumer.ts, 5, 22)) + +const first: First = { first: 1 }; +>first : Symbol(first, Decl(consumer.ts, 6, 5)) +>First : Symbol(First, Decl(consumer.ts, 0, 6)) +>first : Symbol(first, Decl(consumer.ts, 6, 22)) + +const resolved: Resolved = first; +>resolved : Symbol(resolved, Decl(consumer.ts, 7, 5)) +>Resolved : Symbol(Resolved, Decl(consumer.ts, 1, 6)) +>first : Symbol(first, Decl(consumer.ts, 6, 5)) + +const conflict: Conflict = {}; +>conflict : Symbol(conflict, Decl(consumer.ts, 8, 5)) +>Conflict : Symbol(Conflict, Decl(consumer.ts, 2, 6)) + +const shared: Shared = {}; +>shared : Symbol(shared, Decl(consumer.ts, 9, 5)) +>Shared : Symbol(Shared, Decl(consumer.ts, 3, 13)) + +const qualified: ns.Shared = {}; +>qualified : Symbol(qualified, Decl(consumer.ts, 10, 5)) +>ns : Symbol(ns, Decl(consumer.ts, 4, 11)) +>Shared : Symbol(Shared) + +const nested: ns.Shared.Nested = {}; +>nested : Symbol(nested, Decl(consumer.ts, 11, 5)) +>ns : Symbol(ns, Decl(consumer.ts, 4, 11)) +>Shared : Symbol(Shared) +>Nested : Symbol(ns.Shared.Nested) + diff --git a/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.types b/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.types new file mode 100644 index 0000000000000..990a83cbb7713 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/exportStarDefaultTypes.types @@ -0,0 +1,80 @@ +//// [tests/cases/compiler/exportStarDefaultTypes.ts] //// + +=== first.ts === +export default interface First { first: number; } +>first : number + +export interface Shared { first: number; } +>first : number + +=== second.ts === +export default interface Second { second: number; } +>second : number + +export interface Shared { second: number; } +>second : number + +=== single.ts === + +export type * from "./first"; + +=== ambiguous.ts === + +export type * from "./first"; +export type * from "./second"; + +=== resolved.ts === +export type * from "./ambiguous"; +export type { default, Shared } from "./first"; +>default : import("./first").default +>Shared : import("./first").Shared + +=== consumer.ts === +import type First from "./single"; +>First : First + +import type Resolved from "./resolved"; +>Resolved : First + +import type Conflict from "./ambiguous"; +>Conflict : any + +import type { Shared } from "./ambiguous"; +>Shared : any + +import type * as ns from "./ambiguous"; +>ns : typeof ns + +export type { default, Shared } from "./ambiguous"; +>default : any +>Shared : any + +const first: First = { first: 1 }; +>first : First +>{ first: 1 } : { first: number; } +>first : number +>1 : 1 + +const resolved: Resolved = first; +>resolved : First +>first : First + +const conflict: Conflict = {}; +>conflict : any +>{} : {} + +const shared: Shared = {}; +>shared : any +>{} : {} + +const qualified: ns.Shared = {}; +>qualified : any +>ns : any +>{} : {} + +const nested: ns.Shared.Nested = {}; +>nested : ns.Shared.Nested +>ns : any +>Shared : any +>{} : {} + diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues.js index 9c468454182bb..38ad342110600 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues.js @@ -24,7 +24,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file1"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues2.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues2.js index 79bde6f7db993..74ad90ed59785 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues2.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues2.js @@ -28,7 +28,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file1"), exports); @@ -47,7 +47,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file2"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues3.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues3.js index 109cb5e768771..3fd1b10c7c6c0 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues3.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues3.js @@ -40,7 +40,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file1"), exports); @@ -59,7 +59,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file1"), exports); @@ -78,7 +78,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file2"), exports); @@ -98,7 +98,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file4"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues4.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues4.js index fe10b7c4151ba..f0fcf17d19bbc 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues4.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues4.js @@ -32,7 +32,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file1"), exports); @@ -52,7 +52,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("file2"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues5.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues5.js index 32be7c4a92c11..c011f25330bbd 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues5.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues5.js @@ -24,7 +24,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues7.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues7.js index be769e8be0b74..03ef340c01801 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues7.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues7.js @@ -28,7 +28,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; @@ -48,7 +48,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues8.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues8.js index f1dfd136c17b6..3e91758912cd2 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues8.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues8.js @@ -40,7 +40,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; @@ -60,7 +60,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; @@ -80,7 +80,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; @@ -101,7 +101,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarForValues9.js b/tsc/testdata/baselines/reference/compiler/exportStarForValues9.js index afe81e92ac6c4..56832222258b2 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarForValues9.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarForValues9.js @@ -32,7 +32,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; @@ -53,7 +53,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarFromEmptyModule(target=es2015).js b/tsc/testdata/baselines/reference/compiler/exportStarFromEmptyModule(target=es2015).js index bc5fecd4b61bd..15d2723c56af1 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarFromEmptyModule(target=es2015).js +++ b/tsc/testdata/baselines/reference/compiler/exportStarFromEmptyModule(target=es2015).js @@ -46,7 +46,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.A = void 0; diff --git a/tsc/testdata/baselines/reference/compiler/exportStarNotElided.js b/tsc/testdata/baselines/reference/compiler/exportStarNotElided.js index dabe577d9dce9..8952f4d866367 100644 --- a/tsc/testdata/baselines/reference/compiler/exportStarNotElided.js +++ b/tsc/testdata/baselines/reference/compiler/exportStarNotElided.js @@ -40,7 +40,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( o["default"] = v; }); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { diff --git a/tsc/testdata/baselines/reference/compiler/mergeMultipleInterfacesReexported.js b/tsc/testdata/baselines/reference/compiler/mergeMultipleInterfacesReexported.js index 97398ee4f769f..3492b49fb6efb 100644 --- a/tsc/testdata/baselines/reference/compiler/mergeMultipleInterfacesReexported.js +++ b/tsc/testdata/baselines/reference/compiler/mergeMultipleInterfacesReexported.js @@ -49,7 +49,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./eventList"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesInterfaceMergeOfReexport.js b/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesInterfaceMergeOfReexport.js index d89dda1b7f2ef..3a5e8b8222437 100644 --- a/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesInterfaceMergeOfReexport.js +++ b/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesInterfaceMergeOfReexport.js @@ -39,7 +39,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./file"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceEnumMergeOfReexport.js b/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceEnumMergeOfReexport.js index 57ed1afddb364..ab9cbf9f1fca4 100644 --- a/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceEnumMergeOfReexport.js +++ b/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceEnumMergeOfReexport.js @@ -44,7 +44,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./file"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceMergeOfReexport.js b/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceMergeOfReexport.js index 5106f636c1a01..451063309cdfb 100644 --- a/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceMergeOfReexport.js +++ b/tsc/testdata/baselines/reference/compiler/moduleAugmentationDoesNamespaceMergeOfReexport.js @@ -43,7 +43,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./file"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/moduleAugmentationEnumClassMergeOfReexportIsError.js b/tsc/testdata/baselines/reference/compiler/moduleAugmentationEnumClassMergeOfReexportIsError.js index 50b6c2cf05c79..48650ac85c994 100644 --- a/tsc/testdata/baselines/reference/compiler/moduleAugmentationEnumClassMergeOfReexportIsError.js +++ b/tsc/testdata/baselines/reference/compiler/moduleAugmentationEnumClassMergeOfReexportIsError.js @@ -39,7 +39,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./file"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/moduleDeclarationExportStarShadowingGlobalIsNameable.js b/tsc/testdata/baselines/reference/compiler/moduleDeclarationExportStarShadowingGlobalIsNameable.js index 05a55dc77c384..6841b7029ae58 100644 --- a/tsc/testdata/baselines/reference/compiler/moduleDeclarationExportStarShadowingGlobalIsNameable.js +++ b/tsc/testdata/baselines/reference/compiler/moduleDeclarationExportStarShadowingGlobalIsNameable.js @@ -42,7 +42,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./account"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings1.js b/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings1.js index 3264e89dbbf53..b3422dc9fa045 100644 --- a/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings1.js +++ b/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings1.js @@ -29,7 +29,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./c"), exports); @@ -47,7 +47,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./b"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings2.js b/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings2.js index 7c9730ce20e3f..d03e94b78f472 100644 --- a/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings2.js +++ b/tsc/testdata/baselines/reference/compiler/moduleSameValueDuplicateExportedBindings2.js @@ -43,7 +43,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./b"), exports); diff --git a/tsc/testdata/baselines/reference/compiler/symbolLinkDeclarationEmitModuleNames.js b/tsc/testdata/baselines/reference/compiler/symbolLinkDeclarationEmitModuleNames.js index f72870eada60e..c053c9a2a3515 100644 --- a/tsc/testdata/baselines/reference/compiler/symbolLinkDeclarationEmitModuleNames.js +++ b/tsc/testdata/baselines/reference/compiler/symbolLinkDeclarationEmitModuleNames.js @@ -51,7 +51,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./src/value-promise"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/ambientShorthand_reExport.js b/tsc/testdata/baselines/reference/conformance/ambientShorthand_reExport.js index 34cb38935efce..487427fb95b65 100644 --- a/tsc/testdata/baselines/reference/conformance/ambientShorthand_reExport.js +++ b/tsc/testdata/baselines/reference/conformance/ambientShorthand_reExport.js @@ -36,7 +36,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("jquery"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace1.js b/tsc/testdata/baselines/reference/conformance/exportNamespace1.js index e06c79acfb07d..c38449aa1a0c6 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace1.js +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace1.js @@ -38,7 +38,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./b"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace5.js b/tsc/testdata/baselines/reference/conformance/exportNamespace5.js index 327180ef339c2..33cd4e76b26b7 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace5.js +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace5.js @@ -65,7 +65,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./a"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace6.js b/tsc/testdata/baselines/reference/conformance/exportNamespace6.js index 36cd8e08a94d8..0a9b15fc5b944 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace6.js +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace6.js @@ -42,7 +42,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./b"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace8.errors.txt b/tsc/testdata/baselines/reference/conformance/exportNamespace8.errors.txt index 8ee301e187189..396b33b3c3bbc 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace8.errors.txt +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace8.errors.txt @@ -1,4 +1,4 @@ -/c.ts(2,1): error TS2308: Module "./a" has already exported a member named 'B'. Consider explicitly re-exporting to resolve the ambiguity. +/d.ts(1,13): error TS2308: Module "/c" has already exported a member named 'B'. Consider explicitly re-exporting to resolve the ambiguity. /d.ts(2,16): error TS1362: 'A' cannot be used as a value because it was exported using 'export type'. @@ -10,14 +10,14 @@ export class B {} export class C {} -==== /c.ts (1 errors) ==== +==== /c.ts (0 errors) ==== export type * from "./a"; export * from "./b"; // Collision error - ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: Module "./a" has already exported a member named 'B'. Consider explicitly re-exporting to resolve the ambiguity. -==== /d.ts (1 errors) ==== +==== /d.ts (2 errors) ==== import { A, B, C } from "./c"; + ~ +!!! error TS2308: Module "/c" has already exported a member named 'B'. Consider explicitly re-exporting to resolve the ambiguity. let _: A = new A(); // Error ~ !!! error TS1362: 'A' cannot be used as a value because it was exported using 'export type'. diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace8.js b/tsc/testdata/baselines/reference/conformance/exportNamespace8.js index 188abb9396df6..631ecddf7b23d 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace8.js +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace8.js @@ -53,7 +53,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./b"), exports); // Collision error diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace8.types b/tsc/testdata/baselines/reference/conformance/exportNamespace8.types index 555c11804907d..f1fc31172b30c 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace8.types +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace8.types @@ -22,7 +22,7 @@ export * from "./b"; // Collision error === /d.ts === import { A, B, C } from "./c"; >A : typeof A ->B : typeof B +>B : any >C : typeof C let _: A = new A(); // Error @@ -31,9 +31,9 @@ let _: A = new A(); // Error >A : typeof A let __: B = new B(); // Ok ->__ : B ->new B() : B ->B : typeof B +>__ : any +>new B() : any +>B : any let ___: C = new C(); // Ok >___ : C diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace9.errors.txt b/tsc/testdata/baselines/reference/conformance/exportNamespace9.errors.txt index a7df9f03bd748..2fb3d1bf7cf18 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace9.errors.txt +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace9.errors.txt @@ -1,5 +1,4 @@ -/f.ts(2,1): error TS2308: Module "./e" has already exported a member named 'A'. Consider explicitly re-exporting to resolve the ambiguity. -/g.ts(3,10): error TS2749: 'A' refers to a value, but is being used as a type here. Did you mean 'typeof A'? +/g.ts(1,10): error TS2308: Module "/f" has already exported a member named 'A'. Consider explicitly re-exporting to resolve the ambiguity. ==== /a.ts (0 errors) ==== @@ -21,16 +20,14 @@ ==== /e.ts (0 errors) ==== export const A = 1; -==== /f.ts (1 errors) ==== +==== /f.ts (0 errors) ==== export * from "./e"; export type * from "./a"; // Collision error - ~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: Module "./e" has already exported a member named 'A'. Consider explicitly re-exporting to resolve the ambiguity. ==== /g.ts (1 errors) ==== import { A } from "./f"; + ~ +!!! error TS2308: Module "/f" has already exported a member named 'A'. Consider explicitly re-exporting to resolve the ambiguity. A; type _ = A; // Follow-on from collision error - ~ -!!! error TS2749: 'A' refers to a value, but is being used as a type here. Did you mean 'typeof A'? \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace9.js b/tsc/testdata/baselines/reference/conformance/exportNamespace9.js index 04bc178b522ec..4bad60b6724d1 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace9.js +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace9.js @@ -65,7 +65,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./e"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace9.symbols b/tsc/testdata/baselines/reference/conformance/exportNamespace9.symbols index 56b40c6fc6f6c..09c760a67e533 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace9.symbols +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace9.symbols @@ -47,5 +47,5 @@ A; type _ = A; // Follow-on from collision error >_ : Symbol(_, Decl(g.ts, 1, 2)) ->A : Symbol(A) +>A : Symbol(A, Decl(g.ts, 0, 8)) diff --git a/tsc/testdata/baselines/reference/conformance/exportNamespace9.types b/tsc/testdata/baselines/reference/conformance/exportNamespace9.types index de7d19845b861..a1119fe128f15 100644 --- a/tsc/testdata/baselines/reference/conformance/exportNamespace9.types +++ b/tsc/testdata/baselines/reference/conformance/exportNamespace9.types @@ -41,11 +41,11 @@ export type * from "./a"; // Collision error === /g.ts === import { A } from "./f"; ->A : 1 +>A : any A; ->A : 1 +>A : any type _ = A; // Follow-on from collision error ->_ : A +>_ : any diff --git a/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).errors.txt b/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).errors.txt index 4402aed8a528c..ecb5dc8bcd7b8 100644 --- a/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).errors.txt +++ b/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).errors.txt @@ -1,6 +1,5 @@ -main.ts(1,8): error TS1192: Module '"t4"' has no default export. -t4.ts(3,1): error TS2308: Module "./t1" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. -t4.ts(3,1): error TS2308: Module "./t1" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +main.ts(1,17): error TS2308: Module "t4" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +main.ts(1,20): error TS2308: Module "t4" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== t1.ts (0 errors) ==== @@ -17,20 +16,17 @@ t4.ts(3,1): error TS2308: Module "./t1" has already exported a member named 'y'. var z = "z"; export { x, y, z }; -==== t4.ts (2 errors) ==== +==== t4.ts (0 errors) ==== export * from "./t1"; export * from "./t2"; export * from "./t3"; - ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: Module "./t1" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. - ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: Module "./t1" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. -==== main.ts (1 errors) ==== +==== main.ts (2 errors) ==== import hello, { x, y, z, foo } from "./t4"; - ~~~~~ -!!! error TS1192: Module '"t4"' has no default export. -!!! related TS1195 t4.ts:2:1: 'export *' does not re-export a default. + ~ +!!! error TS2308: Module "t4" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. + ~ +!!! error TS2308: Module "t4" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. hello; x; y; diff --git a/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).js b/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).js index f1467d3ce7de2..557ebfb55c447 100644 --- a/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).js +++ b/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).js @@ -64,7 +64,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./t1"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).types b/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).types index e6e84d77312b9..9de9dae22af3c 100644 --- a/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).types +++ b/tsc/testdata/baselines/reference/conformance/exportStar(target=es2015).types @@ -40,20 +40,20 @@ export * from "./t3"; === main.ts === import hello, { x, y, z, foo } from "./t4"; ->hello : any ->x : number ->y : number +>hello : "hello" +>x : any +>y : any >z : string >foo : () => void hello; ->hello : any +>hello : "hello" x; ->x : number +>x : any y; ->y : number +>y : any z; >z : string diff --git a/tsc/testdata/baselines/reference/conformance/importAssertion2(module=commonjs).js b/tsc/testdata/baselines/reference/conformance/importAssertion2(module=commonjs).js index 947aea50dd696..7bfffeb678716 100644 --- a/tsc/testdata/baselines/reference/conformance/importAssertion2(module=commonjs).js +++ b/tsc/testdata/baselines/reference/conformance/importAssertion2(module=commonjs).js @@ -40,7 +40,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( o["default"] = v; }); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { diff --git a/tsc/testdata/baselines/reference/conformance/importAttributes2(module=commonjs).js b/tsc/testdata/baselines/reference/conformance/importAttributes2(module=commonjs).js index 293da2aab76dd..b551c00f008ad 100644 --- a/tsc/testdata/baselines/reference/conformance/importAttributes2(module=commonjs).js +++ b/tsc/testdata/baselines/reference/conformance/importAttributes2(module=commonjs).js @@ -40,7 +40,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( o["default"] = v; }); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { diff --git a/tsc/testdata/baselines/reference/conformance/inlineJsxFactoryDeclarations.js b/tsc/testdata/baselines/reference/conformance/inlineJsxFactoryDeclarations.js index 5e568b5ba5e29..00dd388e062c1 100644 --- a/tsc/testdata/baselines/reference/conformance/inlineJsxFactoryDeclarations.js +++ b/tsc/testdata/baselines/reference/conformance/inlineJsxFactoryDeclarations.js @@ -113,7 +113,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); /** @jsx dom */ diff --git a/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportForms(target=es2015).js b/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportForms(target=es2015).js index 6767632cfbc83..6905cca5de445 100644 --- a/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportForms(target=es2015).js +++ b/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportForms(target=es2015).js @@ -84,7 +84,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./cls"), exports); @@ -102,7 +102,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./func"), exports); diff --git a/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportFormsErr(target=es2015).js b/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportFormsErr(target=es2015).js index 87f0b0da7af4f..4047c26c15987 100644 --- a/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportFormsErr(target=es2015).js +++ b/tsc/testdata/baselines/reference/conformance/jsDeclarationsExportFormsErr(target=es2015).js @@ -84,7 +84,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./cls"), exports); diff --git a/tsc/testdata/baselines/reference/tsc/declarationEmit/when-pkg-references-sibling-package-through-indirect-symlink.js b/tsc/testdata/baselines/reference/tsc/declarationEmit/when-pkg-references-sibling-package-through-indirect-symlink.js index 7c1ae17bd0c5d..84c9c08357d40 100644 --- a/tsc/testdata/baselines/reference/tsc/declarationEmit/when-pkg-references-sibling-package-through-indirect-symlink.js +++ b/tsc/testdata/baselines/reference/tsc/declarationEmit/when-pkg-references-sibling-package-through-indirect-symlink.js @@ -130,7 +130,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + for (var p in m) if (p !== "__esModule" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require("./keys"), exports); diff --git a/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts b/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts index 1fbaf4c18160a..4612ff889eea4 100644 --- a/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts +++ b/tsc/testdata/tests/cases/compiler/exportStarDefaultTypes.ts @@ -25,7 +25,8 @@ export type { default, Shared } from "./first"; // @filename: consumer.ts import type First from "./single"; import type Resolved from "./resolved"; -import type Conflict, { Shared } from "./ambiguous"; +import type Conflict from "./ambiguous"; +import type { Shared } from "./ambiguous"; import type * as ns from "./ambiguous"; export type { default, Shared } from "./ambiguous"; const first: First = { first: 1 }; From af12bb4f8f906b8ec19fe26257e7c9e279ab51ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 12 Oct 2026 06:38:00 +0000 Subject: [PATCH 5/5] Regenerate API enums for export-conflict check flag Co-authored-by: DanielRosenwasser <972891+DanielRosenwasser@users.noreply.github.com> --- packages/typescript/src/enums/checkFlags.enum.ts | 1 + packages/typescript/src/enums/checkFlags.ts | 1 + tsc/internal/api/enum_values_generated.go | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/typescript/src/enums/checkFlags.enum.ts b/packages/typescript/src/enums/checkFlags.enum.ts index c7fc87069accb..3fc05d3126c5a 100644 --- a/packages/typescript/src/enums/checkFlags.enum.ts +++ b/packages/typescript/src/enums/checkFlags.enum.ts @@ -29,6 +29,7 @@ export enum CheckFlags { IsDiscriminantComputed = 1 << 24, IsDiscriminant = 1 << 25, IndexSymbol = 1 << 26, + ExportConflict = 1 << 27, Synthetic = SyntheticProperty | SyntheticMethod, NonUniformAndLiteral = HasNonUniformType | HasLiteralType, Partial = ReadPartial | WritePartial, diff --git a/packages/typescript/src/enums/checkFlags.ts b/packages/typescript/src/enums/checkFlags.ts index 5b4a963299675..2023697b9d441 100644 --- a/packages/typescript/src/enums/checkFlags.ts +++ b/packages/typescript/src/enums/checkFlags.ts @@ -29,6 +29,7 @@ export var CheckFlags: any; CheckFlags[CheckFlags["IsDiscriminantComputed"] = 16777216] = "IsDiscriminantComputed"; CheckFlags[CheckFlags["IsDiscriminant"] = 33554432] = "IsDiscriminant"; CheckFlags[CheckFlags["IndexSymbol"] = 67108864] = "IndexSymbol"; + CheckFlags[CheckFlags["ExportConflict"] = 134217728] = "ExportConflict"; CheckFlags[CheckFlags["Synthetic"] = 6] = "Synthetic"; CheckFlags[CheckFlags["NonUniformAndLiteral"] = 192] = "NonUniformAndLiteral"; CheckFlags[CheckFlags["Partial"] = 48] = "Partial"; diff --git a/tsc/internal/api/enum_values_generated.go b/tsc/internal/api/enum_values_generated.go index f90d2892104c0..cf66ad489058a 100644 --- a/tsc/internal/api/enum_values_generated.go +++ b/tsc/internal/api/enum_values_generated.go @@ -124,6 +124,7 @@ func main() { "IsDiscriminantComputed": toInt32(ast.CheckFlagsIsDiscriminantComputed), "IsDiscriminant": toInt32(ast.CheckFlagsIsDiscriminant), "IndexSymbol": toInt32(ast.CheckFlagsIndexSymbol), + "ExportConflict": toInt32(ast.CheckFlagsExportConflict), "Synthetic": toInt32(ast.CheckFlagsSynthetic), "NonUniformAndLiteral": toInt32(ast.CheckFlagsNonUniformAndLiteral), "Partial": toInt32(ast.CheckFlagsPartial),