diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientClass.js b/tests/baselines/reference/collisionExportsRequireAndAmbientClass.js new file mode 100644 index 00000000000..9f4106616a8 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientClass.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientClass.types b/tests/baselines/reference/collisionExportsRequireAndAmbientClass.types new file mode 100644 index 00000000000..8212c6ffc61 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientClass.types @@ -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 +} diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientEnum.js b/tests/baselines/reference/collisionExportsRequireAndAmbientEnum.js new file mode 100644 index 00000000000..829f93e4fa7 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientEnum.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientEnum.types b/tests/baselines/reference/collisionExportsRequireAndAmbientEnum.types new file mode 100644 index 00000000000..3bc7a00063b --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientEnum.types @@ -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 + } +} diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.js b/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.js new file mode 100644 index 00000000000..c1fb0ce163a --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.js @@ -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 = {})); +}); diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.types b/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.types new file mode 100644 index 00000000000..024bdff8ea3 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.types @@ -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 +} diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.js b/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.js new file mode 100644 index 00000000000..44294f51cb5 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.types b/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.types new file mode 100644 index 00000000000..0ecde7f429f --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.types @@ -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 +} diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientModule.js b/tests/baselines/reference/collisionExportsRequireAndAmbientModule.js new file mode 100644 index 00000000000..4979e9e50ca --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientModule.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientModule.types b/tests/baselines/reference/collisionExportsRequireAndAmbientModule.types new file mode 100644 index 00000000000..7e41093daaa --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientModule.types @@ -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 +} + diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientVar.js b/tests/baselines/reference/collisionExportsRequireAndAmbientVar.js new file mode 100644 index 00000000000..7a552251b15 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientVar.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientVar.types b/tests/baselines/reference/collisionExportsRequireAndAmbientVar.types new file mode 100644 index 00000000000..1419df3504b --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientVar.types @@ -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 +} diff --git a/tests/baselines/reference/collisionExportsRequireAndClass.errors.txt b/tests/baselines/reference/collisionExportsRequireAndClass.errors.txt index 9b90ab50c11..8fea5b475f2 100644 --- a/tests/baselines/reference/collisionExportsRequireAndClass.errors.txt +++ b/tests/baselines/reference/collisionExportsRequireAndClass.errors.txt @@ -1,4 +1,4 @@ -==== tests/cases/compiler/collisionExportsRequireAndClass.ts (2 errors) ==== +==== 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. @@ -7,4 +7,33 @@ ~~~~~~~ !!! Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of an external module. } - \ No newline at end of file + 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 { + } + } \ No newline at end of file diff --git a/tests/baselines/reference/collisionExportsRequireAndClass.js b/tests/baselines/reference/collisionExportsRequireAndClass.js index 7ec2975f918..f337d9a0a35 100644 --- a/tests/baselines/reference/collisionExportsRequireAndClass.js +++ b/tests/baselines/reference/collisionExportsRequireAndClass.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndEnum.errors.txt b/tests/baselines/reference/collisionExportsRequireAndEnum.errors.txt index 0ecd5edef83..782e4958363 100644 --- a/tests/baselines/reference/collisionExportsRequireAndEnum.errors.txt +++ b/tests/baselines/reference/collisionExportsRequireAndEnum.errors.txt @@ -1,4 +1,4 @@ -==== tests/cases/compiler/collisionExportsRequireAndEnum.ts (2 errors) ==== +==== 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. @@ -10,4 +10,54 @@ !!! 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, + } } \ No newline at end of file diff --git a/tests/baselines/reference/collisionExportsRequireAndEnum.js b/tests/baselines/reference/collisionExportsRequireAndEnum.js index f495b534805..be63fa32851 100644 --- a/tests/baselines/reference/collisionExportsRequireAndEnum.js +++ b/tests/baselines/reference/collisionExportsRequireAndEnum.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndFunction.errors.txt b/tests/baselines/reference/collisionExportsRequireAndFunction.errors.txt index bf35c4ce334..49c6355c480 100644 --- a/tests/baselines/reference/collisionExportsRequireAndFunction.errors.txt +++ b/tests/baselines/reference/collisionExportsRequireAndFunction.errors.txt @@ -9,4 +9,19 @@ !!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module. return "require"; } - \ No newline at end of file + module m1 { + function exports() { + return 1; + } + function require() { + return "require"; + } + } + module m2 { + export function exports() { + return 1; + } + export function require() { + return "require"; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/collisionExportsRequireAndFunction.js b/tests/baselines/reference/collisionExportsRequireAndFunction.js index a7d4ca2492e..e768609f3c6 100644 --- a/tests/baselines/reference/collisionExportsRequireAndFunction.js +++ b/tests/baselines/reference/collisionExportsRequireAndFunction.js @@ -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 = {})); }); diff --git a/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.js b/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.js new file mode 100644 index 00000000000..1865d1aceff --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.types b/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.types new file mode 100644 index 00000000000..ba804feb91a --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.types @@ -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"; + } +} diff --git a/tests/baselines/reference/collisionExportsRequireAndInternalModuleAlias.errors.txt b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAlias.errors.txt new file mode 100644 index 00000000000..9facc72da23 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAlias.errors.txt @@ -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(); + } \ No newline at end of file diff --git a/tests/baselines/reference/collisionExportsRequireAndInternalModuleAlias.js b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAlias.js new file mode 100644 index 00000000000..a4c2a39c8f5 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAlias.js @@ -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 = {})); +}); diff --git a/tests/baselines/reference/collisionExportsRequireAndInternalModuleAliasInGlobalFile.js b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAliasInGlobalFile.js new file mode 100644 index 00000000000..c6a6e234ee9 --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAliasInGlobalFile.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndInternalModuleAliasInGlobalFile.types b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAliasInGlobalFile.types new file mode 100644 index 00000000000..11001fe115f --- /dev/null +++ b/tests/baselines/reference/collisionExportsRequireAndInternalModuleAliasInGlobalFile.types @@ -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 +} diff --git a/tests/baselines/reference/collisionExportsRequireAndModule.errors.txt b/tests/baselines/reference/collisionExportsRequireAndModule.errors.txt index 1fe42767adb..4f1f9c4cd4d 100644 --- a/tests/baselines/reference/collisionExportsRequireAndModule.errors.txt +++ b/tests/baselines/reference/collisionExportsRequireAndModule.errors.txt @@ -1,4 +1,4 @@ -==== tests/cases/compiler/collisionExportsRequireAndModule.ts (2 errors) ==== +==== 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. @@ -20,4 +20,75 @@ } export function foo2(): exports.I { return null; - } \ No newline at end of file + } + 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 { + } + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/collisionExportsRequireAndModule.js b/tests/baselines/reference/collisionExportsRequireAndModule.js index 88e53a922b0..76e170b18d1 100644 --- a/tests/baselines/reference/collisionExportsRequireAndModule.js +++ b/tests/baselines/reference/collisionExportsRequireAndModule.js @@ -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 = {})); diff --git a/tests/baselines/reference/collisionExportsRequireAndVar.errors.txt b/tests/baselines/reference/collisionExportsRequireAndVar.errors.txt index 127a40f0f0b..d5106a0fe50 100644 --- a/tests/baselines/reference/collisionExportsRequireAndVar.errors.txt +++ b/tests/baselines/reference/collisionExportsRequireAndVar.errors.txt @@ -1,4 +1,4 @@ -==== tests/cases/compiler/collisionExportsRequireAndVar.ts (2 errors) ==== +==== tests/cases/compiler/collisionExportsRequireAndVar_externalmodule.ts (2 errors) ==== export function foo() { } var exports = 1; @@ -7,4 +7,23 @@ var require = "require"; ~~~~~~~ !!! Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of an external module. - \ No newline at end of file + 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"; + } \ No newline at end of file diff --git a/tests/baselines/reference/collisionExportsRequireAndVar.js b/tests/baselines/reference/collisionExportsRequireAndVar.js index a7604038563..07c8827603e 100644 --- a/tests/baselines/reference/collisionExportsRequireAndVar.js +++ b/tests/baselines/reference/collisionExportsRequireAndVar.js @@ -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 = {})); diff --git a/tests/cases/compiler/collisionExportsRequireAndAmbientClass.ts b/tests/cases/compiler/collisionExportsRequireAndAmbientClass.ts new file mode 100644 index 00000000000..563c834c79c --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndAmbientClass.ts @@ -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; +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndAmbientEnum.ts b/tests/cases/compiler/collisionExportsRequireAndAmbientEnum.ts new file mode 100644 index 00000000000..5366d5511f9 --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndAmbientEnum.ts @@ -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, + } +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndAmbientFunction.ts b/tests/cases/compiler/collisionExportsRequireAndAmbientFunction.ts new file mode 100644 index 00000000000..caabb75971a --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndAmbientFunction.ts @@ -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; +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndAmbientFunctionInGlobalFile.ts b/tests/cases/compiler/collisionExportsRequireAndAmbientFunctionInGlobalFile.ts new file mode 100644 index 00000000000..2b3663f4d9e --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndAmbientFunctionInGlobalFile.ts @@ -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; +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndAmbientModule.ts b/tests/cases/compiler/collisionExportsRequireAndAmbientModule.ts new file mode 100644 index 00000000000..b94fcb0cc32 --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndAmbientModule.ts @@ -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; +} diff --git a/tests/cases/compiler/collisionExportsRequireAndAmbientVar.ts b/tests/cases/compiler/collisionExportsRequireAndAmbientVar.ts new file mode 100644 index 00000000000..0e17603c925 --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndAmbientVar.ts @@ -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; +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndClass.ts b/tests/cases/compiler/collisionExportsRequireAndClass.ts index 73efb9cbe89..0bc1e0e337b 100644 --- a/tests/cases/compiler/collisionExportsRequireAndClass.ts +++ b/tests/cases/compiler/collisionExportsRequireAndClass.ts @@ -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 { + } +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndEnum.ts b/tests/cases/compiler/collisionExportsRequireAndEnum.ts index 936db765c14..b8bb1727480 100644 --- a/tests/cases/compiler/collisionExportsRequireAndEnum.ts +++ b/tests/cases/compiler/collisionExportsRequireAndEnum.ts @@ -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, + } } \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndFunction.ts b/tests/cases/compiler/collisionExportsRequireAndFunction.ts index 94aec04ff2c..185b0a41805 100644 --- a/tests/cases/compiler/collisionExportsRequireAndFunction.ts +++ b/tests/cases/compiler/collisionExportsRequireAndFunction.ts @@ -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"; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndFunctionInGlobalFile.ts b/tests/cases/compiler/collisionExportsRequireAndFunctionInGlobalFile.ts new file mode 100644 index 00000000000..050887580f7 --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndFunctionInGlobalFile.ts @@ -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"; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndInternalModuleAlias.ts b/tests/cases/compiler/collisionExportsRequireAndInternalModuleAlias.ts new file mode 100644 index 00000000000..e76fc572b75 --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndInternalModuleAlias.ts @@ -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(); +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndInternalModuleAliasInGlobalFile.ts b/tests/cases/compiler/collisionExportsRequireAndInternalModuleAliasInGlobalFile.ts new file mode 100644 index 00000000000..d76da86891e --- /dev/null +++ b/tests/cases/compiler/collisionExportsRequireAndInternalModuleAliasInGlobalFile.ts @@ -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(); +} \ No newline at end of file diff --git a/tests/cases/compiler/collisionExportsRequireAndModule.ts b/tests/cases/compiler/collisionExportsRequireAndModule.ts index c0254243234..dc79e15605c 100644 --- a/tests/cases/compiler/collisionExportsRequireAndModule.ts +++ b/tests/cases/compiler/collisionExportsRequireAndModule.ts @@ -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; -} \ No newline at end of file +} +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 { + } + } +} diff --git a/tests/cases/compiler/collisionExportsRequireAndVar.ts b/tests/cases/compiler/collisionExportsRequireAndVar.ts index da1000009fd..af98b1a7d09 100644 --- a/tests/cases/compiler/collisionExportsRequireAndVar.ts +++ b/tests/cases/compiler/collisionExportsRequireAndVar.ts @@ -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"; +} \ No newline at end of file