Save & recalculate declare flag modifier on late printed statements (#29412)

* Save & recalculate declre flag modifier on late printed statements

* Accept related baseline updates
This commit is contained in:
Wesley Wigham 2019-01-14 13:53:04 -08:00 committed by GitHub
parent d4055a3234
commit dc0f4afe5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 137 additions and 1645 deletions

View File

@ -634,7 +634,10 @@ namespace ts {
if (!isLateVisibilityPaintedStatement(i)) {
return Debug.fail(`Late replaced statement was found which is not handled by the declaration transformer!: ${(ts as any).SyntaxKind ? (ts as any).SyntaxKind[(i as any).kind] : (i as any).kind}`);
}
const priorNeedsDeclare = needsDeclare;
needsDeclare = i.parent && isSourceFile(i.parent) && !(isExternalModule(i.parent) && isBundledEmit);
const result = transformTopLevelDeclaration(i, /*privateDeclaration*/ true);
needsDeclare = priorNeedsDeclare;
lateStatementReplacementMap.set("" + getOriginalNodeId(i), result);
}

View File

@ -0,0 +1,54 @@
//// [declarationEmitLocalClassHasRequiredDeclare.ts]
export declare namespace A {
namespace X { }
}
class X { }
export class A {
static X = X;
}
export declare namespace Y {
}
export class Y { }
//// [declarationEmitLocalClassHasRequiredDeclare.js]
"use strict";
exports.__esModule = true;
var X = /** @class */ (function () {
function X() {
}
return X;
}());
var A = /** @class */ (function () {
function A() {
}
A.X = X;
return A;
}());
exports.A = A;
var Y = /** @class */ (function () {
function Y() {
}
return Y;
}());
exports.Y = Y;
//// [declarationEmitLocalClassHasRequiredDeclare.d.ts]
export declare namespace A {
namespace X { }
}
declare class X {
}
export declare class A {
static X: typeof X;
}
export declare namespace Y {
}
export declare class Y {
}
export {};

View File

@ -0,0 +1,27 @@
=== tests/cases/compiler/declarationEmitLocalClassHasRequiredDeclare.ts ===
export declare namespace A {
>A : Symbol(A, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 0, 0), Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 4, 11))
namespace X { }
>X : Symbol(X, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 0, 28), Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 6, 16))
}
class X { }
>X : Symbol(X, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 2, 1))
export class A {
>A : Symbol(A, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 0, 0), Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 4, 11))
static X = X;
>X : Symbol(A.X, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 0, 28), Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 6, 16))
>X : Symbol(X, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 2, 1))
}
export declare namespace Y {
>Y : Symbol(Y, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 8, 1), Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 12, 1))
}
export class Y { }
>Y : Symbol(Y, Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 8, 1), Decl(declarationEmitLocalClassHasRequiredDeclare.ts, 12, 1))

View File

@ -0,0 +1,23 @@
=== tests/cases/compiler/declarationEmitLocalClassHasRequiredDeclare.ts ===
export declare namespace A {
namespace X { }
}
class X { }
>X : X
export class A {
>A : A
static X = X;
>X : typeof X
>X : typeof X
}
export declare namespace Y {
}
export class Y { }
>Y : Y

View File

