Report error on Class/Interface heritage clause if it cant be accessed

Fixes #78 and #83
This commit is contained in:
Sheetal Nandi
2014-07-18 18:07:38 -07:00
parent 999b7fed92
commit 09ec1bb9ae
13 changed files with 1371 additions and 4 deletions

View File

@@ -0,0 +1,106 @@
==== tests/cases/compiler/privacyClassExtendsClauseDeclFile_externalModule.ts (4 errors) ====
export module publicModule {
export class publicClassInPublicModule {
private f1() {
}
}
class privateClassInPublicModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPublicModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported class 'publicClassExtendingPrivateClassInModule' has or is using private name 'privateClassInPublicModule'.
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported class 'publicClassExtendingFromPrivateModuleClass' has or is using name 'privateModule.publicClassInPrivateModule' from private module 'privateModule'.
}
}
module privateModule {
export class publicClassInPrivateModule {
private f1() {
}
}
class privateClassInPrivateModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPrivateModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPrivateModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPrivateModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPrivateModule {
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
}
export class publicClass {
private f1() {
}
}
class privateClass {
}
class privateClassExtendingPublicClass extends publicClass {
}
class privateClassExtendingPrivateClassInModule extends privateClass {
}
export class publicClassExtendingPublicClass extends publicClass {
}
export class publicClassExtendingPrivateClass extends privateClass { // Should error
~~~~~~~~~~~~
!!! Extends clause of exported class 'publicClassExtendingPrivateClass' has or is using private name 'privateClass'.
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported class 'publicClassExtendingFromPrivateModuleClass' has or is using name 'privateModule.publicClassInPrivateModule' from private module 'privateModule'.
}
==== tests/cases/compiler/privacyClassExtendsClauseDeclFile_GlobalFile.ts (1 errors) ====
module publicModuleInGlobal {
export class publicClassInPublicModule {
private f1() {
}
}
class privateClassInPublicModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPublicModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported class 'publicClassExtendingPrivateClassInModule' has or is using private name 'privateClassInPublicModule'.
}
}
class publicClassInGlobal {
}
class publicClassExtendingPublicClassInGlobal extends publicClassInGlobal {
}

View File

