Skip to content

Commit 3e04102

Browse files
Added new test
1 parent 78bc536 commit 3e04102

4 files changed

+210
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
//// [tests/cases/compiler/verbatim-declarations-parameters.ts] ////
2+
3+
//// [verbatim-declarations-parameters.ts]
4+
type Map = {} & { [P in string]: any }
5+
type MapOrUndefined = Map | undefined | "dummy"
6+
export class Foo {
7+
constructor(
8+
// Type node is accurate, preserve
9+
public reuseTypeNode?: Map | undefined,
10+
public reuseTypeNode2?: Exclude<MapOrUndefined, "dummy">,
11+
// Resolve type node, requires adding | undefined
12+
public resolveType?: Map,
13+
) { }
14+
}
15+
16+
export function foo1(
17+
// Type node is accurate, preserve
18+
reuseTypeNode: Map | undefined = {},
19+
reuseTypeNode2: Exclude<MapOrUndefined, "dummy"> = {},
20+
// Resolve type node, requires adding | undefined
21+
resolveType: Map = {},
22+
requiredParam: number) {
23+
24+
}
25+
26+
27+
//// [verbatim-declarations-parameters.js]
28+
"use strict";
29+
Object.defineProperty(exports, "__esModule", { value: true });
30+
exports.foo1 = exports.Foo = void 0;
31+
var Foo = /** @class */ (function () {
32+
function Foo(
33+
// Type node is accurate, preserve
34+
reuseTypeNode, reuseTypeNode2,
35+
// Resolve type node, requires adding | undefined
36+
resolveType) {
37+
this.reuseTypeNode = reuseTypeNode;
38+
this.reuseTypeNode2 = reuseTypeNode2;
39+
this.resolveType = resolveType;
40+
}
41+
return Foo;
42+
}());
43+
exports.Foo = Foo;
44+
function foo1(
45+
// Type node is accurate, preserve
46+
reuseTypeNode, reuseTypeNode2,
47+
// Resolve type node, requires adding | undefined
48+
resolveType, requiredParam) {
49+
if (reuseTypeNode === void 0) { reuseTypeNode = {}; }
50+
if (reuseTypeNode2 === void 0) { reuseTypeNode2 = {}; }
51+
if (resolveType === void 0) { resolveType = {}; }
52+
}
53+
exports.foo1 = foo1;
54+
55+
56+
//// [verbatim-declarations-parameters.d.ts]
57+
export declare class Foo {
58+
reuseTypeNode?: {
59+
[x: string]: any;
60+
} | undefined;
61+
reuseTypeNode2?: {
62+
[x: string]: any;
63+
} | undefined;
64+
resolveType?: {
65+
[x: string]: any;
66+
} | undefined;
67+
constructor(reuseTypeNode?: {
68+
[x: string]: any;
69+
} | undefined, reuseTypeNode2?: {
70+
[x: string]: any;
71+
} | undefined, resolveType?: {
72+
[x: string]: any;
73+
} | undefined);
74+
}
75+
export declare function foo1(reuseTypeNode: {
76+
[x: string]: any;
77+
} | undefined, reuseTypeNode2: {
78+
[x: string]: any;
79+
} | undefined, resolveType: {
80+
[x: string]: any;
81+
} | undefined, requiredParam: number): void;
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
//// [tests/cases/compiler/verbatim-declarations-parameters.ts] ////
2+
3+
=== verbatim-declarations-parameters.ts ===
4+
type Map = {} & { [P in string]: any }
5+
>Map : Symbol(Map, Decl(verbatim-declarations-parameters.ts, 0, 0))
6+
>P : Symbol(P, Decl(verbatim-declarations-parameters.ts, 0, 19))
7+
8+
type MapOrUndefined = Map | undefined | "dummy"
9+
>MapOrUndefined : Symbol(MapOrUndefined, Decl(verbatim-declarations-parameters.ts, 0, 38))
10+
>Map : Symbol(Map, Decl(verbatim-declarations-parameters.ts, 0, 0))
11+
12+
export class Foo {
13+
>Foo : Symbol(Foo, Decl(verbatim-declarations-parameters.ts, 1, 47))
14+
15+
constructor(
16+
// Type node is accurate, preserve
17+
public reuseTypeNode?: Map | undefined,
18+
>reuseTypeNode : Symbol(Foo.reuseTypeNode, Decl(verbatim-declarations-parameters.ts, 3, 14))
19+
>Map : Symbol(Map, Decl(verbatim-declarations-parameters.ts, 0, 0))
20+
21+
public reuseTypeNode2?: Exclude<MapOrUndefined, "dummy">,
22+
>reuseTypeNode2 : Symbol(Foo.reuseTypeNode2, Decl(verbatim-declarations-parameters.ts, 5, 43))
23+
>Exclude : Symbol(Exclude, Decl(lib.es5.d.ts, --, --))
24+
>MapOrUndefined : Symbol(MapOrUndefined, Decl(verbatim-declarations-parameters.ts, 0, 38))
25+
26+
// Resolve type node, requires adding | undefined
27+
public resolveType?: Map,
28+
>resolveType : Symbol(Foo.resolveType, Decl(verbatim-declarations-parameters.ts, 6, 61))
29+
>Map : Symbol(Map, Decl(verbatim-declarations-parameters.ts, 0, 0))
30+
31+
) { }
32+
}
33+
34+
export function foo1(
35+
>foo1 : Symbol(foo1, Decl(verbatim-declarations-parameters.ts, 10, 1))
36+
37+
// Type node is accurate, preserve
38+
reuseTypeNode: Map | undefined = {},
39+
>reuseTypeNode : Symbol(reuseTypeNode, Decl(verbatim-declarations-parameters.ts, 12, 21))
40+
>Map : Symbol(Map, Decl(verbatim-declarations-parameters.ts, 0, 0))
41+
42+
reuseTypeNode2: Exclude<MapOrUndefined, "dummy"> = {},
43+
>reuseTypeNode2 : Symbol(reuseTypeNode2, Decl(verbatim-declarations-parameters.ts, 14, 40))
44+
>Exclude : Symbol(Exclude, Decl(lib.es5.d.ts, --, --))
45+
>MapOrUndefined : Symbol(MapOrUndefined, Decl(verbatim-declarations-parameters.ts, 0, 38))
46+
47+
// Resolve type node, requires adding | undefined
48+
resolveType: Map = {},
49+
>resolveType : Symbol(resolveType, Decl(verbatim-declarations-parameters.ts, 15, 59))
50+
>Map : Symbol(Map, Decl(verbatim-declarations-parameters.ts, 0, 0))
51+
52+
requiredParam: number) {
53+
>requiredParam : Symbol(requiredParam, Decl(verbatim-declarations-parameters.ts, 17, 26))
54+
55+
}
56+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
//// [tests/cases/compiler/verbatim-declarations-parameters.ts] ////
2+
3+
=== verbatim-declarations-parameters.ts ===
4+
type Map = {} & { [P in string]: any }
5+
>Map : { [x: string]: any; }
6+
7+
type MapOrUndefined = Map | undefined | "dummy"
8+
>MapOrUndefined : { [x: string]: any; } | "dummy" | undefined
9+
10+
export class Foo {
11+
>Foo : Foo
12+
13+
constructor(
14+
// Type node is accurate, preserve
15+
public reuseTypeNode?: Map | undefined,
16+
>reuseTypeNode : { [x: string]: any; } | undefined
17+
18+
public reuseTypeNode2?: Exclude<MapOrUndefined, "dummy">,
19+
>reuseTypeNode2 : { [x: string]: any; } | undefined
20+
21+
// Resolve type node, requires adding | undefined
22+
public resolveType?: Map,
23+
>resolveType : { [x: string]: any; } | undefined
24+
25+
) { }
26+
}
27+
28+
export function foo1(
29+
>foo1 : (reuseTypeNode: Map | undefined, reuseTypeNode2: Exclude<MapOrUndefined, "dummy">, resolveType: { [x: string]: any; } | undefined, requiredParam: number) => void
30+
31+
// Type node is accurate, preserve
32+
reuseTypeNode: Map | undefined = {},
33+
>reuseTypeNode : { [x: string]: any; } | undefined
34+
>{} : {}
35+
36+
reuseTypeNode2: Exclude<MapOrUndefined, "dummy"> = {},
37+
>reuseTypeNode2 : { [x: string]: any; } | undefined
38+
>{} : {}
39+
40+
// Resolve type node, requires adding | undefined
41+
resolveType: Map = {},
42+
>resolveType : { [x: string]: any; }
43+
>{} : {}
44+
45+
requiredParam: number) {
46+
>requiredParam : number
47+
48+
}
49+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// @strictNullChecks: true
2+
// @declaration: true
3+
4+
type Map = {} & { [P in string]: any }
5+
type MapOrUndefined = Map | undefined | "dummy"
6+
export class Foo {
7+
constructor(
8+
// Type node is accurate, preserve
9+
public reuseTypeNode?: Map | undefined,
10+
public reuseTypeNode2?: Exclude<MapOrUndefined, "dummy">,
11+
// Resolve type node, requires adding | undefined
12+
public resolveType?: Map,
13+
) { }
14+
}
15+
16+
export function foo1(
17+
// Type node is accurate, preserve
18+
reuseTypeNode: Map | undefined = {},
19+
reuseTypeNode2: Exclude<MapOrUndefined, "dummy"> = {},
20+
// Resolve type node, requires adding | undefined
21+
resolveType: Map = {},
22+
requiredParam: number) {
23+
24+
}

0 commit comments

Comments
 (0)