@ -16,7 +16,7 @@ define(["require", "exports"], function (require, exports) {
});
FileName : /tests/cases/fourslash/inputFile.d.ts
class C {
declare class C {
}
export declare module M {
var foo: C;

View File

@ -77,7 +77,7 @@ export declare class B {
n: number;
}
//// [f3.d.ts]
namespace N {
declare namespace N {
interface Ifc {
a: any;
}

View File

@ -75,7 +75,7 @@ export declare class B {
n: number;
}
//// [f3.d.ts]
namespace N {
declare namespace N {
interface Ifc {
a: any;
}

View File

@ -80,7 +80,7 @@ export declare class B {
}
//// [f3.d.ts]
import { B } from "./f2";
namespace N {
declare namespace N {
interface Ifc {
a: number;
}
@ -100,46 +100,3 @@ declare module "./f1" {
export {};
//// [f4.d.ts]
import "./f3";
//// [DtsFileErrors]
tests/cases/compiler/f3.d.ts(2,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/f1.d.ts (0 errors) ====
export declare class A {
}
==== tests/cases/compiler/f2.d.ts (0 errors) ====
export declare class B {
n: number;
}
==== tests/cases/compiler/f3.d.ts (1 errors) ====
import { B } from "./f2";
namespace N {
~~~~~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
interface Ifc {
a: number;
}
interface Cls {
b: number;
}
}
import I = N.Ifc;
import C = N.Cls;
declare module "./f1" {
interface A {
foo(): B;
bar(): I;
baz(): C;
}
}
export {};
==== tests/cases/compiler/f4.d.ts (0 errors) ====
import "./f3";

View File

@ -3557,7 +3557,7 @@ var publicModuleInGlobal;
//// [privacyAccessorDeclFile_externalModule.d.ts]
class privateClass {
declare class privateClass {
}
export declare class publicClass {
}
@ -3815,274 +3815,3 @@ declare module publicModuleInGlobal {
myPublicMethod: privateModule.publicClass;
}
}
//// [DtsFileErrors]
tests/cases/compiler/privacyAccessorDeclFile_externalModule.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyAccessorDeclFile_externalModule.d.ts (1 errors) ====
class privateClass {
~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
}
export declare class publicClass {
}
export declare class publicClassWithWithPrivateGetAccessorTypes {
static readonly myPublicStaticMethod: privateClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: privateClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: privateClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: privateClass;
private readonly myPrivateMethod1;
}
export declare class publicClassWithWithPublicGetAccessorTypes {
static readonly myPublicStaticMethod: publicClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: publicClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: publicClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: publicClass;
private readonly myPrivateMethod1;
}
export declare class publicClassWithWithPrivateSetAccessorTypes {
static myPublicStaticMethod: privateClass;
private static myPrivateStaticMethod;
myPublicMethod: privateClass;
private myPrivateMethod;
}
export declare class publicClassWithWithPublicSetAccessorTypes {
static myPublicStaticMethod: publicClass;
private static myPrivateStaticMethod;
myPublicMethod: publicClass;
private myPrivateMethod;
}
export declare class publicClassWithPrivateModuleGetAccessorTypes {
static readonly myPublicStaticMethod: privateModule.publicClass;
readonly myPublicMethod: privateModule.publicClass;
static readonly myPublicStaticMethod1: privateModule.publicClass;
readonly myPublicMethod1: privateModule.publicClass;
}
export declare class publicClassWithPrivateModuleSetAccessorTypes {
static myPublicStaticMethod: privateModule.publicClass;
myPublicMethod: privateModule.publicClass;
}
export declare module publicModule {
class privateClass {
}
class publicClass {
}
class publicClassWithWithPrivateGetAccessorTypes {
static readonly myPublicStaticMethod: privateClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: privateClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: privateClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: privateClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPublicGetAccessorTypes {
static readonly myPublicStaticMethod: publicClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: publicClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: publicClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: publicClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPrivateSetAccessorTypes {
static myPublicStaticMethod: privateClass;
private static myPrivateStaticMethod;
myPublicMethod: privateClass;
private myPrivateMethod;
}
class publicClassWithWithPublicSetAccessorTypes {
static myPublicStaticMethod: publicClass;
private static myPrivateStaticMethod;
myPublicMethod: publicClass;
private myPrivateMethod;
}
class publicClassWithPrivateModuleGetAccessorTypes {
static readonly myPublicStaticMethod: privateModule.publicClass;
readonly myPublicMethod: privateModule.publicClass;
static readonly myPublicStaticMethod1: privateModule.publicClass;
readonly myPublicMethod1: privateModule.publicClass;
}
class publicClassWithPrivateModuleSetAccessorTypes {
static myPublicStaticMethod: privateModule.publicClass;
myPublicMethod: privateModule.publicClass;
}
}
declare module privateModule {
class privateClass {
}
class publicClass {
}
class publicClassWithWithPrivateGetAccessorTypes {
static readonly myPublicStaticMethod: privateClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: privateClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: privateClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: privateClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPublicGetAccessorTypes {
static readonly myPublicStaticMethod: publicClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: publicClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: publicClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: publicClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPrivateSetAccessorTypes {
static myPublicStaticMethod: privateClass;
private static myPrivateStaticMethod;
myPublicMethod: privateClass;
private myPrivateMethod;
}
class publicClassWithWithPublicSetAccessorTypes {
static myPublicStaticMethod: publicClass;
private static myPrivateStaticMethod;
myPublicMethod: publicClass;
private myPrivateMethod;
}
class publicClassWithPrivateModuleGetAccessorTypes {
static readonly myPublicStaticMethod: privateModule.publicClass;
readonly myPublicMethod: privateModule.publicClass;
static readonly myPublicStaticMethod1: publicClass;
readonly myPublicMethod1: publicClass;
}
class publicClassWithPrivateModuleSetAccessorTypes {
static myPublicStaticMethod: privateModule.publicClass;
myPublicMethod: privateModule.publicClass;
}
}
export {};
==== tests/cases/compiler/privacyAccessorDeclFile_GlobalFile.d.ts (0 errors) ====
declare class publicClassInGlobal {
}
declare class publicClassInGlobalWithPublicGetAccessorTypes {
static readonly myPublicStaticMethod: publicClassInGlobal;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: publicClassInGlobal;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: publicClassInGlobal;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: publicClassInGlobal;
private readonly myPrivateMethod1;
}
declare class publicClassInGlobalWithWithPublicSetAccessorTypes {
static myPublicStaticMethod: publicClassInGlobal;
private static myPrivateStaticMethod;
myPublicMethod: publicClassInGlobal;
private myPrivateMethod;
}
declare module publicModuleInGlobal {
class privateClass {
}
class publicClass {
}
module privateModule {
class privateClass {
}
class publicClass {
}
class publicClassWithWithPrivateGetAccessorTypes {
static readonly myPublicStaticMethod: privateClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: privateClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: privateClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: privateClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPublicGetAccessorTypes {
static readonly myPublicStaticMethod: publicClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: publicClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: publicClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: publicClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPrivateSetAccessorTypes {
static myPublicStaticMethod: privateClass;
private static myPrivateStaticMethod;
myPublicMethod: privateClass;
private myPrivateMethod;
}
class publicClassWithWithPublicSetAccessorTypes {
static myPublicStaticMethod: publicClass;
private static myPrivateStaticMethod;
myPublicMethod: publicClass;
private myPrivateMethod;
}
class publicClassWithPrivateModuleGetAccessorTypes {
static readonly myPublicStaticMethod: privateModule.publicClass;
readonly myPublicMethod: privateModule.publicClass;
static readonly myPublicStaticMethod1: publicClass;
readonly myPublicMethod1: publicClass;
}
class publicClassWithPrivateModuleSetAccessorTypes {
static myPublicStaticMethod: privateModule.publicClass;
myPublicMethod: privateModule.publicClass;
}
}
class publicClassWithWithPrivateGetAccessorTypes {
static readonly myPublicStaticMethod: privateClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: privateClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: privateClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: privateClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPublicGetAccessorTypes {
static readonly myPublicStaticMethod: publicClass;
private static readonly myPrivateStaticMethod;
readonly myPublicMethod: publicClass;
private readonly myPrivateMethod;
static readonly myPublicStaticMethod1: publicClass;
private static readonly myPrivateStaticMethod1;
readonly myPublicMethod1: publicClass;
private readonly myPrivateMethod1;
}
class publicClassWithWithPrivateSetAccessorTypes {
static myPublicStaticMethod: privateClass;
private static myPrivateStaticMethod;
myPublicMethod: privateClass;
private myPrivateMethod;
}
class publicClassWithWithPublicSetAccessorTypes {
static myPublicStaticMethod: publicClass;
private static myPrivateStaticMethod;
myPublicMethod: publicClass;
private myPrivateMethod;
}
class publicClassWithPrivateModuleGetAccessorTypes {
static readonly myPublicStaticMethod: privateModule.publicClass;
readonly myPublicMethod: privateModule.publicClass;
static readonly myPublicStaticMethod1: privateModule.publicClass;
readonly myPublicMethod1: privateModule.publicClass;
}
class publicClassWithPrivateModuleSetAccessorTypes {
static myPublicStaticMethod: privateModule.publicClass;
myPublicMethod: privateModule.publicClass;
}
}

View File

@ -1281,7 +1281,7 @@ var publicModuleInGlobal;
//// [privacyFunctionParameterDeclFile_externalModule.d.ts]
class privateClass {
declare class privateClass {
}
export declare class publicClass {
}
@ -1559,294 +1559,3 @@ declare module publicModuleInGlobal {
function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
}
//// [DtsFileErrors]
tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyFunctionParameterDeclFile_externalModule.d.ts (1 errors) ====
class privateClass {
~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
}
export declare class publicClass {
}
export interface publicInterfaceWithPrivateParmeterTypes {
new (param: privateClass): publicClass;
(param: privateClass): publicClass;
myMethod(param: privateClass): void;
}
export interface publicInterfaceWithPublicParmeterTypes {
new (param: publicClass): publicClass;
(param: publicClass): publicClass;
myMethod(param: publicClass): void;
}
export declare class publicClassWithWithPrivateParmeterTypes {
private param1;
param2: privateClass;
static myPublicStaticMethod(param: privateClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: privateClass): void;
private myPrivateMethod;
constructor(param: privateClass, param1: privateClass, param2: privateClass);
}
export declare class publicClassWithWithPublicParmeterTypes {
private param1;
param2: publicClass;
static myPublicStaticMethod(param: publicClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: publicClass): void;
private myPrivateMethod;
constructor(param: publicClass, param1: publicClass, param2: publicClass);
}
export declare function publicFunctionWithPrivateParmeterTypes(param: privateClass): void;
export declare function publicFunctionWithPublicParmeterTypes(param: publicClass): void;
export declare function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
export declare function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
export interface publicInterfaceWithPrivateModuleParameterTypes {
new (param: privateModule.publicClass): publicClass;
(param: privateModule.publicClass): publicClass;
myMethod(param: privateModule.publicClass): void;
}
export declare class publicClassWithPrivateModuleParameterTypes {
private param1;
param2: privateModule.publicClass;
static myPublicStaticMethod(param: privateModule.publicClass): void;
myPublicMethod(param: privateModule.publicClass): void;
constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass);
}
export declare function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
export declare module publicModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateParmeterTypes {
new (param: privateClass): publicClass;
(param: privateClass): publicClass;
myMethod(param: privateClass): void;
}
interface publicInterfaceWithPublicParmeterTypes {
new (param: publicClass): publicClass;
(param: publicClass): publicClass;
myMethod(param: publicClass): void;
}
class publicClassWithWithPrivateParmeterTypes {
private param1;
param2: privateClass;
static myPublicStaticMethod(param: privateClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: privateClass): void;
private myPrivateMethod;
constructor(param: privateClass, param1: privateClass, param2: privateClass);
}
class publicClassWithWithPublicParmeterTypes {
private param1;
param2: publicClass;
static myPublicStaticMethod(param: publicClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: publicClass): void;
private myPrivateMethod;
constructor(param: publicClass, param1: publicClass, param2: publicClass);
}
function publicFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicFunctionWithPublicParmeterTypes(param: publicClass): void;
function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (param: privateModule.publicClass): publicClass;
(param: privateModule.publicClass): publicClass;
myMethod(param: privateModule.publicClass): void;
}
class publicClassWithPrivateModuleParameterTypes {
private param1;
param2: privateModule.publicClass;
static myPublicStaticMethod(param: privateModule.publicClass): void;
myPublicMethod(param: privateModule.publicClass): void;
constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass);
}
function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
}
declare module privateModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateParmeterTypes {
new (param: privateClass): publicClass;
(param: privateClass): publicClass;
myMethod(param: privateClass): void;
}
interface publicInterfaceWithPublicParmeterTypes {
new (param: publicClass): publicClass;
(param: publicClass): publicClass;
myMethod(param: publicClass): void;
}
class publicClassWithWithPrivateParmeterTypes {
private param1;
param2: privateClass;
static myPublicStaticMethod(param: privateClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: privateClass): void;
private myPrivateMethod;
constructor(param: privateClass, param1: privateClass, param2: privateClass);
}
class publicClassWithWithPublicParmeterTypes {
private param1;
param2: publicClass;
static myPublicStaticMethod(param: publicClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: publicClass): void;
private myPrivateMethod;
constructor(param: publicClass, param1: publicClass, param2: publicClass);
}
function publicFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicFunctionWithPublicParmeterTypes(param: publicClass): void;
function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (param: privateModule.publicClass): publicClass;
(param: privateModule.publicClass): publicClass;
myMethod(param: privateModule.publicClass): void;
}
class publicClassWithPrivateModuleParameterTypes {
private param1;
param2: privateModule.publicClass;
static myPublicStaticMethod(param: privateModule.publicClass): void;
myPublicMethod(param: privateModule.publicClass): void;
constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass);
}
function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
}
export {};
==== tests/cases/compiler/privacyFunctionParameterDeclFile_GlobalFile.d.ts (0 errors) ====
declare class publicClassInGlobal {
}
interface publicInterfaceWithPublicParmeterTypesInGlobal {
new (param: publicClassInGlobal): publicClassInGlobal;
(param: publicClassInGlobal): publicClassInGlobal;
myMethod(param: publicClassInGlobal): void;
}
declare class publicClassWithWithPublicParmeterTypesInGlobal {
private param1;
param2: publicClassInGlobal;
static myPublicStaticMethod(param: publicClassInGlobal): void;
private static myPrivateStaticMethod;
myPublicMethod(param: publicClassInGlobal): void;
private myPrivateMethod;
constructor(param: publicClassInGlobal, param1: publicClassInGlobal, param2: publicClassInGlobal);
}
declare function publicFunctionWithPublicParmeterTypesInGlobal(param: publicClassInGlobal): void;
declare function publicAmbientFunctionWithPublicParmeterTypesInGlobal(param: publicClassInGlobal): void;
declare module publicModuleInGlobal {
class privateClass {
}
class publicClass {
}
module privateModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateParmeterTypes {
new (param: privateClass): publicClass;
(param: privateClass): publicClass;
myMethod(param: privateClass): void;
}
interface publicInterfaceWithPublicParmeterTypes {
new (param: publicClass): publicClass;
(param: publicClass): publicClass;
myMethod(param: publicClass): void;
}
class publicClassWithWithPrivateParmeterTypes {
private param1;
param2: privateClass;
static myPublicStaticMethod(param: privateClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: privateClass): void;
private myPrivateMethod;
constructor(param: privateClass, param1: privateClass, param2: privateClass);
}
class publicClassWithWithPublicParmeterTypes {
private param1;
param2: publicClass;
static myPublicStaticMethod(param: publicClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: publicClass): void;
private myPrivateMethod;
constructor(param: publicClass, param1: publicClass, param2: publicClass);
}
function publicFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicFunctionWithPublicParmeterTypes(param: publicClass): void;
function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (param: privateModule.publicClass): publicClass;
(param: privateModule.publicClass): publicClass;
myMethod(param: privateModule.publicClass): void;
}
class publicClassWithPrivateModuleParameterTypes {
private param1;
param2: privateModule.publicClass;
static myPublicStaticMethod(param: privateModule.publicClass): void;
myPublicMethod(param: privateModule.publicClass): void;
constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass);
}
function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
}
interface publicInterfaceWithPrivateParmeterTypes {
new (param: privateClass): publicClass;
(param: privateClass): publicClass;
myMethod(param: privateClass): void;
}
interface publicInterfaceWithPublicParmeterTypes {
new (param: publicClass): publicClass;
(param: publicClass): publicClass;
myMethod(param: publicClass): void;
}
class publicClassWithWithPrivateParmeterTypes {
private param1;
param2: privateClass;
static myPublicStaticMethod(param: privateClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: privateClass): void;
private myPrivateMethod;
constructor(param: privateClass, param1: privateClass, param2: privateClass);
}
class publicClassWithWithPublicParmeterTypes {
private param1;
param2: publicClass;
static myPublicStaticMethod(param: publicClass): void;
private static myPrivateStaticMethod;
myPublicMethod(param: publicClass): void;
private myPrivateMethod;
constructor(param: publicClass, param1: publicClass, param2: publicClass);
}
function publicFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicFunctionWithPublicParmeterTypes(param: publicClass): void;
function publicAmbientFunctionWithPrivateParmeterTypes(param: privateClass): void;
function publicAmbientFunctionWithPublicParmeterTypes(param: publicClass): void;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (param: privateModule.publicClass): publicClass;
(param: privateModule.publicClass): publicClass;
myMethod(param: privateModule.publicClass): void;
}
class publicClassWithPrivateModuleParameterTypes {
private param1;
param2: privateModule.publicClass;
static myPublicStaticMethod(param: privateModule.publicClass): void;
myPublicMethod(param: privateModule.publicClass): void;
constructor(param: privateModule.publicClass, param1: privateModule.publicClass, param2: privateModule.publicClass);
}
function publicFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
function publicAmbientFunctionWithPrivateModuleParameterTypes(param: privateModule.publicClass): void;
}

View File

@ -2281,7 +2281,7 @@ var publicModuleInGlobal;
//// [privacyFunctionReturnTypeDeclFile_externalModule.d.ts]
class privateClass {
declare class privateClass {
}
export declare class publicClass {
}
@ -2597,332 +2597,3 @@ declare module publicModuleInGlobal {
function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass;
function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
}
//// [DtsFileErrors]
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.d.ts (1 errors) ====
class privateClass {
~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
}
export declare class publicClass {
}
export interface publicInterfaceWithPrivateParmeterTypes {
new (): privateClass;
(): privateClass;
[x: number]: privateClass;
myMethod(): privateClass;
}
export interface publicInterfaceWithPublicParmeterTypes {
new (): publicClass;
(): publicClass;
[x: number]: publicClass;
myMethod(): publicClass;
}
export declare class publicClassWithWithPrivateParmeterTypes {
static myPublicStaticMethod(): privateClass;
private static myPrivateStaticMethod;
myPublicMethod(): privateClass;
private myPrivateMethod;
static myPublicStaticMethod1(): privateClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): privateClass;
private myPrivateMethod1;
}
export declare class publicClassWithWithPublicParmeterTypes {
static myPublicStaticMethod(): publicClass;
private static myPrivateStaticMethod;
myPublicMethod(): publicClass;
private myPrivateMethod;
static myPublicStaticMethod1(): publicClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): publicClass;
private myPrivateMethod1;
}
export declare function publicFunctionWithPrivateParmeterTypes(): privateClass;
export declare function publicFunctionWithPublicParmeterTypes(): publicClass;
export declare function publicFunctionWithPrivateParmeterTypes1(): privateClass;
export declare function publicFunctionWithPublicParmeterTypes1(): publicClass;
export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass;
export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
export interface publicInterfaceWithPrivateModuleParameterTypes {
new (): privateModule.publicClass;
(): privateModule.publicClass;
[x: number]: privateModule.publicClass;
myMethod(): privateModule.publicClass;
}
export declare class publicClassWithPrivateModuleParameterTypes {
static myPublicStaticMethod(): privateModule.publicClass;
myPublicMethod(): privateModule.publicClass;
static myPublicStaticMethod1(): privateModule.publicClass;
myPublicMethod1(): privateModule.publicClass;
}
export declare function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
export declare function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass;
export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
export declare module publicModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateParmeterTypes {
new (): privateClass;
(): privateClass;
[x: number]: privateClass;
myMethod(): privateClass;
}
interface publicInterfaceWithPublicParmeterTypes {
new (): publicClass;
(): publicClass;
[x: number]: publicClass;
myMethod(): publicClass;
}
class publicClassWithWithPrivateParmeterTypes {
static myPublicStaticMethod(): privateClass;
private static myPrivateStaticMethod;
myPublicMethod(): privateClass;
private myPrivateMethod;
static myPublicStaticMethod1(): privateClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): privateClass;
private myPrivateMethod1;
}
class publicClassWithWithPublicParmeterTypes {
static myPublicStaticMethod(): publicClass;
private static myPrivateStaticMethod;
myPublicMethod(): publicClass;
private myPrivateMethod;
static myPublicStaticMethod1(): publicClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): publicClass;
private myPrivateMethod1;
}
function publicFunctionWithPrivateParmeterTypes(): privateClass;
function publicFunctionWithPublicParmeterTypes(): publicClass;
function publicFunctionWithPrivateParmeterTypes1(): privateClass;
function publicFunctionWithPublicParmeterTypes1(): publicClass;
function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass;
function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (): privateModule.publicClass;
(): privateModule.publicClass;
[x: number]: privateModule.publicClass;
myMethod(): privateModule.publicClass;
}
class publicClassWithPrivateModuleParameterTypes {
static myPublicStaticMethod(): privateModule.publicClass;
myPublicMethod(): privateModule.publicClass;
static myPublicStaticMethod1(): privateModule.publicClass;
myPublicMethod1(): privateModule.publicClass;
}
function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass;
function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
}
declare module privateModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateParmeterTypes {
new (): privateClass;
(): privateClass;
[x: number]: privateClass;
myMethod(): privateClass;
}
interface publicInterfaceWithPublicParmeterTypes {
new (): publicClass;
(): publicClass;
[x: number]: publicClass;
myMethod(): publicClass;
}
class publicClassWithWithPrivateParmeterTypes {
static myPublicStaticMethod(): privateClass;
private static myPrivateStaticMethod;
myPublicMethod(): privateClass;
private myPrivateMethod;
static myPublicStaticMethod1(): privateClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): privateClass;
private myPrivateMethod1;
}
class publicClassWithWithPublicParmeterTypes {
static myPublicStaticMethod(): publicClass;
private static myPrivateStaticMethod;
myPublicMethod(): publicClass;
private myPrivateMethod;
static myPublicStaticMethod1(): publicClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): publicClass;
private myPrivateMethod1;
}
function publicFunctionWithPrivateParmeterTypes(): privateClass;
function publicFunctionWithPublicParmeterTypes(): publicClass;
function publicFunctionWithPrivateParmeterTypes1(): privateClass;
function publicFunctionWithPublicParmeterTypes1(): publicClass;
function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass;
function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (): privateModule.publicClass;
(): privateModule.publicClass;
[x: number]: privateModule.publicClass;
myMethod(): privateModule.publicClass;
}
class publicClassWithPrivateModuleParameterTypes {
static myPublicStaticMethod(): privateModule.publicClass;
myPublicMethod(): privateModule.publicClass;
static myPublicStaticMethod1(): publicClass;
myPublicMethod1(): publicClass;
}
function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
function publicFunctionWithPrivateModuleParameterTypes1(): publicClass;
function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
}
export {};
==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.d.ts (0 errors) ====
declare class publicClassInGlobal {
}
interface publicInterfaceWithPublicParmeterTypesInGlobal {
new (): publicClassInGlobal;
(): publicClassInGlobal;
[x: number]: publicClassInGlobal;
myMethod(): publicClassInGlobal;
}
declare class publicClassWithWithPublicParmeterTypesInGlobal {
static myPublicStaticMethod(): publicClassInGlobal;
private static myPrivateStaticMethod;
myPublicMethod(): publicClassInGlobal;
private myPrivateMethod;
static myPublicStaticMethod1(): publicClassInGlobal;
private static myPrivateStaticMethod1;
myPublicMethod1(): publicClassInGlobal;
private myPrivateMethod1;
}
declare function publicFunctionWithPublicParmeterTypesInGlobal(): publicClassInGlobal;
declare function publicFunctionWithPublicParmeterTypesInGlobal1(): publicClassInGlobal;
declare function publicAmbientFunctionWithPublicParmeterTypesInGlobal(): publicClassInGlobal;
declare module publicModuleInGlobal {
class privateClass {
}
class publicClass {
}
module privateModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateParmeterTypes {
new (): privateClass;
(): privateClass;
[x: number]: privateClass;
myMethod(): privateClass;
}
interface publicInterfaceWithPublicParmeterTypes {
new (): publicClass;
(): publicClass;
[x: number]: publicClass;
myMethod(): publicClass;
}
class publicClassWithWithPrivateParmeterTypes {
static myPublicStaticMethod(): privateClass;
private static myPrivateStaticMethod;
myPublicMethod(): privateClass;
private myPrivateMethod;
static myPublicStaticMethod1(): privateClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): privateClass;
private myPrivateMethod1;
}
class publicClassWithWithPublicParmeterTypes {
static myPublicStaticMethod(): publicClass;
private static myPrivateStaticMethod;
myPublicMethod(): publicClass;
private myPrivateMethod;
static myPublicStaticMethod1(): publicClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): publicClass;
private myPrivateMethod1;
}
function publicFunctionWithPrivateParmeterTypes(): privateClass;
function publicFunctionWithPublicParmeterTypes(): publicClass;
function publicFunctionWithPrivateParmeterTypes1(): privateClass;
function publicFunctionWithPublicParmeterTypes1(): publicClass;
function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass;
function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (): privateModule.publicClass;
(): privateModule.publicClass;
[x: number]: privateModule.publicClass;
myMethod(): privateModule.publicClass;
}
class publicClassWithPrivateModuleParameterTypes {
static myPublicStaticMethod(): privateModule.publicClass;
myPublicMethod(): privateModule.publicClass;
static myPublicStaticMethod1(): publicClass;
myPublicMethod1(): publicClass;
}
function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
function publicFunctionWithPrivateModuleParameterTypes1(): publicClass;
function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
}
interface publicInterfaceWithPrivateParmeterTypes {
new (): privateClass;
(): privateClass;
[x: number]: privateClass;
myMethod(): privateClass;
}
interface publicInterfaceWithPublicParmeterTypes {
new (): publicClass;
(): publicClass;
[x: number]: publicClass;
myMethod(): publicClass;
}
class publicClassWithWithPrivateParmeterTypes {
static myPublicStaticMethod(): privateClass;
private static myPrivateStaticMethod;
myPublicMethod(): privateClass;
private myPrivateMethod;
static myPublicStaticMethod1(): privateClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): privateClass;
private myPrivateMethod1;
}
class publicClassWithWithPublicParmeterTypes {
static myPublicStaticMethod(): publicClass;
private static myPrivateStaticMethod;
myPublicMethod(): publicClass;
private myPrivateMethod;
static myPublicStaticMethod1(): publicClass;
private static myPrivateStaticMethod1;
myPublicMethod1(): publicClass;
private myPrivateMethod1;
}
function publicFunctionWithPrivateParmeterTypes(): privateClass;
function publicFunctionWithPublicParmeterTypes(): publicClass;
function publicFunctionWithPrivateParmeterTypes1(): privateClass;
function publicFunctionWithPublicParmeterTypes1(): publicClass;
function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass;
function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
interface publicInterfaceWithPrivateModuleParameterTypes {
new (): privateModule.publicClass;
(): privateModule.publicClass;
[x: number]: privateModule.publicClass;
myMethod(): privateModule.publicClass;
}
class publicClassWithPrivateModuleParameterTypes {
static myPublicStaticMethod(): privateModule.publicClass;
myPublicMethod(): privateModule.publicClass;
static myPublicStaticMethod1(): privateModule.publicClass;
myPublicMethod1(): privateModule.publicClass;
}
function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
function publicFunctionWithPrivateModuleParameterTypes1(): privateModule.publicClass;
function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
}

