diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts
index e4423773555..1a692572802 100644
--- a/src/compiler/checker.ts
+++ b/src/compiler/checker.ts
@@ -13729,7 +13729,26 @@ namespace ts {
let declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration;
error(declaration, Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements);
}
- getExportsOfModule(moduleSymbol); // Checks for export * conflicts
+ let exports = getExportsOfModule(moduleSymbol); // Checks for export * conflicts
+ for (let id in exports) {
+ if (id === "__export") continue;
+ if (!(exports[id].flags & SymbolFlags.Namespace || exports[id].flags & SymbolFlags.Interface) && exports[id].declarations.length > 1) { // 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, and interfaces)
+ let exportedDeclarations: Declaration[] = [];
+ for (let declaration of exports[id].declarations) {
+ if (declaration.kind === SyntaxKind.FunctionDeclaration) {
+ if (!(declaration as FunctionDeclaration).body) {
+ continue;
+ }
+ }
+ exportedDeclarations.push(declaration);
+ }
+ if (exportedDeclarations.length > 1) {
+ for (let declaration of exportedDeclarations) {
+ diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Cannot_redeclare_exported_variable_0, id));
+ }
+ }
+ }
+ }
links.exportsChecked = true;
}
}
diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json
index 0f14ea0b021..51fd7a1fa2e 100644
--- a/src/compiler/diagnosticMessages.json
+++ b/src/compiler/diagnosticMessages.json
@@ -892,6 +892,10 @@
"category": "Error",
"code": 2322
},
+ "Cannot redeclare exported variable '{0}'.": {
+ "category": "Error",
+ "code": 2323
+ },
"Property '{0}' is missing in type '{1}'.": {
"category": "Error",
"code": 2324
diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt
index 76c424a74d4..97c66a17960 100644
--- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt
+++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt
@@ -1,15 +1,21 @@
tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(2,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(3,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(3,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'.
+tests/cases/compiler/client.ts(4,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(5,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(5,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'.
+tests/cases/compiler/client.ts(6,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(7,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(7,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'.
tests/cases/compiler/client.ts(7,37): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'.
+tests/cases/compiler/client.ts(8,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(9,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'.
+tests/cases/compiler/client.ts(10,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'.
+tests/cases/compiler/client.ts(12,12): error TS2323: Cannot redeclare exported variable 'x1'.
==== tests/cases/compiler/server.ts (0 errors) ====
@@ -17,23 +23,29 @@ tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compil
var a = 10;
export default a;
-==== tests/cases/compiler/client.ts (12 errors) ====
+==== tests/cases/compiler/client.ts (18 errors) ====
export import defaultBinding1, { } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var x1: number = defaultBinding1;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding2, { a } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
~
!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'.
export var x1: number = defaultBinding2;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding3, { a as b } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
~
!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'.
export var x1: number = defaultBinding3;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding4, { x, a as y } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
@@ -42,16 +54,22 @@ tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compil
~
!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'.
export var x1: number = defaultBinding4;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding5, { x as z, } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
~
!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'.
export var x1: number = defaultBinding5;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding6, { m, } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
~
!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'.
export var x1: number = defaultBinding6;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
\ No newline at end of file
diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt
index 83f91787b87..859fe59b47f 100644
--- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt
+++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt
@@ -1,9 +1,15 @@
tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(2,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(3,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(4,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(5,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(6,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(7,12): error TS2323: Cannot redeclare exported variable 'x1'.
+tests/cases/compiler/client.ts(8,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(10,12): error TS2323: Cannot redeclare exported variable 'x1'.
tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(12,12): error TS2323: Cannot redeclare exported variable 'x1'.
==== tests/cases/compiler/server.ts (0 errors) ====
@@ -13,7 +19,7 @@ tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot
export var m = a;
export default {};
-==== tests/cases/compiler/client.ts (6 errors) ====
+==== tests/cases/compiler/client.ts (12 errors) ====
export import defaultBinding1, { } from "server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
@@ -21,21 +27,33 @@ tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var x1: number = a;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding3, { a as b } from "server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var x1: number = b;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding4, { x, a as y } from "server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var x1: number = x;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export var x1: number = y;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding5, { x as z, } from "server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var x1: number = z;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
export import defaultBinding6, { m, } from "server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var x1: number = m;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'x1'.
\ No newline at end of file
diff --git a/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt
index a5a4301683e..3b2d6b0cbd0 100644
--- a/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt
+++ b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt
@@ -1,11 +1,21 @@
tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(2,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(3,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
tests/cases/compiler/client.ts(4,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(5,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
tests/cases/compiler/client.ts(6,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(7,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
+tests/cases/compiler/client.ts(8,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(10,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(12,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
tests/cases/compiler/client.ts(13,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(14,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
+tests/cases/compiler/client.ts(15,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
tests/cases/compiler/client.ts(16,1): error TS1191: An import declaration cannot have modifiers.
+tests/cases/compiler/client.ts(17,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
+tests/cases/compiler/client.ts(18,12): error TS2323: Cannot redeclare exported variable 'xxxx'.
tests/cases/compiler/client.ts(19,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(21,1): error TS1191: An import declaration cannot have modifiers.
tests/cases/compiler/client.ts(25,1): error TS1191: An import declaration cannot have modifiers.
@@ -23,7 +33,7 @@ tests/cases/compiler/client.ts(26,1): error TS1191: An import declaration cannot
export var z2 = 10;
export var aaaa = 10;
-==== tests/cases/compiler/client.ts (12 errors) ====
+==== tests/cases/compiler/client.ts (22 errors) ====
export import { } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
@@ -31,33 +41,53 @@ tests/cases/compiler/client.ts(26,1): error TS1191: An import declaration cannot
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var xxxx = a;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export import { a as b } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var xxxx = b;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export import { x, a as y } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var xxxx = x;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export var xxxx = y;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export import { x as z, } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var xxxx = z;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export import { m, } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var xxxx = m;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export import { a1, x1 } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var xxxx = a1;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export var xxxx = x1;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export import { a1 as a11, x1 as x11 } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
export var xxxx = a11;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export var xxxx = x11;
+ ~~~~
+!!! error TS2323: Cannot redeclare exported variable 'xxxx'.
export import { z1 } from "./server";
~~~~~~
!!! error TS1191: An import declaration cannot have modifiers.
diff --git a/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt b/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt
new file mode 100644
index 00000000000..67ab99eee4b
--- /dev/null
+++ b/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt
@@ -0,0 +1,44 @@
+tests/cases/compiler/moduleDuplicateIdentifiers.ts(1,12): error TS2323: Cannot redeclare exported variable 'Foo'.
+tests/cases/compiler/moduleDuplicateIdentifiers.ts(2,12): error TS2323: Cannot redeclare exported variable 'Foo'.
+tests/cases/compiler/moduleDuplicateIdentifiers.ts(20,14): error TS2300: Duplicate identifier 'Kettle'.
+tests/cases/compiler/moduleDuplicateIdentifiers.ts(24,14): error TS2300: Duplicate identifier 'Kettle'.
+
+
+==== tests/cases/compiler/moduleDuplicateIdentifiers.ts (4 errors) ====
+ export var Foo = 2;
+ ~~~
+!!! error TS2323: Cannot redeclare exported variable 'Foo'.
+ export var Foo = 42; // Should error
+ ~~~
+!!! error TS2323: Cannot redeclare exported variable 'Foo'.
+
+ export interface Bar {
+ _brand1: any;
+ }
+
+ export interface Bar {
+ _brand2: any;
+ }
+
+ export namespace FooBar {
+ export var member1 = 2;
+ }
+
+ export namespace FooBar {
+ export var member2 = 42;
+ }
+
+ export class Kettle {
+ ~~~~~~
+!!! error TS2300: Duplicate identifier 'Kettle'.
+ member1 = 2;
+ }
+
+ export class Kettle {
+ ~~~~~~
+!!! error TS2300: Duplicate identifier 'Kettle'.
+ member2 = 42;
+ }
+
+ export var Pot = 2;
+ Pot = 42; // Shouldn't error
\ No newline at end of file
diff --git a/tests/baselines/reference/moduleDuplicateIdentifiers.js b/tests/baselines/reference/moduleDuplicateIdentifiers.js
new file mode 100644
index 00000000000..e428ccd3c81
--- /dev/null
+++ b/tests/baselines/reference/moduleDuplicateIdentifiers.js
@@ -0,0 +1,58 @@
+//// [moduleDuplicateIdentifiers.ts]
+export var Foo = 2;
+export var Foo = 42; // Should error
+
+export interface Bar {
+ _brand1: any;
+}
+
+export interface Bar {
+ _brand2: any;
+}
+
+export namespace FooBar {
+ export var member1 = 2;
+}
+
+export namespace FooBar {
+ export var member2 = 42;
+}
+
+export class Kettle {
+ member1 = 2;
+}
+
+export class Kettle {
+ member2 = 42;
+}
+
+export var Pot = 2;
+Pot = 42; // Shouldn't error
+
+//// [moduleDuplicateIdentifiers.js]
+exports.Foo = 2;
+exports.Foo = 42; // Should error
+var FooBar;
+(function (FooBar) {
+ FooBar.member1 = 2;
+})(FooBar = exports.FooBar || (exports.FooBar = {}));
+var FooBar;
+(function (FooBar) {
+ FooBar.member2 = 42;
+})(FooBar = exports.FooBar || (exports.FooBar = {}));
+var Kettle = (function () {
+ function Kettle() {
+ this.member1 = 2;
+ }
+ return Kettle;
+})();
+exports.Kettle = Kettle;
+var Kettle = (function () {
+ function Kettle() {
+ this.member2 = 42;
+ }
+ return Kettle;
+})();
+exports.Kettle = Kettle;
+exports.Pot = 2;
+exports.Pot = 42; // Shouldn't error
diff --git a/tests/baselines/reference/multipleDefaultExports02.errors.txt b/tests/baselines/reference/multipleDefaultExports02.errors.txt
index 235f8f7c3e3..3f27db47c94 100644
--- a/tests/baselines/reference/multipleDefaultExports02.errors.txt
+++ b/tests/baselines/reference/multipleDefaultExports02.errors.txt
@@ -1,17 +1,23 @@
+tests/cases/conformance/es6/modules/m1.ts(2,25): error TS2323: Cannot redeclare exported variable 'default'.
tests/cases/conformance/es6/modules/m1.ts(2,25): error TS2393: Duplicate function implementation.
+tests/cases/conformance/es6/modules/m1.ts(6,25): error TS2323: Cannot redeclare exported variable 'default'.
tests/cases/conformance/es6/modules/m1.ts(6,25): error TS2393: Duplicate function implementation.
-==== tests/cases/conformance/es6/modules/m1.ts (2 errors) ====
+==== tests/cases/conformance/es6/modules/m1.ts (4 errors) ====
export default function foo() {
~~~
+!!! error TS2323: Cannot redeclare exported variable 'default'.
+ ~~~
!!! error TS2393: Duplicate function implementation.
}
export default function bar() {
~~~
+!!! error TS2323: Cannot redeclare exported variable 'default'.
+ ~~~
!!! error TS2393: Duplicate function implementation.
}
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.errors.txt b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.errors.txt
new file mode 100644
index 00000000000..52d6c4c0fff
--- /dev/null
+++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.errors.txt
@@ -0,0 +1,55 @@
+tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts(15,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'.
+tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts(17,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'.
+
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts (2 errors) ====
+ ///
+ ///
+ // Privacy errors - importing private elements
+ export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require");
+ export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1");
+ export import im_public_mi_public = require("m");
+ export import im_public_mu_public = require("m2");
+
+ // Usage of privacy error imports
+ var privateUse_im_public_mi_private = new im_public_mi_private.c_public();
+ export var publicUse_im_public_mi_private = new im_public_mi_private.c_public();
+ var privateUse_im_public_mu_private = new im_public_mu_private.c_public();
+ export var publicUse_im_public_mu_private = new im_public_mu_private.c_public();
+ var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
+ export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'.
+ var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
+ export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'.
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts (0 errors) ====
+ // Public elements
+ export class c_public {
+ foo: string;
+ }
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts (0 errors) ====
+ export class c_public {
+ bar: string;
+ }
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts (0 errors) ====
+ // private elements
+ // Export - Error ambient modules allowed only in global
+ declare module 'm' {
+ export class c_private {
+ baz: string;
+ }
+ }
+
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts (0 errors) ====
+ declare module 'm2' {
+ export class c_private {
+ bing: string;
+ }
+ }
+
\ No newline at end of file
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols
deleted file mode 100644
index 2dcddbbfa06..00000000000
--- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols
+++ /dev/null
@@ -1,105 +0,0 @@
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts ===
-///
-///
-// Privacy errors - importing private elements
-export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require");
->im_public_mi_private : Symbol(im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 0, 0))
-
-export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1");
->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111))
-
-export import im_public_mi_public = require("m");
->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112))
-
-export import im_public_mu_public = require("m2");
->im_public_mu_public : Symbol(im_public_mu_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 5, 49))
-
-// Usage of privacy error imports
-var privateUse_im_public_mi_private = new im_public_mi_private.c_public();
->privateUse_im_public_mi_private : Symbol(privateUse_im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 9, 3))
->im_public_mi_private.c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0))
->im_public_mi_private : Symbol(im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 0, 0))
->c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0))
-
-export var publicUse_im_public_mi_private = new im_public_mi_private.c_public();
->publicUse_im_public_mi_private : Symbol(publicUse_im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 10, 10))
->im_public_mi_private.c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0))
->im_public_mi_private : Symbol(im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 0, 0))
->c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0))
-
-var privateUse_im_public_mu_private = new im_public_mu_private.c_public();
->privateUse_im_public_mu_private : Symbol(privateUse_im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 11, 3))
->im_public_mu_private.c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0))
->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111))
->c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0))
-
-export var publicUse_im_public_mu_private = new im_public_mu_private.c_public();
->publicUse_im_public_mu_private : Symbol(publicUse_im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 12, 10))
->im_public_mu_private.c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0))
->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111))
->c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0))
-
-var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
->privateUse_im_public_mi_public : Symbol(privateUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 15, 3))
->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112))
->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
-
-export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
->publicUse_im_public_mi_public : Symbol(publicUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 16, 10))
->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112))
->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
-
-var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
->privateUse_im_public_mi_public : Symbol(privateUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 15, 3))
->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112))
->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
-
-export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
->publicUse_im_public_mi_public : Symbol(publicUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 16, 10))
->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112))
->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts ===
-// Public elements
-export class c_public {
->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0))
-
- foo: string;
->foo : Symbol(foo, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 1, 23))
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts ===
-export class c_public {
->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0))
-
- bar: string;
->bar : Symbol(bar, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 23))
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts ===
-// private elements
-// Export - Error ambient modules allowed only in global
-declare module 'm' {
- export class c_private {
->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20))
-
- baz: string;
->baz : Symbol(baz, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 3, 28))
- }
-}
-
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts ===
-declare module 'm2' {
- export class c_private {
->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts, 0, 21))
-
- bing: string;
->bing : Symbol(bing, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts, 1, 28))
- }
-}
-
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types
deleted file mode 100644
index 5c082bef5de..00000000000
--- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types
+++ /dev/null
@@ -1,113 +0,0 @@
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts ===
-///
-///
-// Privacy errors - importing private elements
-export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require");
->im_public_mi_private : typeof im_public_mi_private
-
-export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1");
->im_public_mu_private : typeof im_public_mu_private
-
-export import im_public_mi_public = require("m");
->im_public_mi_public : typeof im_public_mi_public
-
-export import im_public_mu_public = require("m2");
->im_public_mu_public : typeof im_public_mu_public
-
-// Usage of privacy error imports
-var privateUse_im_public_mi_private = new im_public_mi_private.c_public();
->privateUse_im_public_mi_private : im_public_mi_private.c_public
->new im_public_mi_private.c_public() : im_public_mi_private.c_public
->im_public_mi_private.c_public : typeof im_public_mi_private.c_public
->im_public_mi_private : typeof im_public_mi_private
->c_public : typeof im_public_mi_private.c_public
-
-export var publicUse_im_public_mi_private = new im_public_mi_private.c_public();
->publicUse_im_public_mi_private : im_public_mi_private.c_public
->new im_public_mi_private.c_public() : im_public_mi_private.c_public
->im_public_mi_private.c_public : typeof im_public_mi_private.c_public
->im_public_mi_private : typeof im_public_mi_private
->c_public : typeof im_public_mi_private.c_public
-
-var privateUse_im_public_mu_private = new im_public_mu_private.c_public();
->privateUse_im_public_mu_private : im_public_mu_private.c_public
->new im_public_mu_private.c_public() : im_public_mu_private.c_public
->im_public_mu_private.c_public : typeof im_public_mu_private.c_public
->im_public_mu_private : typeof im_public_mu_private
->c_public : typeof im_public_mu_private.c_public
-
-export var publicUse_im_public_mu_private = new im_public_mu_private.c_public();
->publicUse_im_public_mu_private : im_public_mu_private.c_public
->new im_public_mu_private.c_public() : im_public_mu_private.c_public
->im_public_mu_private.c_public : typeof im_public_mu_private.c_public
->im_public_mu_private : typeof im_public_mu_private
->c_public : typeof im_public_mu_private.c_public
-
-var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
->privateUse_im_public_mi_public : im_public_mi_public.c_private
->new im_public_mi_public.c_private() : im_public_mi_public.c_private
->im_public_mi_public.c_private : typeof im_public_mi_public.c_private
->im_public_mi_public : typeof im_public_mi_public
->c_private : typeof im_public_mi_public.c_private
-
-export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
->publicUse_im_public_mi_public : im_public_mi_public.c_private
->new im_public_mi_public.c_private() : im_public_mi_public.c_private
->im_public_mi_public.c_private : typeof im_public_mi_public.c_private
->im_public_mi_public : typeof im_public_mi_public
->c_private : typeof im_public_mi_public.c_private
-
-var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
->privateUse_im_public_mi_public : im_public_mi_public.c_private
->new im_public_mi_public.c_private() : im_public_mi_public.c_private
->im_public_mi_public.c_private : typeof im_public_mi_public.c_private
->im_public_mi_public : typeof im_public_mi_public
->c_private : typeof im_public_mi_public.c_private
-
-export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
->publicUse_im_public_mi_public : im_public_mi_public.c_private
->new im_public_mi_public.c_private() : im_public_mi_public.c_private
->im_public_mi_public.c_private : typeof im_public_mi_public.c_private
->im_public_mi_public : typeof im_public_mi_public
->c_private : typeof im_public_mi_public.c_private
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts ===
-// Public elements
-export class c_public {
->c_public : c_public
-
- foo: string;
->foo : string
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts ===
-export class c_public {
->c_public : c_public
-
- bar: string;
->bar : string
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts ===
-// private elements
-// Export - Error ambient modules allowed only in global
-declare module 'm' {
- export class c_private {
->c_private : c_private
-
- baz: string;
->baz : string
- }
-}
-
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts ===
-declare module 'm2' {
- export class c_private {
->c_private : c_private
-
- bing: string;
->bing : string
- }
-}
-
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.errors.txt b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.errors.txt
new file mode 100644
index 00000000000..cc81762bce3
--- /dev/null
+++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.errors.txt
@@ -0,0 +1,55 @@
+tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts(15,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'.
+tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts(17,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'.
+
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts (2 errors) ====
+ ///
+ ///
+ // Privacy errors - importing private elements
+ import im_private_mi_private = require("m");
+ import im_private_mu_private = require("m2");
+ import im_private_mi_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require");
+ import im_private_mu_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require1");
+
+ // Usage of privacy error imports
+ var privateUse_im_private_mi_private = new im_private_mi_private.c_private();
+ export var publicUse_im_private_mi_private = new im_private_mi_private.c_private();
+ var privateUse_im_private_mu_private = new im_private_mu_private.c_private();
+ export var publicUse_im_private_mu_private = new im_private_mu_private.c_private();
+ var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
+ export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'.
+ var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
+ export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'.
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts (0 errors) ====
+
+ // Public elements
+ export class c_public {
+ foo: string;
+ }
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts (0 errors) ====
+ export class c_public {
+ bar: string;
+ }
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts (0 errors) ====
+ // private elements
+ // Export - Error ambient modules allowed only in global
+ declare module 'm' {
+ export class c_private {
+ baz: string
+ }
+ }
+
+==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts (0 errors) ====
+ declare module 'm2' {
+ export class c_private {
+ bing: string;
+ }
+ }
+
\ No newline at end of file
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.symbols b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.symbols
deleted file mode 100644
index e366538124f..00000000000
--- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.symbols
+++ /dev/null
@@ -1,105 +0,0 @@
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts ===
-///
-///
-// Privacy errors - importing private elements
-import im_private_mi_private = require("m");
->im_private_mi_private : Symbol(im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 0, 0))
-
-import im_private_mu_private = require("m2");
->im_private_mu_private : Symbol(im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 3, 44))
-
-import im_private_mi_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require");
->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45))
-
-import im_private_mu_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require1");
->im_private_mu_public : Symbol(im_private_mu_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 5, 105))
-
-// Usage of privacy error imports
-var privateUse_im_private_mi_private = new im_private_mi_private.c_private();
->privateUse_im_private_mi_private : Symbol(privateUse_im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 9, 3))
->im_private_mi_private.c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20))
->im_private_mi_private : Symbol(im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 0, 0))
->c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20))
-
-export var publicUse_im_private_mi_private = new im_private_mi_private.c_private();
->publicUse_im_private_mi_private : Symbol(publicUse_im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 10, 10))
->im_private_mi_private.c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20))
->im_private_mi_private : Symbol(im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 0, 0))
->c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20))
-
-var privateUse_im_private_mu_private = new im_private_mu_private.c_private();
->privateUse_im_private_mu_private : Symbol(privateUse_im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 11, 3))
->im_private_mu_private.c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21))
->im_private_mu_private : Symbol(im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 3, 44))
->c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21))
-
-export var publicUse_im_private_mu_private = new im_private_mu_private.c_private();
->publicUse_im_private_mu_private : Symbol(publicUse_im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 12, 10))
->im_private_mu_private.c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21))
->im_private_mu_private : Symbol(im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 3, 44))
->c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21))
-
-var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
->privateUse_im_private_mi_public : Symbol(privateUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 15, 3))
->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45))
->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
-
-export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
->publicUse_im_private_mi_public : Symbol(publicUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 16, 10))
->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45))
->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
-
-var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
->privateUse_im_private_mi_public : Symbol(privateUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 15, 3))
->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45))
->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
-
-export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
->publicUse_im_private_mi_public : Symbol(publicUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 16, 10))
->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45))
->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts ===
-
-// Public elements
-export class c_public {
->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0))
-
- foo: string;
->foo : Symbol(foo, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 2, 23))
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts ===
-export class c_public {
->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts, 0, 0))
-
- bar: string;
->bar : Symbol(bar, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts, 0, 23))
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts ===
-// private elements
-// Export - Error ambient modules allowed only in global
-declare module 'm' {
- export class c_private {
->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20))
-
- baz: string
->baz : Symbol(baz, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 3, 28))
- }
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts ===
-declare module 'm2' {
- export class c_private {
->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21))
-
- bing: string;
->bing : Symbol(bing, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 1, 28))
- }
-}
-
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types
deleted file mode 100644
index 437d35fb64a..00000000000
--- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types
+++ /dev/null
@@ -1,113 +0,0 @@
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts ===
-///
-///
-// Privacy errors - importing private elements
-import im_private_mi_private = require("m");
->im_private_mi_private : typeof im_private_mi_private
-
-import im_private_mu_private = require("m2");
->im_private_mu_private : typeof im_private_mu_private
-
-import im_private_mi_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require");
->im_private_mi_public : typeof im_private_mi_public
-
-import im_private_mu_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require1");
->im_private_mu_public : typeof im_private_mu_public
-
-// Usage of privacy error imports
-var privateUse_im_private_mi_private = new im_private_mi_private.c_private();
->privateUse_im_private_mi_private : im_private_mi_private.c_private
->new im_private_mi_private.c_private() : im_private_mi_private.c_private
->im_private_mi_private.c_private : typeof im_private_mi_private.c_private
->im_private_mi_private : typeof im_private_mi_private
->c_private : typeof im_private_mi_private.c_private
-
-export var publicUse_im_private_mi_private = new im_private_mi_private.c_private();
->publicUse_im_private_mi_private : im_private_mi_private.c_private
->new im_private_mi_private.c_private() : im_private_mi_private.c_private
->im_private_mi_private.c_private : typeof im_private_mi_private.c_private
->im_private_mi_private : typeof im_private_mi_private
->c_private : typeof im_private_mi_private.c_private
-
-var privateUse_im_private_mu_private = new im_private_mu_private.c_private();
->privateUse_im_private_mu_private : im_private_mu_private.c_private
->new im_private_mu_private.c_private() : im_private_mu_private.c_private
->im_private_mu_private.c_private : typeof im_private_mu_private.c_private
->im_private_mu_private : typeof im_private_mu_private
->c_private : typeof im_private_mu_private.c_private
-
-export var publicUse_im_private_mu_private = new im_private_mu_private.c_private();
->publicUse_im_private_mu_private : im_private_mu_private.c_private
->new im_private_mu_private.c_private() : im_private_mu_private.c_private
->im_private_mu_private.c_private : typeof im_private_mu_private.c_private
->im_private_mu_private : typeof im_private_mu_private
->c_private : typeof im_private_mu_private.c_private
-
-var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
->privateUse_im_private_mi_public : im_private_mi_public.c_public
->new im_private_mi_public.c_public() : im_private_mi_public.c_public
->im_private_mi_public.c_public : typeof im_private_mi_public.c_public
->im_private_mi_public : typeof im_private_mi_public
->c_public : typeof im_private_mi_public.c_public
-
-export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
->publicUse_im_private_mi_public : im_private_mi_public.c_public
->new im_private_mi_public.c_public() : im_private_mi_public.c_public
->im_private_mi_public.c_public : typeof im_private_mi_public.c_public
->im_private_mi_public : typeof im_private_mi_public
->c_public : typeof im_private_mi_public.c_public
-
-var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
->privateUse_im_private_mi_public : im_private_mi_public.c_public
->new im_private_mi_public.c_public() : im_private_mi_public.c_public
->im_private_mi_public.c_public : typeof im_private_mi_public.c_public
->im_private_mi_public : typeof im_private_mi_public
->c_public : typeof im_private_mi_public.c_public
-
-export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
->publicUse_im_private_mi_public : im_private_mi_public.c_public
->new im_private_mi_public.c_public() : im_private_mi_public.c_public
->im_private_mi_public.c_public : typeof im_private_mi_public.c_public
->im_private_mi_public : typeof im_private_mi_public
->c_public : typeof im_private_mi_public.c_public
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts ===
-
-// Public elements
-export class c_public {
->c_public : c_public
-
- foo: string;
->foo : string
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts ===
-export class c_public {
->c_public : c_public
-
- bar: string;
->bar : string
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts ===
-// private elements
-// Export - Error ambient modules allowed only in global
-declare module 'm' {
- export class c_private {
->c_private : c_private
-
- baz: string
->baz : string
- }
-}
-
-=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts ===
-declare module 'm2' {
- export class c_private {
->c_private : c_private
-
- bing: string;
->bing : string
- }
-}
-
diff --git a/tests/baselines/reference/typeofANonExportedType.errors.txt b/tests/baselines/reference/typeofANonExportedType.errors.txt
index d07468f62e1..0fb239f6aee 100644
--- a/tests/baselines/reference/typeofANonExportedType.errors.txt
+++ b/tests/baselines/reference/typeofANonExportedType.errors.txt
@@ -1,8 +1,10 @@
tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(2,1): error TS1148: Cannot compile modules unless the '--module' flag is provided.
+tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(20,12): error TS2323: Cannot redeclare exported variable 'r5'.
+tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(21,12): error TS2323: Cannot redeclare exported variable 'r5'.
tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(42,12): error TS2502: 'r12' is referenced directly or indirectly in its own type annotation.
-==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts (2 errors) ====
+==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts (4 errors) ====
var x = 1;
export var r1: typeof x;
~~~~~~~~~~~~~~~~~~~~~~~~
@@ -25,7 +27,11 @@ tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType
export var i: I;
var i2: I;
export var r5: typeof i;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'r5'.
export var r5: typeof i2;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'r5'.
module M {
export var foo = '';
diff --git a/tests/baselines/reference/typeofAnExportedType.errors.txt b/tests/baselines/reference/typeofAnExportedType.errors.txt
index cb6d8c68887..51dd7cf06b6 100644
--- a/tests/baselines/reference/typeofAnExportedType.errors.txt
+++ b/tests/baselines/reference/typeofAnExportedType.errors.txt
@@ -1,8 +1,10 @@
tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(1,1): error TS1148: Cannot compile modules unless the '--module' flag is provided.
+tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(20,12): error TS2323: Cannot redeclare exported variable 'r5'.
+tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(21,12): error TS2323: Cannot redeclare exported variable 'r5'.
tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(42,12): error TS2502: 'r12' is referenced directly or indirectly in its own type annotation.
-==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts (2 errors) ====
+==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts (4 errors) ====
export var x = 1;
~~~~~~~~~~~~~~~~~
!!! error TS1148: Cannot compile modules unless the '--module' flag is provided.
@@ -25,7 +27,11 @@ tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.t
export var i: I;
var i2: I;
export var r5: typeof i;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'r5'.
export var r5: typeof i2;
+ ~~
+!!! error TS2323: Cannot redeclare exported variable 'r5'.
export module M {
export var foo = '';
diff --git a/tests/cases/compiler/moduleDuplicateIdentifiers.ts b/tests/cases/compiler/moduleDuplicateIdentifiers.ts
new file mode 100644
index 00000000000..283a6d241bf
--- /dev/null
+++ b/tests/cases/compiler/moduleDuplicateIdentifiers.ts
@@ -0,0 +1,30 @@
+// @module: commonjs
+export var Foo = 2;
+export var Foo = 42; // Should error
+
+export interface Bar {
+ _brand1: any;
+}
+
+export interface Bar {
+ _brand2: any;
+}
+
+export namespace FooBar {
+ export var member1 = 2;
+}
+
+export namespace FooBar {
+ export var member2 = 42;
+}
+
+export class Kettle {
+ member1 = 2;
+}
+
+export class Kettle {
+ member2 = 42;
+}
+
+export var Pot = 2;
+Pot = 42; // Shouldn't error
\ No newline at end of file