Merge pull request #569 from Microsoft/collisions

Report error if exports or require is used for declaration name in external module
This commit is contained in:
Sheetal Nandi 2014-09-04 13:44:43 -07:00
commit f582902ec0
54 changed files with 2402 additions and 156 deletions

View File

@ -4957,6 +4957,7 @@ module ts {
if (fullTypeCheck) {
checkCollisionWithCapturedSuperVariable(node, node.name);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollistionWithRequireExportsInGeneratedCode(node, node.name);
checkCollisionWithArgumentsInGeneratedCode(node);
if (program.getCompilerOptions().noImplicitAny && !node.type) {
switch (node.kind) {
@ -5699,6 +5700,24 @@ module ts {
}
}
function checkCollistionWithRequireExportsInGeneratedCode(node: Node, name: Identifier) {
if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) {
return;
}
// Uninstantiated modules shouldnt do this check
if (node.kind === SyntaxKind.ModuleDeclaration && !isInstantiated(node)) {
return;
}
// In case of variable declaration, node.parent is variable statement so look at the variable statement's parent
var parent = node.kind === SyntaxKind.VariableDeclaration ? node.parent.parent : node.parent;
if (parent.kind === SyntaxKind.SourceFile && isExternalModule(<SourceFile>parent)) {
// If the declaration happens to be in external module, report error that require and exports are reserved keywords
error(name, Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module, name.text, name.text);
}
}
function checkVariableDeclaration(node: VariableDeclaration) {
checkSourceElement(node.type);
checkExportsOnMergedDeclarations(node);
@ -5726,6 +5745,7 @@ module ts {
checkCollisionWithCapturedSuperVariable(node, node.name);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollistionWithRequireExportsInGeneratedCode(node, node.name);
if (!useTypeFromValueDeclaration) {
// TypeScript 1.0 spec (April 2014): 5.1
// Multiple declarations for the same variable name in the same declaration space are permitted,
@ -5995,6 +6015,7 @@ module ts {
checkTypeNameIsReserved(node.name, Diagnostics.Class_name_cannot_be_0);
checkTypeParameters(node.typeParameters);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollistionWithRequireExportsInGeneratedCode(node, node.name);
checkExportsOnMergedDeclarations(node);
var symbol = getSymbolOfNode(node);
var type = <InterfaceType>getDeclaredTypeOfSymbol(symbol);
@ -6210,6 +6231,7 @@ module ts {
}
checkTypeNameIsReserved(node.name, Diagnostics.Enum_name_cannot_be_0);
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollistionWithRequireExportsInGeneratedCode(node, node.name);
checkExportsOnMergedDeclarations(node);
var enumSymbol = getSymbolOfNode(node);
var enumType = getDeclaredTypeOfSymbol(enumSymbol);
@ -6283,6 +6305,7 @@ module ts {
function checkModuleDeclaration(node: ModuleDeclaration) {
if (fullTypeCheck) {
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollistionWithRequireExportsInGeneratedCode(node, node.name);
checkExportsOnMergedDeclarations(node);
var symbol = getSymbolOfNode(node);
if (symbol.flags & SymbolFlags.ValueModule && symbol.declarations.length > 1 && !isInAmbientContext(node)) {
@ -6317,6 +6340,7 @@ module ts {
function checkImportDeclaration(node: ImportDeclaration) {
checkCollisionWithCapturedThisVariable(node, node.name);
checkCollistionWithRequireExportsInGeneratedCode(node, node.name);
var symbol = getSymbolOfNode(node);
var target: Symbol;

View File

@ -253,6 +253,7 @@ module ts {
Import_name_cannot_be_0: { code: 2438, category: DiagnosticCategory.Error, key: "Import name cannot be '{0}'" },
Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { code: 2439, category: DiagnosticCategory.Error, key: "Import declaration in an ambient external module declaration cannot reference external module through relative external module name." },
Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: DiagnosticCategory.Error, key: "Import declaration conflicts with local declaration of '{0}'" },
Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { code: 2441, category: DiagnosticCategory.Error, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." },
Import_declaration_0_is_using_private_name_1: { code: 4000, category: DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." },
Type_parameter_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4001, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using name '{1}' from private module '{2}'." },
Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." },

View File

@ -1004,6 +1004,11 @@
"category": "Error",
"code": 2440
},
"Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module.": {
"category": "Error",
"code": 2441
},
"Import declaration '{0}' is using private name '{1}'.": {
"category": "Error",

View File

@ -0,0 +1,20 @@
==== tests/cases/compiler/collisionExportsRequireAndAlias_file2.ts (2 errors) ====
import require = require('collisionExportsRequireAndAlias_file1'); // Error
~~~~~~~
!!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module.
import exports = require('collisionExportsRequireAndAlias_file3333'); // Error
~~~~~~~
!!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module.
export function foo() {
require.bar();
}
export function foo2() {
exports.bar2();
}
==== tests/cases/compiler/collisionExportsRequireAndAlias_file1.ts (0 errors) ====
export function bar() {
}
==== tests/cases/compiler/collisionExportsRequireAndAlias_file3333.ts (0 errors) ====
export function bar2() {
}

View File

@ -1,23 +1,42 @@
//// [collisionExportsRequireAndAlias.ts]
// TODO: re-enable, fails when run in the browser with full compiler suite, but not when run alone
////@module: amd
//// @Filename: collisionExportsRequireAndAlias_file1.ts
//export function bar() {
//}
//// @Filename: collisionExportsRequireAndAlias_file3333.ts
//export function bar2() {
//}
//// @Filename: collisionExportsRequireAndAlias_file2.ts
//import require = require('collisionExportsRequireAndAlias_file1'); // Error
//import exports = require('collisionExportsRequireAndAlias_file3333'); // Error
//export function foo() {
// require.bar();
//}
//export function foo2() {
// exports.bar2();
//}
//// [tests/cases/compiler/collisionExportsRequireAndAlias.ts] ////
//// [collisionExportsRequireAndAlias.js]
// TODO: re-enable, fails when run in the browser with full compiler suite, but not when run alone
//// [collisionExportsRequireAndAlias_file1.ts]
export function bar() {
}
//// [collisionExportsRequireAndAlias_file3333.ts]
export function bar2() {
}
//// [collisionExportsRequireAndAlias_file2.ts]
import require = require('collisionExportsRequireAndAlias_file1'); // Error
import exports = require('collisionExportsRequireAndAlias_file3333'); // Error
export function foo() {
require.bar();
}
export function foo2() {
exports.bar2();
}
//// [collisionExportsRequireAndAlias_file1.js]
define(["require", "exports"], function (require, exports) {
function bar() {
}
exports.bar = bar;
});
//// [collisionExportsRequireAndAlias_file3333.js]
define(["require", "exports"], function (require, exports) {
function bar2() {
}
exports.bar2 = bar2;
});
//// [collisionExportsRequireAndAlias_file2.js]
define(["require", "exports", 'collisionExportsRequireAndAlias_file1', 'collisionExportsRequireAndAlias_file3333'], function (require, exports, require, exports) {
function foo() {
require.bar();
}
exports.foo = foo;
function foo2() {
exports.bar2();
}
exports.foo2 = foo2;
});

View File

@ -1,21 +0,0 @@
=== tests/cases/compiler/collisionExportsRequireAndAlias.ts ===
// TODO: re-enable, fails when run in the browser with full compiler suite, but not when run alone
No type information for this code.
No type information for this code.////@module: amd
No type information for this code.//// @Filename: collisionExportsRequireAndAlias_file1.ts
No type information for this code.//export function bar() {
No type information for this code.//}
No type information for this code.
No type information for this code.//// @Filename: collisionExportsRequireAndAlias_file3333.ts
No type information for this code.//export function bar2() {
No type information for this code.//}
No type information for this code.//// @Filename: collisionExportsRequireAndAlias_file2.ts
No type information for this code.//import require = require('collisionExportsRequireAndAlias_file1'); // Error
No type information for this code.//import exports = require('collisionExportsRequireAndAlias_file3333'); // Error
No type information for this code.//export function foo() {
No type information for this code.// require.bar();
No type information for this code.//}
No type information for this code.//export function foo2() {
No type information for this code.// exports.bar2();
No type information for this code.//}
No type information for this code.

View File

@ -0,0 +1,50 @@
//// [tests/cases/compiler/collisionExportsRequireAndAmbientClass.ts] ////
//// [collisionExportsRequireAndAmbientClass_externalmodule.ts]
export declare class require {
}
export declare class exports {
}
declare module m1 {
class require {
}
class exports {
}
}
module m2 {
export declare class require {
}
export declare class exports {
}
}
//// [collisionExportsRequireAndAmbientClass_globalFile.ts]
declare class require {
}
declare class exports {
}
declare module m3 {
class require {
}
class exports {
}
}
module m4 {
export declare class require {
}
export declare class exports {
}
var a = 10;
}
//// [collisionExportsRequireAndAmbientClass_externalmodule.js]
define(["require", "exports"], function (require, exports) {
var m2;
(function (m2) {
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndAmbientClass_globalFile.js]
var m4;
(function (m4) {
var a = 10;
})(m4 || (m4 = {}));

View File

@ -0,0 +1,57 @@
=== tests/cases/compiler/collisionExportsRequireAndAmbientClass_externalmodule.ts ===
export declare class require {
>require : require
}
export declare class exports {
>exports : exports
}
declare module m1 {
>m1 : typeof m1
class require {
>require : require
}
class exports {
>exports : exports
}
}
module m2 {
>m2 : typeof m2
export declare class require {
>require : require
}
export declare class exports {
>exports : exports
}
}
=== tests/cases/compiler/collisionExportsRequireAndAmbientClass_globalFile.ts ===
declare class require {
>require : require
}
declare class exports {
>exports : exports
}
declare module m3 {
>m3 : typeof m3
class require {
>require : require
}
class exports {
>exports : exports
}
}
module m4 {
>m4 : typeof m4
export declare class require {
>require : require
}
export declare class exports {
>exports : exports
}
var a = 10;
>a : number
}

View File

@ -0,0 +1,72 @@
//// [tests/cases/compiler/collisionExportsRequireAndAmbientEnum.ts] ////
//// [collisionExportsRequireAndAmbientEnum_externalmodule.ts]
export declare enum require {
_thisVal1,
_thisVal2,
}
export declare enum exports {
_thisVal1,
_thisVal2,
}
declare module m1 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m2 {
export declare enum require {
_thisVal1,
_thisVal2,
}
export declare enum exports {
_thisVal1,
_thisVal2,
}
}
//// [collisionExportsRequireAndAmbientEnum_globalFile.ts]
declare enum require {
_thisVal1,
_thisVal2,
}
declare enum exports {
_thisVal1,
_thisVal2,
}
declare module m3 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m4 {
export declare enum require {
_thisVal1,
_thisVal2,
}
export declare enum exports {
_thisVal1,
_thisVal2,
}
}
//// [collisionExportsRequireAndAmbientEnum_externalmodule.js]
define(["require", "exports"], function (require, exports) {
var m2;
(function (m2) {
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndAmbientEnum_globalFile.js]
var m4;
(function (m4) {
})(m4 || (m4 = {}));

View File

@ -0,0 +1,127 @@
=== tests/cases/compiler/collisionExportsRequireAndAmbientEnum_externalmodule.ts ===
export declare enum require {
>require : require
_thisVal1,
>_thisVal1 : require
_thisVal2,
>_thisVal2 : require
}
export declare enum exports {
>exports : exports
_thisVal1,
>_thisVal1 : exports
_thisVal2,
>_thisVal2 : exports
}
declare module m1 {
>m1 : typeof m1
enum require {
>require : require
_thisVal1,
>_thisVal1 : require
_thisVal2,
>_thisVal2 : require
}
enum exports {
>exports : exports
_thisVal1,
>_thisVal1 : exports
_thisVal2,
>_thisVal2 : exports
}
}
module m2 {
>m2 : typeof m2
export declare enum require {
>require : require
_thisVal1,
>_thisVal1 : require
_thisVal2,
>_thisVal2 : require
}
export declare enum exports {
>exports : exports
_thisVal1,
>_thisVal1 : exports
_thisVal2,
>_thisVal2 : exports
}
}
=== tests/cases/compiler/collisionExportsRequireAndAmbientEnum_globalFile.ts ===
declare enum require {
>require : require
_thisVal1,
>_thisVal1 : require
_thisVal2,
>_thisVal2 : require
}
declare enum exports {
>exports : exports
_thisVal1,
>_thisVal1 : exports
_thisVal2,
>_thisVal2 : exports
}
declare module m3 {
>m3 : typeof m3
enum require {
>require : require
_thisVal1,
>_thisVal1 : require
_thisVal2,
>_thisVal2 : require
}
enum exports {
>exports : exports
_thisVal1,
>_thisVal1 : exports
_thisVal2,
>_thisVal2 : exports
}
}
module m4 {
>m4 : typeof m4
export declare enum require {
>require : require
_thisVal1,
>_thisVal1 : require
_thisVal2,
>_thisVal2 : require
}
export declare enum exports {
>exports : exports
_thisVal1,
>_thisVal1 : exports
_thisVal2,
>_thisVal2 : exports
}
}

View File

@ -0,0 +1,22 @@
//// [collisionExportsRequireAndAmbientFunction.ts]
export declare function exports(): number;
export declare function require(): string[];
declare module m1 {
function exports(): string;
function require(): number;
}
module m2 {
export declare function exports(): string;
export declare function require(): string[];
var a = 10;
}
//// [collisionExportsRequireAndAmbientFunction.js]
define(["require", "exports"], function (require, exports) {
var m2;
(function (m2) {
var a = 10;
})(m2 || (m2 = {}));
});

View File

@ -0,0 +1,28 @@
=== tests/cases/compiler/collisionExportsRequireAndAmbientFunction.ts ===
export declare function exports(): number;
>exports : () => number
export declare function require(): string[];
>require : () => string[]
declare module m1 {
>m1 : typeof m1
function exports(): string;
>exports : () => string
function require(): number;
>require : () => number
}
module m2 {
>m2 : typeof m2
export declare function exports(): string;
>exports : () => string
export declare function require(): string[];
>require : () => string[]
var a = 10;
>a : number
}

View File

@ -0,0 +1,18 @@
//// [collisionExportsRequireAndAmbientFunctionInGlobalFile.ts]
declare function exports(): number;
declare function require(): string;
declare module m3 {
function exports(): string[];
function require(): number[];
}
module m4 {
export declare function exports(): string;
export declare function require(): string;
var a = 10;
}
//// [collisionExportsRequireAndAmbientFunctionInGlobalFile.js]
var m4;
(function (m4) {
var a = 10;
})(m4 || (m4 = {}));

View File

@ -0,0 +1,28 @@
=== tests/cases/compiler/collisionExportsRequireAndAmbientFunctionInGlobalFile.ts ===
declare function exports(): number;
>exports : () => number
declare function require(): string;
>require : () => string
declare module m3 {
>m3 : typeof m3
function exports(): string[];
>exports : () => string[]
function require(): number[];
>require : () => number[]
}
module m4 {
>m4 : typeof m4
export declare function exports(): string;
>exports : () => string
export declare function require(): string;
>require : () => string
var a = 10;
>a : number
}

View File

@ -0,0 +1,116 @@
//// [tests/cases/compiler/collisionExportsRequireAndAmbientModule.ts] ////
//// [collisionExportsRequireAndAmbientModule_externalmodule.ts]
export declare module require {
export interface I {
}
export class C {
}
}
export function foo(): require.I {
return null;
}
export declare module exports {
export interface I {
}
export class C {
}
}
export function foo2(): exports.I {
return null;
}
declare module m1 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m2 {
export declare module require {
export interface I {
}
export class C {
}
}
export declare module exports {
export interface I {
}
export class C {
}
}
var a = 10;
}
//// [collisionExportsRequireAndAmbientModule_globalFile.ts]
declare module require {
export interface I {
}
export class C {
}
}
declare module exports {
export interface I {
}
export class C {
}
}
declare module m3 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m4 {
export declare module require {
export interface I {
}
export class C {
}
}
export declare module exports {
export interface I {
}
export class C {
}
}
var a = 10;
}
//// [collisionExportsRequireAndAmbientModule_externalmodule.js]
define(["require", "exports"], function (require, exports) {
function foo() {
return null;
}
exports.foo = foo;
function foo2() {
return null;
}
exports.foo2 = foo2;
var m2;
(function (m2) {
var a = 10;
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndAmbientModule_globalFile.js]
var m4;
(function (m4) {
var a = 10;
})(m4 || (m4 = {}));

View File

@ -0,0 +1,159 @@
=== tests/cases/compiler/collisionExportsRequireAndAmbientModule_externalmodule.ts ===
export declare module require {
>require : typeof require
export interface I {
>I : I
}
export class C {
>C : C
}
}
export function foo(): require.I {
>foo : () => require.I
>require : unknown
>I : require.I
return null;
}
export declare module exports {
>exports : typeof exports
export interface I {
>I : I
}
export class C {
>C : C
}
}
export function foo2(): exports.I {
>foo2 : () => exports.I
>exports : unknown
>I : exports.I
return null;
}
declare module m1 {
>m1 : typeof m1
module require {
>require : typeof require
export interface I {
>I : I
}
export class C {
>C : C
}
}
module exports {
>exports : typeof exports
export interface I {
>I : I
}
export class C {
>C : C
}
}
}
module m2 {
>m2 : typeof m2
export declare module require {
>require : typeof require
export interface I {
>I : I
}
export class C {
>C : C
}
}
export declare module exports {
>exports : typeof exports
export interface I {
>I : I
}
export class C {
>C : C
}
}
var a = 10;
>a : number
}
=== tests/cases/compiler/collisionExportsRequireAndAmbientModule_globalFile.ts ===
declare module require {
>require : typeof require
export interface I {
>I : I
}
export class C {
>C : C
}
}
declare module exports {
>exports : typeof exports
export interface I {
>I : I
}
export class C {
>C : C
}
}
declare module m3 {
>m3 : typeof m3
module require {
>require : typeof require
export interface I {
>I : I
}
export class C {
>C : C
}
}
module exports {
>exports : typeof exports
export interface I {
>I : I
}
export class C {
>C : C
}
}
}
module m4 {
>m4 : typeof m4
export declare module require {
>require : typeof require
export interface I {
>I : I
}
export class C {
>C : C
}
}
export declare module exports {
>exports : typeof exports
export interface I {
>I : I
}
export class C {
>C : C
}
}
var a = 10;
>a : number
}

View File

@ -0,0 +1,40 @@
//// [tests/cases/compiler/collisionExportsRequireAndAmbientVar.ts] ////
//// [collisionExportsRequireAndAmbientVar_externalmodule.ts]
export declare var exports: number;
export declare var require: string;
declare module m1 {
var exports: string;
var require: number;
}
module m2 {
export declare var exports: number;
export declare var require: string;
var a = 10;
}
//// [collisionExportsRequireAndAmbientVar_globalFile.ts]
declare var exports: number;
declare var require: string;
declare module m3 {
var exports: string;
var require: number;
}
module m4 {
export declare var exports: string;
export declare var require: number;
var a = 10;
}
//// [collisionExportsRequireAndAmbientVar_externalmodule.js]
define(["require", "exports"], function (require, exports) {
var m2;
(function (m2) {
var a = 10;
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndAmbientVar_globalFile.js]
var m4;
(function (m4) {
var a = 10;
})(m4 || (m4 = {}));

View File

@ -0,0 +1,57 @@
=== tests/cases/compiler/collisionExportsRequireAndAmbientVar_externalmodule.ts ===
export declare var exports: number;
>exports : number
export declare var require: string;
>require : string
declare module m1 {
>m1 : typeof m1
var exports: string;
>exports : string
var require: number;
>require : number
}
module m2 {
>m2 : typeof m2
export declare var exports: number;
>exports : number
export declare var require: string;
>require : string
var a = 10;
>a : number
}
=== tests/cases/compiler/collisionExportsRequireAndAmbientVar_globalFile.ts ===
declare var exports: number;
>exports : number
declare var require: string;
>require : string
declare module m3 {
>m3 : typeof m3
var exports: string;
>exports : string
var require: number;
>require : number
}
module m4 {
>m4 : typeof m4
export declare var exports: string;
>exports : string
export declare var require: number;
>require : number
var a = 10;
>a : number
}

View File

@ -0,0 +1,39 @@
==== tests/cases/compiler/collisionExportsRequireAndClass_externalmodule.ts (2 errors) ====
export class require {
~~~~~~~
!!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module.
}
export class exports {
~~~~~~~
!!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module.
}
module m1 {
class require {
}
class exports {
}
}
module m2 {
export class require {
}
export class exports {
}
}
==== tests/cases/compiler/collisionExportsRequireAndClass_globalFile.ts (0 errors) ====
class require {
}
class exports {
}
module m3 {
class require {
}
class exports {
}
}
module m4 {
export class require {
}
export class exports {
}
}

View File

@ -1,11 +1,42 @@
//// [collisionExportsRequireAndClass.ts]
//// [tests/cases/compiler/collisionExportsRequireAndClass.ts] ////
//// [collisionExportsRequireAndClass_externalmodule.ts]
export class require {
}
export class exports {
}
module m1 {
class require {
}
class exports {
}
}
module m2 {
export class require {
}
export class exports {
}
}
//// [collisionExportsRequireAndClass_globalFile.ts]
class require {
}
class exports {
}
module m3 {
class require {
}
class exports {
}
}
module m4 {
export class require {
}
export class exports {
}
}
//// [collisionExportsRequireAndClass.js]
//// [collisionExportsRequireAndClass_externalmodule.js]
define(["require", "exports"], function (require, exports) {
var require = (function () {
function require() {
@ -19,4 +50,71 @@ define(["require", "exports"], function (require, exports) {
return exports;
})();
exports.exports = exports;
var m1;
(function (m1) {
var require = (function () {
function require() {
}
return require;
})();
var exports = (function () {
function exports() {
}
return exports;
})();
})(m1 || (m1 = {}));
var m2;
(function (m2) {
var require = (function () {
function require() {
}
return require;
})();
m2.require = require;
var exports = (function () {
function exports() {
}
return exports;
})();
m2.exports = exports;
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndClass_globalFile.js]
var require = (function () {
function require() {
}
return require;
})();
var exports = (function () {
function exports() {
}
return exports;
})();
var m3;
(function (m3) {
var require = (function () {
function require() {
}
return require;
})();
var exports = (function () {
function exports() {
}
return exports;
})();
})(m3 || (m3 = {}));
var m4;
(function (m4) {
var require = (function () {
function require() {
}
return require;
})();
m4.require = require;
var exports = (function () {
function exports() {
}
return exports;
})();
m4.exports = exports;
})(m4 || (m4 = {}));

View File

@ -1,8 +0,0 @@
=== tests/cases/compiler/collisionExportsRequireAndClass.ts ===
export class require {
>require : require
}
export class exports {
>exports : exports
}

View File

@ -0,0 +1,63 @@
==== tests/cases/compiler/collisionExportsRequireAndEnum_externalmodule.ts (2 errors) ====
export enum require { // Error
~~~~~~~
!!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module.
_thisVal1,
_thisVal2,
}
export enum exports { // Error
~~~~~~~
!!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module.
_thisVal1,
_thisVal2,
}
module m1 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m2 {
export enum require {
_thisVal1,
_thisVal2,
}
export enum exports {
_thisVal1,
_thisVal2,
}
}
==== tests/cases/compiler/collisionExportsRequireAndEnum_globalFile.ts (0 errors) ====
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
module m3 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m4 {
export enum require {
_thisVal1,
_thisVal2,
}
export enum exports {
_thisVal1,
_thisVal2,
}
}

View File

@ -1,4 +1,6 @@
//// [collisionExportsRequireAndEnum.ts]
//// [tests/cases/compiler/collisionExportsRequireAndEnum.ts] ////
//// [collisionExportsRequireAndEnum_externalmodule.ts]
export enum require { // Error
_thisVal1,
_thisVal2,
@ -6,9 +8,59 @@ export enum require { // Error
export enum exports { // Error
_thisVal1,
_thisVal2,
}
module m1 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m2 {
export enum require {
_thisVal1,
_thisVal2,
}
export enum exports {
_thisVal1,
_thisVal2,
}
}
//// [collisionExportsRequireAndEnum_globalFile.ts]
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
module m3 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m4 {
export enum require {
_thisVal1,
_thisVal2,
}
export enum exports {
_thisVal1,
_thisVal2,
}
}
//// [collisionExportsRequireAndEnum.js]
//// [collisionExportsRequireAndEnum_externalmodule.js]
define(["require", "exports"], function (require, exports) {
(function (require) {
require[require["_thisVal1"] = 0] = "_thisVal1";
@ -20,4 +72,67 @@ define(["require", "exports"], function (require, exports) {
exports[exports["_thisVal2"] = 1] = "_thisVal2";
})(exports.exports || (exports.exports = {}));
var exports = exports.exports;
var m1;
(function (m1) {
var require;
(function (require) {
require[require["_thisVal1"] = 0] = "_thisVal1";
require[require["_thisVal2"] = 1] = "_thisVal2";
})(require || (require = {}));
var exports;
(function (exports) {
exports[exports["_thisVal1"] = 0] = "_thisVal1";
exports[exports["_thisVal2"] = 1] = "_thisVal2";
})(exports || (exports = {}));
})(m1 || (m1 = {}));
var m2;
(function (m2) {
(function (require) {
require[require["_thisVal1"] = 0] = "_thisVal1";
require[require["_thisVal2"] = 1] = "_thisVal2";
})(m2.require || (m2.require = {}));
var require = m2.require;
(function (exports) {
exports[exports["_thisVal1"] = 0] = "_thisVal1";
exports[exports["_thisVal2"] = 1] = "_thisVal2";
})(m2.exports || (m2.exports = {}));
var exports = m2.exports;
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndEnum_globalFile.js]
var require;
(function (require) {
require[require["_thisVal1"] = 0] = "_thisVal1";
require[require["_thisVal2"] = 1] = "_thisVal2";
})(require || (require = {}));
var exports;
(function (exports) {
exports[exports["_thisVal1"] = 0] = "_thisVal1";
exports[exports["_thisVal2"] = 1] = "_thisVal2";
})(exports || (exports = {}));
var m3;
(function (m3) {
var require;
(function (require) {
require[require["_thisVal1"] = 0] = "_thisVal1";
require[require["_thisVal2"] = 1] = "_thisVal2";
})(require || (require = {}));
var exports;
(function (exports) {
exports[exports["_thisVal1"] = 0] = "_thisVal1";
exports[exports["_thisVal2"] = 1] = "_thisVal2";
})(exports || (exports = {}));
})(m3 || (m3 = {}));
var m4;
(function (m4) {
(function (require) {
require[require["_thisVal1"] = 0] = "_thisVal1";
require[require["_thisVal2"] = 1] = "_thisVal2";
})(m4.require || (m4.require = {}));
var require = m4.require;
(function (exports) {
exports[exports["_thisVal1"] = 0] = "_thisVal1";
exports[exports["_thisVal2"] = 1] = "_thisVal2";
})(m4.exports || (m4.exports = {}));
var exports = m4.exports;
})(m4 || (m4 = {}));

View File

@ -1,19 +0,0 @@
=== tests/cases/compiler/collisionExportsRequireAndEnum.ts ===
export enum require { // Error
>require : require
_thisVal1,
>_thisVal1 : require
_thisVal2,
>_thisVal2 : require
}
export enum exports { // Error
>exports : exports
_thisVal1,
>_thisVal1 : exports
_thisVal2,
>_thisVal2 : exports
}

View File

@ -0,0 +1,27 @@
==== tests/cases/compiler/collisionExportsRequireAndFunction.ts (2 errors) ====
export function exports() {
~~~~~~~
!!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module.
return 1;
}
export function require() {
~~~~~~~
!!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module.
return "require";
}
module m1 {
function exports() {
return 1;
}
function require() {
return "require";
}
}
module m2 {
export function exports() {
return 1;
}
export function require() {
return "require";
}
}

View File

@ -5,7 +5,22 @@ export function exports() {
export function require() {
return "require";
}
module m1 {
function exports() {
return 1;
}
function require() {
return "require";
}
}
module m2 {
export function exports() {
return 1;
}
export function require() {
return "require";
}
}
//// [collisionExportsRequireAndFunction.js]
define(["require", "exports"], function (require, exports) {
@ -17,4 +32,24 @@ define(["require", "exports"], function (require, exports) {
return "require";
}
exports.require = require;
var m1;
(function (m1) {
function exports() {
return 1;
}
function require() {
return "require";
}
})(m1 || (m1 = {}));
var m2;
(function (m2) {
function exports() {
return 1;
}
m2.exports = exports;
function require() {
return "require";
}
m2.require = require;
})(m2 || (m2 = {}));
});

View File

@ -1,12 +0,0 @@
=== tests/cases/compiler/collisionExportsRequireAndFunction.ts ===
export function exports() {
>exports : () => number
return 1;
}
export function require() {
>require : () => string
return "require";
}

View File

@ -0,0 +1,51 @@
//// [collisionExportsRequireAndFunctionInGlobalFile.ts]
function exports() {
return 1;
}
function require() {
return "require";
}
module m3 {
function exports() {
return 1;
}
function require() {
return "require";
}
}
module m4 {
export function exports() {
return 1;
}
export function require() {
return "require";
}
}
//// [collisionExportsRequireAndFunctionInGlobalFile.js]
function exports() {
return 1;
}
function require() {
return "require";
}
var m3;
(function (m3) {
function exports() {
return 1;
}
function require() {
return "require";
}
})(m3 || (m3 = {}));
var m4;
(function (m4) {
function exports() {
return 1;
}
m4.exports = exports;
function require() {
return "require";
}
m4.require = require;
})(m4 || (m4 = {}));

View File

@ -0,0 +1,39 @@
=== tests/cases/compiler/collisionExportsRequireAndFunctionInGlobalFile.ts ===
function exports() {
>exports : () => number
return 1;
}
function require() {
>require : () => string
return "require";
}
module m3 {
>m3 : typeof m3
function exports() {
>exports : () => number
return 1;
}
function require() {
>require : () => string
return "require";
}
}
module m4 {
>m4 : typeof m4
export function exports() {
>exports : () => number
return 1;
}
export function require() {
>require : () => string
return "require";
}
}

View File

@ -0,0 +1,27 @@
==== tests/cases/compiler/collisionExportsRequireAndInternalModuleAlias.ts (2 errors) ====
export module m {
export class c {
}
}
import exports = m.c;
~~~~~~~
!!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module.
import require = m.c;
~~~~~~~
!!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module.
new exports();
new require();
module m1 {
import exports = m.c;
import require = m.c;
new exports();
new require();
}
module m2 {
export import exports = m.c;
export import require = m.c;
new exports();
new require();
}

View File

@ -0,0 +1,54 @@
//// [collisionExportsRequireAndInternalModuleAlias.ts]
export module m {
export class c {
}
}
import exports = m.c;
import require = m.c;
new exports();
new require();
module m1 {
import exports = m.c;
import require = m.c;
new exports();
new require();
}
module m2 {
export import exports = m.c;
export import require = m.c;
new exports();
new require();
}
//// [collisionExportsRequireAndInternalModuleAlias.js]
define(["require", "exports"], function (require, exports) {
(function (m) {
var c = (function () {
function c() {
}
return c;
})();
m.c = c;
})(exports.m || (exports.m = {}));
var m = exports.m;
var exports = m.c;
var require = m.c;
new exports();
new require();
var m1;
(function (m1) {
var exports = m.c;
var require = m.c;
new exports();
new require();
})(m1 || (m1 = {}));
var m2;
(function (m2) {
m2.exports = m.c;
m2.require = m.c;
new m2.exports();
new m2.require();
})(m2 || (m2 = {}));
});

View File

@ -0,0 +1,52 @@
//// [collisionExportsRequireAndInternalModuleAliasInGlobalFile.ts]
module mOfGloalFile {
export class c {
}
}
import exports = mOfGloalFile.c;
import require = mOfGloalFile.c;
new exports();
new require();
module m1 {
import exports = mOfGloalFile.c;
import require = mOfGloalFile.c;
new exports();
new require();
}
module m2 {
export import exports = mOfGloalFile.c;
export import require = mOfGloalFile.c;
new exports();
new require();
}
//// [collisionExportsRequireAndInternalModuleAliasInGlobalFile.js]
var mOfGloalFile;
(function (mOfGloalFile) {
var c = (function () {
function c() {
}
return c;
})();
mOfGloalFile.c = c;
})(mOfGloalFile || (mOfGloalFile = {}));
var exports = mOfGloalFile.c;
var require = mOfGloalFile.c;
new exports();
new require();
var m1;
(function (m1) {
var exports = mOfGloalFile.c;
var require = mOfGloalFile.c;
new exports();
new require();
})(m1 || (m1 = {}));
var m2;
(function (m2) {
m2.exports = mOfGloalFile.c;
m2.require = mOfGloalFile.c;
new m2.exports();
new m2.require();
})(m2 || (m2 = {}));

View File

@ -0,0 +1,69 @@
=== tests/cases/compiler/collisionExportsRequireAndInternalModuleAliasInGlobalFile.ts ===
module mOfGloalFile {
>mOfGloalFile : typeof mOfGloalFile
export class c {
>c : c
}
}
import exports = mOfGloalFile.c;
>exports : typeof exports
>mOfGloalFile : typeof mOfGloalFile
>c : exports
import require = mOfGloalFile.c;
>require : typeof exports
>mOfGloalFile : typeof mOfGloalFile
>c : exports
new exports();
>new exports() : exports
>exports : typeof exports
new require();
>new require() : exports
>require : typeof exports
module m1 {
>m1 : typeof m1
import exports = mOfGloalFile.c;
>exports : typeof exports
>mOfGloalFile : typeof mOfGloalFile
>c : exports
import require = mOfGloalFile.c;
>require : typeof exports
>mOfGloalFile : typeof mOfGloalFile
>c : exports
new exports();
>new exports() : exports
>exports : typeof exports
new require();
>new require() : exports
>require : typeof exports
}
module m2 {
>m2 : typeof m2
export import exports = mOfGloalFile.c;
>exports : typeof exports
>mOfGloalFile : typeof mOfGloalFile
>c : exports
export import require = mOfGloalFile.c;
>require : typeof exports
>mOfGloalFile : typeof mOfGloalFile
>c : exports
new exports();
>new exports() : exports
>exports : typeof exports
new require();
>new require() : exports
>require : typeof exports
}

View File

@ -0,0 +1,94 @@
==== tests/cases/compiler/collisionExportsRequireAndModule_externalmodule.ts (2 errors) ====
export module require {
~~~~~~~
!!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module.
export interface I {
}
export class C {
}
}
export function foo(): require.I {
return null;
}
export module exports {
~~~~~~~
!!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module.
export interface I {
}
export class C {
}
}
export function foo2(): exports.I {
return null;
}
module m1 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m2 {
export module require {
export interface I {
}
export class C {
}
}
export module exports {
export interface I {
}
export class C {
}
}
}
==== tests/cases/compiler/collisionExportsRequireAndModule_globalFile.ts (0 errors) ====
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
module m3 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m4 {
export module require {
export interface I {
}
export class C {
}
}
export module exports {
export interface I {
}
export class C {
}
}
}

View File

@ -1,4 +1,6 @@
//// [collisionExportsRequireAndModule.ts]
//// [tests/cases/compiler/collisionExportsRequireAndModule.ts] ////
//// [collisionExportsRequireAndModule_externalmodule.ts]
export module require {
export interface I {
}
@ -16,9 +18,80 @@ export module exports {
}
export function foo2(): exports.I {
return null;
}
}
module m1 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m2 {
export module require {
export interface I {
}
export class C {
}
}
export module exports {
export interface I {
}
export class C {
}
}
}
//// [collisionExportsRequireAndModule.js]
//// [collisionExportsRequireAndModule_globalFile.ts]
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
module m3 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m4 {
export module require {
export interface I {
}
export class C {
}
}
export module exports {
export interface I {
}
export class C {
}
}
}
//// [collisionExportsRequireAndModule_externalmodule.js]
define(["require", "exports"], function (require, exports) {
(function (require) {
var C = (function () {
@ -46,4 +119,107 @@ define(["require", "exports"], function (require, exports) {
return null;
}
exports.foo2 = foo2;
var m1;
(function (m1) {
var require;
(function (require) {
var C = (function () {
function C() {
}
return C;
})();
require.C = C;
})(require || (require = {}));
var exports;
(function (exports) {
var C = (function () {
function C() {
}
return C;
})();
exports.C = C;
})(exports || (exports = {}));
})(m1 || (m1 = {}));
var m2;
(function (m2) {
(function (require) {
var C = (function () {
function C() {
}
return C;
})();
require.C = C;
})(m2.require || (m2.require = {}));
var require = m2.require;
(function (exports) {
var C = (function () {
function C() {
}
return C;
})();
exports.C = C;
})(m2.exports || (m2.exports = {}));
var exports = m2.exports;
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndModule_globalFile.js]
var require;
(function (require) {
var C = (function () {
function C() {
}
return C;
})();
require.C = C;
})(require || (require = {}));
var exports;
(function (exports) {
var C = (function () {
function C() {
}
return C;
})();
exports.C = C;
})(exports || (exports = {}));
var m3;
(function (m3) {
var require;
(function (require) {
var C = (function () {
function C() {
}
return C;
})();
require.C = C;
})(require || (require = {}));
var exports;
(function (exports) {
var C = (function () {
function C() {
}
return C;
})();
exports.C = C;
})(exports || (exports = {}));
})(m3 || (m3 = {}));
var m4;
(function (m4) {
(function (require) {
var C = (function () {
function C() {
}
return C;
})();
require.C = C;
})(m4.require || (m4.require = {}));
var require = m4.require;
(function (exports) {
var C = (function () {
function C() {
}
return C;
})();
exports.C = C;
})(m4.exports || (m4.exports = {}));
var exports = m4.exports;
})(m4 || (m4 = {}));

View File

@ -1,35 +0,0 @@
=== tests/cases/compiler/collisionExportsRequireAndModule.ts ===
export module require {
>require : typeof require
export interface I {
>I : I
}
export class C {
>C : C
}
}
export function foo(): require.I {
>foo : () => require.I
>require : unknown
>I : require.I
return null;
}
export module exports {
>exports : typeof exports
export interface I {
>I : I
}
export class C {
>C : C
}
}
export function foo2(): exports.I {
>foo2 : () => exports.I
>exports : unknown
>I : exports.I
return null;
}

View File

@ -0,0 +1,29 @@
==== tests/cases/compiler/collisionExportsRequireAndVar_externalmodule.ts (2 errors) ====
export function foo() {
}
var exports = 1;
~~~~~~~
!!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module.
var require = "require";
~~~~~~~
!!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module.
module m1 {
var exports = 0;
var require = "require";
}
module m2 {
export var exports = 0;
export var require = "require";
}
==== tests/cases/compiler/collisionExportsRequireAndVar_globalFile.ts (0 errors) ====
var exports = 0;
var require = "require";
module m3 {
var exports = 0;
var require = "require";
}
module m4 {
export var exports = 0;
export var require = "require";
}

View File

@ -1,15 +1,59 @@
//// [collisionExportsRequireAndVar.ts]
//// [tests/cases/compiler/collisionExportsRequireAndVar.ts] ////
//// [collisionExportsRequireAndVar_externalmodule.ts]
export function foo() {
}
var exports = 1;
var require = "require";
module m1 {
var exports = 0;
var require = "require";
}
module m2 {
export var exports = 0;
export var require = "require";
}
//// [collisionExportsRequireAndVar_globalFile.ts]
var exports = 0;
var require = "require";
module m3 {
var exports = 0;
var require = "require";
}
module m4 {
export var exports = 0;
export var require = "require";
}
//// [collisionExportsRequireAndVar.js]
//// [collisionExportsRequireAndVar_externalmodule.js]
define(["require", "exports"], function (require, exports) {
function foo() {
}
exports.foo = foo;
var exports = 1;
var require = "require";
var m1;
(function (m1) {
var exports = 0;
var require = "require";
})(m1 || (m1 = {}));
var m2;
(function (m2) {
m2.exports = 0;
m2.require = "require";
})(m2 || (m2 = {}));
});
//// [collisionExportsRequireAndVar_globalFile.js]
var exports = 0;
var require = "require";
var m3;
(function (m3) {
var exports = 0;
var require = "require";
})(m3 || (m3 = {}));
var m4;
(function (m4) {
m4.exports = 0;
m4.require = "require";
})(m4 || (m4 = {}));

View File

@ -1,10 +0,0 @@
=== tests/cases/compiler/collisionExportsRequireAndVar.ts ===
export function foo() {
>foo : () => void
}
var exports = 1;
>exports : number
var require = "require";
>require : string

View File

@ -1,19 +1,17 @@
// TODO: re-enable, fails when run in the browser with full compiler suite, but not when run alone
//@module: amd
// @Filename: collisionExportsRequireAndAlias_file1.ts
export function bar() {
}
////@module: amd
//// @Filename: collisionExportsRequireAndAlias_file1.ts
//export function bar() {
//}
//// @Filename: collisionExportsRequireAndAlias_file3333.ts
//export function bar2() {
//}
//// @Filename: collisionExportsRequireAndAlias_file2.ts
//import require = require('collisionExportsRequireAndAlias_file1'); // Error
//import exports = require('collisionExportsRequireAndAlias_file3333'); // Error
//export function foo() {
// require.bar();
//}
//export function foo2() {
// exports.bar2();
//}
// @Filename: collisionExportsRequireAndAlias_file3333.ts
export function bar2() {
}
// @Filename: collisionExportsRequireAndAlias_file2.ts
import require = require('collisionExportsRequireAndAlias_file1'); // Error
import exports = require('collisionExportsRequireAndAlias_file3333'); // Error
export function foo() {
require.bar();
}
export function foo2() {
exports.bar2();
}

View File

@ -0,0 +1,37 @@
//@module: amd
//@filename: collisionExportsRequireAndAmbientClass_externalmodule.ts
export declare class require {
}
export declare class exports {
}
declare module m1 {
class require {
}
class exports {
}
}
module m2 {
export declare class require {
}
export declare class exports {
}
}
//@filename: collisionExportsRequireAndAmbientClass_globalFile.ts
declare class require {
}
declare class exports {
}
declare module m3 {
class require {
}
class exports {
}
}
module m4 {
export declare class require {
}
export declare class exports {
}
var a = 10;
}

View File

@ -0,0 +1,60 @@
//@module: amd
//@filename: collisionExportsRequireAndAmbientEnum_externalmodule.ts
export declare enum require {
_thisVal1,
_thisVal2,
}
export declare enum exports {
_thisVal1,
_thisVal2,
}
declare module m1 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m2 {
export declare enum require {
_thisVal1,
_thisVal2,
}
export declare enum exports {
_thisVal1,
_thisVal2,
}
}
//@filename: collisionExportsRequireAndAmbientEnum_globalFile.ts
declare enum require {
_thisVal1,
_thisVal2,
}
declare enum exports {
_thisVal1,
_thisVal2,
}
declare module m3 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m4 {
export declare enum require {
_thisVal1,
_thisVal2,
}
export declare enum exports {
_thisVal1,
_thisVal2,
}
}

View File

@ -0,0 +1,14 @@
//@module: amd
export declare function exports(): number;
export declare function require(): string[];
declare module m1 {
function exports(): string;
function require(): number;
}
module m2 {
export declare function exports(): string;
export declare function require(): string[];
var a = 10;
}

View File

@ -0,0 +1,11 @@
declare function exports(): number;
declare function require(): string;
declare module m3 {
function exports(): string[];
function require(): number[];
}
module m4 {
export declare function exports(): string;
export declare function require(): string;
var a = 10;
}

View File

@ -0,0 +1,93 @@
//@module: amd
//@filename: collisionExportsRequireAndAmbientModule_externalmodule.ts
export declare module require {
export interface I {
}
export class C {
}
}
export function foo(): require.I {
return null;
}
export declare module exports {
export interface I {
}
export class C {
}
}
export function foo2(): exports.I {
return null;
}
declare module m1 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m2 {
export declare module require {
export interface I {
}
export class C {
}
}
export declare module exports {
export interface I {
}
export class C {
}
}
var a = 10;
}
//@filename: collisionExportsRequireAndAmbientModule_globalFile.ts
declare module require {
export interface I {
}
export class C {
}
}
declare module exports {
export interface I {
}
export class C {
}
}
declare module m3 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m4 {
export declare module require {
export interface I {
}
export class C {
}
}
export declare module exports {
export interface I {
}
export class C {
}
}
var a = 10;
}

View File

@ -0,0 +1,26 @@
//@module: amd
//@filename: collisionExportsRequireAndAmbientVar_externalmodule.ts
export declare var exports: number;
export declare var require: string;
declare module m1 {
var exports: string;
var require: number;
}
module m2 {
export declare var exports: number;
export declare var require: string;
var a = 10;
}
//@filename: collisionExportsRequireAndAmbientVar_globalFile.ts
declare var exports: number;
declare var require: string;
declare module m3 {
var exports: string;
var require: number;
}
module m4 {
export declare var exports: string;
export declare var require: number;
var a = 10;
}

View File

@ -1,5 +1,36 @@
//@module: amd
//@filename: collisionExportsRequireAndClass_externalmodule.ts
export class require {
}
export class exports {
}
module m1 {
class require {
}
class exports {
}
}
module m2 {
export class require {
}
export class exports {
}
}
//@filename: collisionExportsRequireAndClass_globalFile.ts
class require {
}
class exports {
}
module m3 {
class require {
}
class exports {
}
}
module m4 {
export class require {
}
export class exports {
}
}

View File

@ -1,4 +1,5 @@
//@module: amd
//@filename: collisionExportsRequireAndEnum_externalmodule.ts
export enum require { // Error
_thisVal1,
_thisVal2,
@ -6,4 +7,54 @@ export enum require { // Error
export enum exports { // Error
_thisVal1,
_thisVal2,
}
module m1 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m2 {
export enum require {
_thisVal1,
_thisVal2,
}
export enum exports {
_thisVal1,
_thisVal2,
}
}
//@filename: collisionExportsRequireAndEnum_globalFile.ts
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
module m3 {
enum require {
_thisVal1,
_thisVal2,
}
enum exports {
_thisVal1,
_thisVal2,
}
}
module m4 {
export enum require {
_thisVal1,
_thisVal2,
}
export enum exports {
_thisVal1,
_thisVal2,
}
}

View File

@ -5,3 +5,19 @@ export function exports() {
export function require() {
return "require";
}
module m1 {
function exports() {
return 1;
}
function require() {
return "require";
}
}
module m2 {
export function exports() {
return 1;
}
export function require() {
return "require";
}
}

View File

@ -0,0 +1,22 @@
function exports() {
return 1;
}
function require() {
return "require";
}
module m3 {
function exports() {
return 1;
}
function require() {
return "require";
}
}
module m4 {
export function exports() {
return 1;
}
export function require() {
return "require";
}
}

View File

@ -0,0 +1,23 @@
//@module: amd
export module m {
export class c {
}
}
import exports = m.c;
import require = m.c;
new exports();
new require();
module m1 {
import exports = m.c;
import require = m.c;
new exports();
new require();
}
module m2 {
export import exports = m.c;
export import require = m.c;
new exports();
new require();
}

View File

@ -0,0 +1,22 @@
module mOfGloalFile {
export class c {
}
}
import exports = mOfGloalFile.c;
import require = mOfGloalFile.c;
new exports();
new require();
module m1 {
import exports = mOfGloalFile.c;
import require = mOfGloalFile.c;
new exports();
new require();
}
module m2 {
export import exports = mOfGloalFile.c;
export import require = mOfGloalFile.c;
new exports();
new require();
}

View File

@ -1,4 +1,5 @@
//@module: amd
//@filename: collisionExportsRequireAndModule_externalmodule.ts
export module require {
export interface I {
}
@ -16,4 +17,74 @@ export module exports {
}
export function foo2(): exports.I {
return null;
}
}
module m1 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m2 {
export module require {
export interface I {
}
export class C {
}
}
export module exports {
export interface I {
}
export class C {
}
}
}
//@filename: collisionExportsRequireAndModule_globalFile.ts
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
module m3 {
module require {
export interface I {
}
export class C {
}
}
module exports {
export interface I {
}
export class C {
}
}
}
module m4 {
export module require {
export interface I {
}
export class C {
}
}
export module exports {
export interface I {
}
export class C {
}
}
}

View File

@ -1,5 +1,26 @@
//@module: amd
//@filename: collisionExportsRequireAndVar_externalmodule.ts
export function foo() {
}
var exports = 1;
var require = "require";
module m1 {
var exports = 0;
var require = "require";
}
module m2 {
export var exports = 0;
export var require = "require";
}
//@filename: collisionExportsRequireAndVar_globalFile.ts
var exports = 0;
var require = "require";
module m3 {
var exports = 0;
var require = "require";
}
module m4 {
export var exports = 0;
export var require = "require";
}