View File

@ -298,7 +298,7 @@ var import_private;
//// [privacyLocalInternalReferenceImportWithExport.d.ts]
module m_private {
declare module m_private {
class c_private {
}
enum e_private {
@ -369,86 +369,3 @@ export declare module import_public {
var publicUse_im_public_mu_public: im_public_mu_public.i;
}
export {};
//// [DtsFileErrors]
tests/cases/compiler/privacyLocalInternalReferenceImportWithExport.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyLocalInternalReferenceImportWithExport.d.ts (1 errors) ====
module m_private {
~~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
class c_private {
}
enum e_private {
Happy = 0,
Grumpy = 1
}
function f_private(): c_private;
var v_private: c_private;
interface i_private {
}
module mi_private {
class c {
}
}
module mu_private {
interface i {
}
}
}
export declare module m_public {
class c_public {
}
enum e_public {
Happy = 0,
Grumpy = 1
}
function f_public(): c_public;
var v_public: number;
interface i_public {
}
module mi_public {
class c {
}
}
module mu_public {
interface i {
}
}
}
export declare module import_public {
export import im_public_c_private = m_private.c_private;
export import im_public_e_private = m_private.e_private;
export import im_public_f_private = m_private.f_private;
export import im_public_v_private = m_private.v_private;
export import im_public_i_private = m_private.i_private;
export import im_public_mi_private = m_private.mi_private;
export import im_public_mu_private = m_private.mu_private;
var publicUse_im_public_c_private: im_public_c_private;
var publicUse_im_public_e_private: im_public_e_private;
var publicUse_im_public_f_private: im_public_c_private;
var publicUse_im_public_v_private: im_public_c_private;
var publicUse_im_public_i_private: im_public_i_private;
var publicUse_im_public_mi_private: im_public_mi_private.c;
var publicUse_im_public_mu_private: im_public_mu_private.i;
export import im_public_c_public = m_public.c_public;
export import im_public_e_public = m_public.e_public;
export import im_public_f_public = m_public.f_public;
export import im_public_v_public = m_public.v_public;
export import im_public_i_public = m_public.i_public;
export import im_public_mi_public = m_public.mi_public;
export import im_public_mu_public = m_public.mu_public;
var publicUse_im_public_c_public: im_public_c_public;
var publicUse_im_public_e_public: im_public_e_public;
var publicUse_im_public_f_public: im_public_c_public;
var publicUse_im_public_v_public: number;
var publicUse_im_public_i_public: im_public_i_public;
var publicUse_im_public_mi_public: im_public_mi_public.c;
var publicUse_im_public_mu_public: im_public_mu_public.i;
}
export {};

View File

@ -300,7 +300,7 @@ define(["require", "exports"], function (require, exports) {
//// [privacyLocalInternalReferenceImportWithoutExport.d.ts]
module m_private {
declare module m_private {
class c_private {
}
enum e_private {
@ -367,82 +367,3 @@ export declare module import_public {
var publicUse_im_private_mu_public: im_private_mu_public.i;
}
export {};
//// [DtsFileErrors]
tests/cases/compiler/privacyLocalInternalReferenceImportWithoutExport.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyLocalInternalReferenceImportWithoutExport.d.ts (1 errors) ====
module m_private {
~~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
class c_private {
}
enum e_private {
Happy = 0,
Grumpy = 1
}
function f_private(): c_private;
var v_private: c_private;
interface i_private {
}
module mi_private {
class c {
}
}
module mu_private {
interface i {
}
}
}
export declare module m_public {
class c_public {
}
enum e_public {
Happy = 0,
Grumpy = 1
}
function f_public(): c_public;
var v_public: number;
interface i_public {
}
module mi_public {
class c {
}
}
module mu_public {
interface i {
}
}
}
export declare module import_public {
import im_private_c_private = m_private.c_private;
import im_private_e_private = m_private.e_private;
import im_private_i_private = m_private.i_private;
import im_private_mi_private = m_private.mi_private;
import im_private_mu_private = m_private.mu_private;
var publicUse_im_private_c_private: im_private_c_private;
var publicUse_im_private_e_private: im_private_e_private;
var publicUse_im_private_f_private: im_private_c_private;
var publicUse_im_private_v_private: im_private_c_private;
var publicUse_im_private_i_private: im_private_i_private;
var publicUse_im_private_mi_private: im_private_mi_private.c;
var publicUse_im_private_mu_private: im_private_mu_private.i;
import im_private_c_public = m_public.c_public;
import im_private_e_public = m_public.e_public;
import im_private_i_public = m_public.i_public;
import im_private_mi_public = m_public.mi_public;
import im_private_mu_public = m_public.mu_public;
var publicUse_im_private_c_public: im_private_c_public;
var publicUse_im_private_e_public: im_private_e_public;
var publicUse_im_private_f_public: im_private_c_public;
var publicUse_im_private_v_public: number;
var publicUse_im_private_i_public: im_private_i_public;
var publicUse_im_private_mi_public: im_private_mi_public.c;
var publicUse_im_private_mu_public: im_private_mu_public.i;
}
export {};

View File

@ -819,7 +819,7 @@ var privateModule;
//// [privacyTypeParameterOfFunctionDeclFile.d.ts]
class privateClass {
declare class privateClass {
}
export declare class publicClass {
}
@ -964,160 +964,3 @@ declare module privateModule {
function publicFunctionWithPublicTypeParametersWithoutExtends<T>(): void;
}
export {};
//// [DtsFileErrors]
tests/cases/compiler/privacyTypeParameterOfFunctionDeclFile.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyTypeParameterOfFunctionDeclFile.d.ts (1 errors) ====
class privateClass {
~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
}
export declare class publicClass {
}
export interface publicInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass;
<T extends privateClass>(): privateClass;
myMethod<T extends privateClass>(): privateClass;
}
export interface publicInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
export declare class publicClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T extends privateClass>(): void;
private myPrivateMethod;
}
export declare class publicClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T extends publicClass>(): void;
private myPrivateMethod;
}
export declare function publicFunctionWithPrivateTypeParameters<T extends privateClass>(): void;
export declare function publicFunctionWithPublicTypeParameters<T extends publicClass>(): void;
export interface publicInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
export declare class publicClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T>(): void;
private myPrivateMethod;
}
export declare function publicFunctionWithPublicTypeParametersWithoutExtends<T>(): void;
export interface publicInterfaceWithPrivatModuleTypeParameters {
new <T extends privateModule.publicClass>(): privateModule.publicClass;
<T extends privateModule.publicClass>(): privateModule.publicClass;
myMethod<T extends privateModule.publicClass>(): privateModule.publicClass;
}
export declare class publicClassWithWithPrivateModuleTypeParameters {
static myPublicStaticMethod<T extends privateModule.publicClass>(): void;
myPublicMethod<T extends privateModule.publicClass>(): void;
}
export declare function publicFunctionWithPrivateMopduleTypeParameters<T extends privateModule.publicClass>(): void;
export declare module publicModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass;
<T extends privateClass>(): privateClass;
myMethod<T extends privateClass>(): privateClass;
}
interface publicInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
class publicClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T extends privateClass>(): void;
private myPrivateMethod;
}
class publicClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T extends publicClass>(): void;
private myPrivateMethod;
}
function publicFunctionWithPrivateTypeParameters<T extends privateClass>(): void;
function publicFunctionWithPublicTypeParameters<T extends publicClass>(): void;
interface publicInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
class publicClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T>(): void;
private myPrivateMethod;
}
function publicFunctionWithPublicTypeParametersWithoutExtends<T>(): void;
interface publicInterfaceWithPrivatModuleTypeParameters {
new <T extends privateModule.publicClass>(): privateModule.publicClass;
<T extends privateModule.publicClass>(): privateModule.publicClass;
myMethod<T extends privateModule.publicClass>(): privateModule.publicClass;
}
class publicClassWithWithPrivateModuleTypeParameters {
static myPublicStaticMethod<T extends privateModule.publicClass>(): void;
myPublicMethod<T extends privateModule.publicClass>(): void;
}
function publicFunctionWithPrivateMopduleTypeParameters<T extends privateModule.publicClass>(): void;
}
declare module privateModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivateTypeParameters {
new <T extends privateClass>(): privateClass;
<T extends privateClass>(): privateClass;
myMethod<T extends privateClass>(): privateClass;
}
interface publicInterfaceWithPublicTypeParameters {
new <T extends publicClass>(): publicClass;
<T extends publicClass>(): publicClass;
myMethod<T extends publicClass>(): publicClass;
}
class publicClassWithWithPrivateTypeParameters {
static myPublicStaticMethod<T extends privateClass>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T extends privateClass>(): void;
private myPrivateMethod;
}
class publicClassWithWithPublicTypeParameters {
static myPublicStaticMethod<T extends publicClass>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T extends publicClass>(): void;
private myPrivateMethod;
}
function publicFunctionWithPrivateTypeParameters<T extends privateClass>(): void;
function publicFunctionWithPublicTypeParameters<T extends publicClass>(): void;
interface publicInterfaceWithPublicTypeParametersWithoutExtends {
new <T>(): publicClass;
<T>(): publicClass;
myMethod<T>(): publicClass;
}
class publicClassWithWithPublicTypeParametersWithoutExtends {
static myPublicStaticMethod<T>(): void;
private static myPrivateStaticMethod;
myPublicMethod<T>(): void;
private myPrivateMethod;
}
function publicFunctionWithPublicTypeParametersWithoutExtends<T>(): void;
}
export {};