@@ -0,0 +1,351 @@
//// [tests/cases/compiler/privacyClassExtendsClauseDeclFile.ts] ////
//// [privacyClassExtendsClauseDeclFile_externalModule.ts]
export module publicModule {
export class publicClassInPublicModule {
private f1() {
}
}
class privateClassInPublicModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPublicModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { // Should error
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { // Should error
}
}
module privateModule {
export class publicClassInPrivateModule {
private f1() {
}
}
class privateClassInPrivateModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPrivateModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPrivateModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPrivateModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPrivateModule {
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
}
export class publicClass {
private f1() {
}
}
class privateClass {
}
class privateClassExtendingPublicClass extends publicClass {
}
class privateClassExtendingPrivateClassInModule extends privateClass {
}
export class publicClassExtendingPublicClass extends publicClass {
}
export class publicClassExtendingPrivateClass extends privateClass { // Should error
}
class privateClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule {
}
export class publicClassExtendingFromPrivateModuleClass extends privateModule.publicClassInPrivateModule { // Should error
}
//// [privacyClassExtendsClauseDeclFile_GlobalFile.ts]
module publicModuleInGlobal {
export class publicClassInPublicModule {
private f1() {
}
}
class privateClassInPublicModule {
}
class privateClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
class privateClassExtendingPrivateClassInModule extends privateClassInPublicModule {
}
export class publicClassExtendingPublicClassInModule extends publicClassInPublicModule {
}
export class publicClassExtendingPrivateClassInModule extends privateClassInPublicModule { // Should error
}
}
class publicClassInGlobal {
}
class publicClassExtendingPublicClassInGlobal extends publicClassInGlobal {
}
//// [privacyClassExtendsClauseDeclFile_externalModule.js]
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
(function (publicModule) {
var publicClassInPublicModule = (function () {
function publicClassInPublicModule() {
}
publicClassInPublicModule.prototype.f1 = function () {
};
return publicClassInPublicModule;
})();
publicModule.publicClassInPublicModule = publicClassInPublicModule;
var privateClassInPublicModule = (function () {
function privateClassInPublicModule() {
}
return privateClassInPublicModule;
})();
var privateClassExtendingPublicClassInModule = (function (_super) {
__extends(privateClassExtendingPublicClassInModule, _super);
function privateClassExtendingPublicClassInModule() {
_super.apply(this, arguments);
}
return privateClassExtendingPublicClassInModule;
})(publicClassInPublicModule);
var privateClassExtendingPrivateClassInModule = (function (_super) {
__extends(privateClassExtendingPrivateClassInModule, _super);
function privateClassExtendingPrivateClassInModule() {
_super.apply(this, arguments);
}
return privateClassExtendingPrivateClassInModule;
})(privateClassInPublicModule);
var publicClassExtendingPublicClassInModule = (function (_super) {
__extends(publicClassExtendingPublicClassInModule, _super);
function publicClassExtendingPublicClassInModule() {
_super.apply(this, arguments);
}
return publicClassExtendingPublicClassInModule;
})(publicClassInPublicModule);
publicModule.publicClassExtendingPublicClassInModule = publicClassExtendingPublicClassInModule;
var publicClassExtendingPrivateClassInModule = (function (_super) {
__extends(publicClassExtendingPrivateClassInModule, _super);
function publicClassExtendingPrivateClassInModule() {
_super.apply(this, arguments);
}
return publicClassExtendingPrivateClassInModule;
})(privateClassInPublicModule);
publicModule.publicClassExtendingPrivateClassInModule = publicClassExtendingPrivateClassInModule;
var privateClassExtendingFromPrivateModuleClass = (function (_super) {
__extends(privateClassExtendingFromPrivateModuleClass, _super);
function privateClassExtendingFromPrivateModuleClass() {
_super.apply(this, arguments);
}
return privateClassExtendingFromPrivateModuleClass;
})(privateModule.publicClassInPrivateModule);
var publicClassExtendingFromPrivateModuleClass = (function (_super) {
__extends(publicClassExtendingFromPrivateModuleClass, _super);
function publicClassExtendingFromPrivateModuleClass() {
_super.apply(this, arguments);
}
return publicClassExtendingFromPrivateModuleClass;
})(privateModule.publicClassInPrivateModule);
publicModule.publicClassExtendingFromPrivateModuleClass = publicClassExtendingFromPrivateModuleClass;
})(exports.publicModule || (exports.publicModule = {}));
var publicModule = exports.publicModule;
var privateModule;
(function (privateModule) {
var publicClassInPrivateModule = (function () {
function publicClassInPrivateModule() {
}
publicClassInPrivateModule.prototype.f1 = function () {
};
return publicClassInPrivateModule;
})();
privateModule.publicClassInPrivateModule = publicClassInPrivateModule;
var privateClassInPrivateModule = (function () {
function privateClassInPrivateModule() {
}
return privateClassInPrivateModule;
})();
var privateClassExtendingPublicClassInModule = (function (_super) {
__extends(privateClassExtendingPublicClassInModule, _super);
function privateClassExtendingPublicClassInModule() {
_super.apply(this, arguments);
}
return privateClassExtendingPublicClassInModule;
})(publicClassInPrivateModule);
var privateClassExtendingPrivateClassInModule = (function (_super) {
__extends(privateClassExtendingPrivateClassInModule, _super);
function privateClassExtendingPrivateClassInModule() {
_super.apply(this, arguments);
}
return privateClassExtendingPrivateClassInModule;
})(privateClassInPrivateModule);
var publicClassExtendingPublicClassInModule = (function (_super) {
__extends(publicClassExtendingPublicClassInModule, _super);
function publicClassExtendingPublicClassInModule() {
_super.apply(this, arguments);
}
return publicClassExtendingPublicClassInModule;
})(publicClassInPrivateModule);
privateModule.publicClassExtendingPublicClassInModule = publicClassExtendingPublicClassInModule;
var publicClassExtendingPrivateClassInModule = (function (_super) {
__extends(publicClassExtendingPrivateClassInModule, _super);
function publicClassExtendingPrivateClassInModule() {
_super.apply(this, arguments);
}
return publicClassExtendingPrivateClassInModule;
})(privateClassInPrivateModule);
privateModule.publicClassExtendingPrivateClassInModule = publicClassExtendingPrivateClassInModule;
var privateClassExtendingFromPrivateModuleClass = (function (_super) {
__extends(privateClassExtendingFromPrivateModuleClass, _super);
function privateClassExtendingFromPrivateModuleClass() {
_super.apply(this, arguments);
}
return privateClassExtendingFromPrivateModuleClass;
})(privateModule.publicClassInPrivateModule);
var publicClassExtendingFromPrivateModuleClass = (function (_super) {
__extends(publicClassExtendingFromPrivateModuleClass, _super);
function publicClassExtendingFromPrivateModuleClass() {
_super.apply(this, arguments);
}
return publicClassExtendingFromPrivateModuleClass;
})(privateModule.publicClassInPrivateModule);
privateModule.publicClassExtendingFromPrivateModuleClass = publicClassExtendingFromPrivateModuleClass;
})(privateModule || (privateModule = {}));
var publicClass = (function () {
function publicClass() {
}
publicClass.prototype.f1 = function () {
};
return publicClass;
})();
exports.publicClass = publicClass;
var privateClass = (function () {
function privateClass() {
}
return privateClass;
})();
var privateClassExtendingPublicClass = (function (_super) {
__extends(privateClassExtendingPublicClass, _super);
function privateClassExtendingPublicClass() {
_super.apply(this, arguments);
}
return privateClassExtendingPublicClass;
})(publicClass);
var privateClassExtendingPrivateClassInModule = (function (_super) {
__extends(privateClassExtendingPrivateClassInModule, _super);
function privateClassExtendingPrivateClassInModule() {
_super.apply(this, arguments);
}
return privateClassExtendingPrivateClassInModule;
})(privateClass);
var publicClassExtendingPublicClass = (function (_super) {
__extends(publicClassExtendingPublicClass, _super);
function publicClassExtendingPublicClass() {
_super.apply(this, arguments);
}
return publicClassExtendingPublicClass;
})(publicClass);
exports.publicClassExtendingPublicClass = publicClassExtendingPublicClass;
var publicClassExtendingPrivateClass = (function (_super) {
__extends(publicClassExtendingPrivateClass, _super);
function publicClassExtendingPrivateClass() {
_super.apply(this, arguments);
}
return publicClassExtendingPrivateClass;
})(privateClass);
exports.publicClassExtendingPrivateClass = publicClassExtendingPrivateClass;
var privateClassExtendingFromPrivateModuleClass = (function (_super) {
__extends(privateClassExtendingFromPrivateModuleClass, _super);
function privateClassExtendingFromPrivateModuleClass() {
_super.apply(this, arguments);
}
return privateClassExtendingFromPrivateModuleClass;
})(privateModule.publicClassInPrivateModule);
var publicClassExtendingFromPrivateModuleClass = (function (_super) {
__extends(publicClassExtendingFromPrivateModuleClass, _super);
function publicClassExtendingFromPrivateModuleClass() {
_super.apply(this, arguments);
}
return publicClassExtendingFromPrivateModuleClass;
})(privateModule.publicClassInPrivateModule);
exports.publicClassExtendingFromPrivateModuleClass = publicClassExtendingFromPrivateModuleClass;
//// [privacyClassExtendsClauseDeclFile_GlobalFile.js]
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var publicModuleInGlobal;
(function (publicModuleInGlobal) {
var publicClassInPublicModule = (function () {
function publicClassInPublicModule() {
}
publicClassInPublicModule.prototype.f1 = function () {
};
return publicClassInPublicModule;
})();
publicModuleInGlobal.publicClassInPublicModule = publicClassInPublicModule;
var privateClassInPublicModule = (function () {
function privateClassInPublicModule() {
}
return privateClassInPublicModule;
})();
var privateClassExtendingPublicClassInModule = (function (_super) {
__extends(privateClassExtendingPublicClassInModule, _super);
function privateClassExtendingPublicClassInModule() {
_super.apply(this, arguments);
}
return privateClassExtendingPublicClassInModule;
})(publicClassInPublicModule);
var privateClassExtendingPrivateClassInModule = (function (_super) {
__extends(privateClassExtendingPrivateClassInModule, _super);
function privateClassExtendingPrivateClassInModule() {
_super.apply(this, arguments);
}
return privateClassExtendingPrivateClassInModule;
})(privateClassInPublicModule);
var publicClassExtendingPublicClassInModule = (function (_super) {
__extends(publicClassExtendingPublicClassInModule, _super);
function publicClassExtendingPublicClassInModule() {
_super.apply(this, arguments);
}
return publicClassExtendingPublicClassInModule;
})(publicClassInPublicModule);
publicModuleInGlobal.publicClassExtendingPublicClassInModule = publicClassExtendingPublicClassInModule;
var publicClassExtendingPrivateClassInModule = (function (_super) {
__extends(publicClassExtendingPrivateClassInModule, _super);
function publicClassExtendingPrivateClassInModule() {
_super.apply(this, arguments);
}
return publicClassExtendingPrivateClassInModule;
})(privateClassInPublicModule);
publicModuleInGlobal.publicClassExtendingPrivateClassInModule = publicClassExtendingPrivateClassInModule;
})(publicModuleInGlobal || (publicModuleInGlobal = {}));
var publicClassInGlobal = (function () {
function publicClassInGlobal() {
}
return publicClassInGlobal;
})();
var publicClassExtendingPublicClassInGlobal = (function (_super) {
__extends(publicClassExtendingPublicClassInGlobal, _super);
function publicClassExtendingPublicClassInGlobal() {
_super.apply(this, arguments);
}
return publicClassExtendingPublicClassInGlobal;
})(publicClassInGlobal);

View File

@@ -0,0 +1,105 @@
==== tests/cases/compiler/privacyClassImplementsClauseDeclFile_externalModule.ts (5 errors) ====
export module publicModule {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Implements clause of exported class 'publicClassImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Implements clause of exported class 'publicClassImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.
}
export class publicClassImplementingPrivateAndPublicInterface implements privateInterfaceInPublicModule, publicInterfaceInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Implements clause of exported class 'publicClassImplementingPrivateAndPublicInterface' has or is using private name 'privateInterfaceInPublicModule'.
}
}
module privateModule {
export interface publicInterfaceInPrivateModule {
}
interface privateInterfaceInPrivateModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule {
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
}
export interface publicInterface {
}
interface privateInterface {
}
class privateClassImplementingPublicInterface implements publicInterface {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterface {
}
export class publicClassImplementingPublicInterface implements publicInterface {
}
export class publicClassImplementingPrivateInterface implements privateInterface { // Should error
~~~~~~~~~~~~~~~~
!!! Implements clause of exported class 'publicClassImplementingPrivateInterface' has or is using private name 'privateInterface'.
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Implements clause of exported class 'publicClassImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.
}
==== tests/cases/compiler/privacyClassImplementsClauseDeclFile_GlobalFile.ts (1 errors) ====
module publicModuleInGlobal {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Implements clause of exported class 'publicClassImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
}
}
interface publicInterfaceInGlobal {
}
class publicClassImplementingPublicInterfaceInGlobal implements publicInterfaceInGlobal {
}

View File

@@ -0,0 +1,239 @@
//// [tests/cases/compiler/privacyClassImplementsClauseDeclFile.ts] ////
//// [privacyClassImplementsClauseDeclFile_externalModule.ts]
export module publicModule {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
}
export class publicClassImplementingPrivateAndPublicInterface implements privateInterfaceInPublicModule, publicInterfaceInPublicModule { // Should error
}
}
module privateModule {
export interface publicInterfaceInPrivateModule {
}
interface privateInterfaceInPrivateModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPrivateModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPrivateModule {
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
}
export interface publicInterface {
}
interface privateInterface {
}
class privateClassImplementingPublicInterface implements publicInterface {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterface {
}
export class publicClassImplementingPublicInterface implements publicInterface {
}
export class publicClassImplementingPrivateInterface implements privateInterface { // Should error
}
class privateClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule {
}
export class publicClassImplementingFromPrivateModuleInterface implements privateModule.publicInterfaceInPrivateModule { // Should error
}
//// [privacyClassImplementsClauseDeclFile_GlobalFile.ts]
module publicModuleInGlobal {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
class privateClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
class privateClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule {
}
export class publicClassImplementingPublicInterfaceInModule implements publicInterfaceInPublicModule {
}
export class publicClassImplementingPrivateInterfaceInModule implements privateInterfaceInPublicModule { // Should error
}
}
interface publicInterfaceInGlobal {
}
class publicClassImplementingPublicInterfaceInGlobal implements publicInterfaceInGlobal {
}
//// [privacyClassImplementsClauseDeclFile_externalModule.js]
(function (publicModule) {
var privateClassImplementingPublicInterfaceInModule = (function () {
function privateClassImplementingPublicInterfaceInModule() {
}
return privateClassImplementingPublicInterfaceInModule;
})();
var privateClassImplementingPrivateInterfaceInModule = (function () {
function privateClassImplementingPrivateInterfaceInModule() {
}
return privateClassImplementingPrivateInterfaceInModule;
})();
var publicClassImplementingPublicInterfaceInModule = (function () {
function publicClassImplementingPublicInterfaceInModule() {
}
return publicClassImplementingPublicInterfaceInModule;
})();
publicModule.publicClassImplementingPublicInterfaceInModule = publicClassImplementingPublicInterfaceInModule;
var publicClassImplementingPrivateInterfaceInModule = (function () {
function publicClassImplementingPrivateInterfaceInModule() {
}
return publicClassImplementingPrivateInterfaceInModule;
})();
publicModule.publicClassImplementingPrivateInterfaceInModule = publicClassImplementingPrivateInterfaceInModule;
var privateClassImplementingFromPrivateModuleInterface = (function () {
function privateClassImplementingFromPrivateModuleInterface() {
}
return privateClassImplementingFromPrivateModuleInterface;
})();
var publicClassImplementingFromPrivateModuleInterface = (function () {
function publicClassImplementingFromPrivateModuleInterface() {
}
return publicClassImplementingFromPrivateModuleInterface;
})();
publicModule.publicClassImplementingFromPrivateModuleInterface = publicClassImplementingFromPrivateModuleInterface;
var publicClassImplementingPrivateAndPublicInterface = (function () {
function publicClassImplementingPrivateAndPublicInterface() {
}
return publicClassImplementingPrivateAndPublicInterface;
})();
publicModule.publicClassImplementingPrivateAndPublicInterface = publicClassImplementingPrivateAndPublicInterface;
})(exports.publicModule || (exports.publicModule = {}));
var publicModule = exports.publicModule;
var privateModule;
(function (privateModule) {
var privateClassImplementingPublicInterfaceInModule = (function () {
function privateClassImplementingPublicInterfaceInModule() {
}
return privateClassImplementingPublicInterfaceInModule;
})();
var privateClassImplementingPrivateInterfaceInModule = (function () {
function privateClassImplementingPrivateInterfaceInModule() {
}
return privateClassImplementingPrivateInterfaceInModule;
})();
var publicClassImplementingPublicInterfaceInModule = (function () {
function publicClassImplementingPublicInterfaceInModule() {
}
return publicClassImplementingPublicInterfaceInModule;
})();
privateModule.publicClassImplementingPublicInterfaceInModule = publicClassImplementingPublicInterfaceInModule;
var publicClassImplementingPrivateInterfaceInModule = (function () {
function publicClassImplementingPrivateInterfaceInModule() {
}
return publicClassImplementingPrivateInterfaceInModule;
})();
privateModule.publicClassImplementingPrivateInterfaceInModule = publicClassImplementingPrivateInterfaceInModule;
var privateClassImplementingFromPrivateModuleInterface = (function () {
function privateClassImplementingFromPrivateModuleInterface() {
}
return privateClassImplementingFromPrivateModuleInterface;
})();
var publicClassImplementingFromPrivateModuleInterface = (function () {
function publicClassImplementingFromPrivateModuleInterface() {
}
return publicClassImplementingFromPrivateModuleInterface;
})();
privateModule.publicClassImplementingFromPrivateModuleInterface = publicClassImplementingFromPrivateModuleInterface;
})(privateModule || (privateModule = {}));
var privateClassImplementingPublicInterface = (function () {
function privateClassImplementingPublicInterface() {
}
return privateClassImplementingPublicInterface;
})();
var privateClassImplementingPrivateInterfaceInModule = (function () {
function privateClassImplementingPrivateInterfaceInModule() {
}
return privateClassImplementingPrivateInterfaceInModule;
})();
var publicClassImplementingPublicInterface = (function () {
function publicClassImplementingPublicInterface() {
}
return publicClassImplementingPublicInterface;
})();
exports.publicClassImplementingPublicInterface = publicClassImplementingPublicInterface;
var publicClassImplementingPrivateInterface = (function () {
function publicClassImplementingPrivateInterface() {
}
return publicClassImplementingPrivateInterface;
})();
exports.publicClassImplementingPrivateInterface = publicClassImplementingPrivateInterface;
var privateClassImplementingFromPrivateModuleInterface = (function () {
function privateClassImplementingFromPrivateModuleInterface() {
}
return privateClassImplementingFromPrivateModuleInterface;
})();
var publicClassImplementingFromPrivateModuleInterface = (function () {
function publicClassImplementingFromPrivateModuleInterface() {
}
return publicClassImplementingFromPrivateModuleInterface;
})();
exports.publicClassImplementingFromPrivateModuleInterface = publicClassImplementingFromPrivateModuleInterface;
//// [privacyClassImplementsClauseDeclFile_GlobalFile.js]
var publicModuleInGlobal;
(function (publicModuleInGlobal) {
var privateClassImplementingPublicInterfaceInModule = (function () {
function privateClassImplementingPublicInterfaceInModule() {
}
return privateClassImplementingPublicInterfaceInModule;
})();
var privateClassImplementingPrivateInterfaceInModule = (function () {
function privateClassImplementingPrivateInterfaceInModule() {
}
return privateClassImplementingPrivateInterfaceInModule;
})();
var publicClassImplementingPublicInterfaceInModule = (function () {
function publicClassImplementingPublicInterfaceInModule() {
}
return publicClassImplementingPublicInterfaceInModule;
})();
publicModuleInGlobal.publicClassImplementingPublicInterfaceInModule = publicClassImplementingPublicInterfaceInModule;
var publicClassImplementingPrivateInterfaceInModule = (function () {
function publicClassImplementingPrivateInterfaceInModule() {
}
return publicClassImplementingPrivateInterfaceInModule;
})();
publicModuleInGlobal.publicClassImplementingPrivateInterfaceInModule = publicClassImplementingPrivateInterfaceInModule;
})(publicModuleInGlobal || (publicModuleInGlobal = {}));
var publicClassImplementingPublicInterfaceInGlobal = (function () {
function publicClassImplementingPublicInterfaceInGlobal() {
}
return publicClassImplementingPublicInterfaceInGlobal;
})();

View File

@@ -0,0 +1,105 @@
==== tests/cases/compiler/privacyInterfaceExtendsClauseDeclFile_externalModule.ts (5 errors) ====
export module publicModule {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported interface 'publicInterfaceImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported interface 'publicInterfaceImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.
}
export interface publicInterfaceImplementingPrivateAndPublicInterface extends privateInterfaceInPublicModule, publicInterfaceInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported interface 'publicInterfaceImplementingPrivateAndPublicInterface' has or is using private name 'privateInterfaceInPublicModule'.
}
}
module privateModule {
export interface publicInterfaceInPrivateModule {
}
interface privateInterfaceInPrivateModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule {
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
}
export interface publicInterface {
}
interface privateInterface {
}
interface privateInterfaceImplementingPublicInterface extends publicInterface {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterface {
}
export interface publicInterfaceImplementingPublicInterface extends publicInterface {
}
export interface publicInterfaceImplementingPrivateInterface extends privateInterface { // Should error
~~~~~~~~~~~~~~~~
!!! Extends clause of exported interface 'publicInterfaceImplementingPrivateInterface' has or is using private name 'privateInterface'.
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported interface 'publicInterfaceImplementingFromPrivateModuleInterface' has or is using name 'privateModule.publicInterfaceInPrivateModule' from private module 'privateModule'.
}
==== tests/cases/compiler/privacyInterfaceExtendsClauseDeclFile_GlobalFile.ts (1 errors) ====
module publicModuleInGlobal {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { // Should error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Extends clause of exported interface 'publicInterfaceImplementingPrivateInterfaceInModule' has or is using private name 'privateInterfaceInPublicModule'.
}
}
interface publicInterfaceInGlobal {
}
interface publicInterfaceImplementingPublicInterfaceInGlobal extends publicInterfaceInGlobal {
}

View File

@@ -0,0 +1,98 @@
//// [tests/cases/compiler/privacyInterfaceExtendsClauseDeclFile.ts] ////
//// [privacyInterfaceExtendsClauseDeclFile_externalModule.ts]
export module publicModule {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { // Should error
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { // Should error
}
export interface publicInterfaceImplementingPrivateAndPublicInterface extends privateInterfaceInPublicModule, publicInterfaceInPublicModule { // Should error
}
}
module privateModule {
export interface publicInterfaceInPrivateModule {
}
interface privateInterfaceInPrivateModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPrivateModule {
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
}
export interface publicInterface {
}
interface privateInterface {
}
interface privateInterfaceImplementingPublicInterface extends publicInterface {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterface {
}
export interface publicInterfaceImplementingPublicInterface extends publicInterface {
}
export interface publicInterfaceImplementingPrivateInterface extends privateInterface { // Should error
}
interface privateInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule {
}
export interface publicInterfaceImplementingFromPrivateModuleInterface extends privateModule.publicInterfaceInPrivateModule { // Should error
}
//// [privacyInterfaceExtendsClauseDeclFile_GlobalFile.ts]
module publicModuleInGlobal {
export interface publicInterfaceInPublicModule {
}
interface privateInterfaceInPublicModule {
}
interface privateInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
interface privateInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPublicInterfaceInModule extends publicInterfaceInPublicModule {
}
export interface publicInterfaceImplementingPrivateInterfaceInModule extends privateInterfaceInPublicModule { // Should error
}
}
interface publicInterfaceInGlobal {
}
interface publicInterfaceImplementingPublicInterfaceInGlobal extends publicInterfaceInGlobal {
}
//// [privacyInterfaceExtendsClauseDeclFile_externalModule.js]
//// [privacyInterfaceExtendsClauseDeclFile_GlobalFile.js]