View File

@ -386,7 +386,7 @@ var privateModule;
//// [privacyTypeParametersOfClassDeclFile.d.ts]
class privateClass {
declare class privateClass {
}
export declare class publicClass {
}
@ -436,65 +436,3 @@ declare module privateModule {
}
}
export {};
//// [DtsFileErrors]
tests/cases/compiler/privacyTypeParametersOfClassDeclFile.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyTypeParametersOfClassDeclFile.d.ts (1 errors) ====
class privateClass {
~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
}
export declare class publicClass {
}
export declare class publicClassWithPrivateTypeParameters<T extends privateClass> {
myMethod(val: T): T;
}
export declare class publicClassWithPublicTypeParameters<T extends publicClass> {
myMethod(val: T): T;
}
export declare class publicClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
}
export declare class publicClassWithTypeParametersFromPrivateModule<T extends privateModule.publicClassInPrivateModule> {
myMethod(val: T): T;
}
export declare module publicModule {
class privateClassInPublicModule {
}
class publicClassInPublicModule {
}
class publicClassWithPrivateTypeParameters<T extends privateClassInPublicModule> {
myMethod(val: T): T;
}
class publicClassWithPublicTypeParameters<T extends publicClassInPublicModule> {
myMethod(val: T): T;
}
class publicClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
}
class publicClassWithTypeParametersFromPrivateModule<T extends privateModule.publicClassInPrivateModule> {
myMethod(val: T): T;
}
}
declare module privateModule {
class privateClassInPrivateModule {
}
class publicClassInPrivateModule {
}
class publicClassWithPrivateTypeParameters<T extends privateClassInPrivateModule> {
myMethod(val: T): T;
}
class publicClassWithPublicTypeParameters<T extends publicClassInPrivateModule> {
myMethod(val: T): T;
}
class publicClassWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
}
}
export {};

View File

@ -268,11 +268,11 @@ var privateModule;
//// [privacyTypeParametersOfInterfaceDeclFile.d.ts]
class privateClass {
declare class privateClass {
}
export declare class publicClass {
}
class privateClassT<T> {
declare class privateClassT<T> {
}
export declare class publicClassT<T> {
}
@ -361,108 +361,3 @@ declare module privateModule {
}
}
export {};
//// [DtsFileErrors]
tests/cases/compiler/privacyTypeParametersOfInterfaceDeclFile.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyTypeParametersOfInterfaceDeclFile.d.ts (1 errors) ====
class privateClass {
~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
}
export declare class publicClass {
}
class privateClassT<T> {
}
export declare class publicClassT<T> {
}
export interface publicInterfaceWithPrivateTypeParameters<T extends privateClass> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
myMethod1(): privateClassT<privateClass>;
myMethod2(): privateClassT<publicClass>;
myMethod3(): publicClassT<privateClass>;
myMethod4(): publicClassT<publicClass>;
}
export interface publicInterfaceWithPublicTypeParameters<T extends publicClass> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
myMethod1(): privateClassT<privateClass>;
myMethod2(): privateClassT<publicClass>;
myMethod3(): publicClassT<privateClass>;
myMethod4(): publicClassT<publicClass>;
}
export interface publicInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassT<T>;
}
export interface publicInterfaceWithPrivateModuleTypeParameterConstraints<T extends privateModule.publicClassInPrivateModule> {
}
export declare module publicModule {
class privateClassInPublicModule {
}
class publicClassInPublicModule {
}
class privateClassInPublicModuleT<T> {
}
class publicClassInPublicModuleT<T> {
}
interface publicInterfaceWithPrivateTypeParameters<T extends privateClassInPublicModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
myMethod1(): privateClassInPublicModuleT<privateClassInPublicModule>;
myMethod2(): privateClassInPublicModuleT<publicClassInPublicModule>;
myMethod3(): publicClassInPublicModuleT<privateClassInPublicModule>;
myMethod4(): publicClassInPublicModuleT<publicClassInPublicModule>;
}
interface publicInterfaceWithPublicTypeParameters<T extends publicClassInPublicModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
myMethod1(): privateClassInPublicModuleT<privateClassInPublicModule>;
myMethod2(): privateClassInPublicModuleT<publicClassInPublicModule>;
myMethod3(): publicClassInPublicModuleT<privateClassInPublicModule>;
myMethod4(): publicClassInPublicModuleT<publicClassInPublicModule>;
}
interface publicInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassInPublicModuleT<T>;
}
interface publicInterfaceWithPrivateModuleTypeParameterConstraints<T extends privateModule.publicClassInPrivateModule> {
}
}
declare module privateModule {
class privateClassInPrivateModule {
}
class publicClassInPrivateModule {
}
class privateClassInPrivateModuleT<T> {
}
class publicClassInPrivateModuleT<T> {
}
interface publicInterfaceWithPrivateTypeParameters<T extends privateClassInPrivateModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
myMethod1(): privateClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod2(): privateClassInPrivateModuleT<publicClassInPrivateModule>;
myMethod3(): publicClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod4(): publicClassInPrivateModuleT<publicClassInPrivateModule>;
}
interface publicInterfaceWithPublicTypeParameters<T extends publicClassInPrivateModule> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
myMethod1(): privateClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod2(): privateClassInPrivateModuleT<publicClassInPrivateModule>;
myMethod3(): publicClassInPrivateModuleT<privateClassInPrivateModule>;
myMethod4(): publicClassInPrivateModuleT<publicClassInPrivateModule>;
}
interface publicInterfaceWithPublicTypeParametersWithoutExtends<T> {
myMethod(val: T): T;
myMethod0(): publicClassInPrivateModuleT<T>;
}
}
export {};

View File

@ -689,7 +689,7 @@ var publicModuleInGlobal;
//// [privacyVarDeclFile_externalModule.d.ts]
class privateClass {
declare class privateClass {
}
export declare class publicClass {
}
@ -887,214 +887,3 @@ declare module publicModuleInGlobal {
var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass;
var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass;
}
//// [DtsFileErrors]
tests/cases/compiler/privacyVarDeclFile_externalModule.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
==== tests/cases/compiler/privacyVarDeclFile_externalModule.d.ts (1 errors) ====
class privateClass {
~~~~~
!!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file.
}
export declare class publicClass {
}
export interface publicInterfaceWithPrivatePropertyTypes {
myProperty: privateClass;
}
export interface publicInterfaceWithPublicPropertyTypes {
myProperty: publicClass;
}
export declare class publicClassWithWithPrivatePropertyTypes {
static myPublicStaticProperty: privateClass;
private static myPrivateStaticProperty;
myPublicProperty: privateClass;
private myPrivateProperty;
}
export declare class publicClassWithWithPublicPropertyTypes {
static myPublicStaticProperty: publicClass;
private static myPrivateStaticProperty;
myPublicProperty: publicClass;
private myPrivateProperty;
}
export declare var publicVarWithPrivatePropertyTypes: privateClass;
export declare var publicVarWithPublicPropertyTypes: publicClass;
export declare var publicAmbientVarWithPrivatePropertyTypes: privateClass;
export declare var publicAmbientVarWithPublicPropertyTypes: publicClass;
export interface publicInterfaceWithPrivateModulePropertyTypes {
myProperty: privateModule.publicClass;
}
export declare class publicClassWithPrivateModulePropertyTypes {
static myPublicStaticProperty: privateModule.publicClass;
myPublicProperty: privateModule.publicClass;
}
export declare var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass;
export declare var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass;
export declare module publicModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivatePropertyTypes {
myProperty: privateClass;
}
interface publicInterfaceWithPublicPropertyTypes {
myProperty: publicClass;
}
class publicClassWithWithPrivatePropertyTypes {
static myPublicStaticProperty: privateClass;
private static myPrivateStaticProperty;
myPublicProperty: privateClass;
private myPrivateProperty;
}
class publicClassWithWithPublicPropertyTypes {
static myPublicStaticProperty: publicClass;
private static myPrivateStaticProperty;
myPublicProperty: publicClass;
private myPrivateProperty;
}
var publicVarWithPrivatePropertyTypes: privateClass;
var publicVarWithPublicPropertyTypes: publicClass;
var publicAmbientVarWithPrivatePropertyTypes: privateClass;
var publicAmbientVarWithPublicPropertyTypes: publicClass;
interface publicInterfaceWithPrivateModulePropertyTypes {
myProperty: privateModule.publicClass;
}
class publicClassWithPrivateModulePropertyTypes {
static myPublicStaticProperty: privateModule.publicClass;
myPublicProperty: privateModule.publicClass;
}
var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass;
var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass;
}
declare module privateModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivatePropertyTypes {
myProperty: privateClass;
}
interface publicInterfaceWithPublicPropertyTypes {
myProperty: publicClass;
}
class publicClassWithWithPrivatePropertyTypes {
static myPublicStaticProperty: privateClass;
private static myPrivateStaticProperty;
myPublicProperty: privateClass;
private myPrivateProperty;
}
class publicClassWithWithPublicPropertyTypes {
static myPublicStaticProperty: publicClass;
private static myPrivateStaticProperty;
myPublicProperty: publicClass;
private myPrivateProperty;
}
var publicVarWithPrivatePropertyTypes: privateClass;
var publicVarWithPublicPropertyTypes: publicClass;
var publicAmbientVarWithPrivatePropertyTypes: privateClass;
var publicAmbientVarWithPublicPropertyTypes: publicClass;
interface publicInterfaceWithPrivateModulePropertyTypes {
myProperty: privateModule.publicClass;
}
class publicClassWithPrivateModulePropertyTypes {
static myPublicStaticProperty: privateModule.publicClass;
myPublicProperty: privateModule.publicClass;
}
var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass;
var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass;
}
export {};
==== tests/cases/compiler/privacyVarDeclFile_GlobalFile.d.ts (0 errors) ====
declare class publicClassInGlobal {
}
interface publicInterfaceWithPublicPropertyTypesInGlobal {
myProperty: publicClassInGlobal;
}
declare class publicClassWithWithPublicPropertyTypesInGlobal {
static myPublicStaticProperty: publicClassInGlobal;
private static myPrivateStaticProperty;
myPublicProperty: publicClassInGlobal;
private myPrivateProperty;
}
declare var publicVarWithPublicPropertyTypesInGlobal: publicClassInGlobal;
declare var publicAmbientVarWithPublicPropertyTypesInGlobal: publicClassInGlobal;
declare module publicModuleInGlobal {
class privateClass {
}
class publicClass {
}
module privateModule {
class privateClass {
}
class publicClass {
}
interface publicInterfaceWithPrivatePropertyTypes {
myProperty: privateClass;
}
interface publicInterfaceWithPublicPropertyTypes {
myProperty: publicClass;
}
class publicClassWithWithPrivatePropertyTypes {
static myPublicStaticProperty: privateClass;
private static myPrivateStaticProperty;
myPublicProperty: privateClass;
private myPrivateProperty;
}
class publicClassWithWithPublicPropertyTypes {
static myPublicStaticProperty: publicClass;
private static myPrivateStaticProperty;
myPublicProperty: publicClass;
private myPrivateProperty;
}
var publicVarWithPrivatePropertyTypes: privateClass;
var publicVarWithPublicPropertyTypes: publicClass;
var publicAmbientVarWithPrivatePropertyTypes: privateClass;
var publicAmbientVarWithPublicPropertyTypes: publicClass;
interface publicInterfaceWithPrivateModulePropertyTypes {
myProperty: privateModule.publicClass;
}
class publicClassWithPrivateModulePropertyTypes {
static myPublicStaticProperty: privateModule.publicClass;
myPublicProperty: privateModule.publicClass;
}
var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass;
var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass;
}
interface publicInterfaceWithPrivatePropertyTypes {
myProperty: privateClass;
}
interface publicInterfaceWithPublicPropertyTypes {
myProperty: publicClass;
}
class publicClassWithWithPrivatePropertyTypes {
static myPublicStaticProperty: privateClass;
private static myPrivateStaticProperty;
myPublicProperty: privateClass;
private myPrivateProperty;
}
class publicClassWithWithPublicPropertyTypes {
static myPublicStaticProperty: publicClass;
private static myPrivateStaticProperty;
myPublicProperty: publicClass;
private myPrivateProperty;
}
var publicVarWithPrivatePropertyTypes: privateClass;
var publicVarWithPublicPropertyTypes: publicClass;
var publicAmbientVarWithPrivatePropertyTypes: privateClass;
var publicAmbientVarWithPublicPropertyTypes: publicClass;
interface publicInterfaceWithPrivateModulePropertyTypes {
myProperty: privateModule.publicClass;
}
class publicClassWithPrivateModulePropertyTypes {
static myPublicStaticProperty: privateModule.publicClass;
myPublicProperty: privateModule.publicClass;
}
var publicVarWithPrivateModulePropertyTypes: privateModule.publicClass;
var publicAmbientVarWithPrivateModulePropertyTypes: privateModule.publicClass;
}

View File

@ -0,0 +1,16 @@
// @declaration: true
export declare namespace A {
namespace X { }
}
class X { }
export class A {
static X = X;
}
export declare namespace Y {
}
export class Y { }