Skip to content

Commit 91c66a0

Browse files
committed
Add tsc baselining test for scenario that changed.
1 parent 3d6a182 commit 91c66a0

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

src/testRunner/unittests/tsc/declarationEmit.ts

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,68 @@ namespace ts {
6969
},
7070
commandLineArgs: ["-p", "src/plugin-one", "--listFiles"]
7171
});
72+
73+
verifyTsc({
74+
scenario: "declarationEmit",
75+
subScenario: "when pkg references sibling package through indirect symlink",
76+
fs: () => loadProjectFromFiles({
77+
"/src/pkg1/dist/index.d.ts": utils.dedent`
78+
export * from './types';`,
79+
"/src/pkg1/dist/types.d.ts": utils.dedent`
80+
export declare type A = {
81+
id: string;
82+
};
83+
export declare type B = {
84+
id: number;
85+
};
86+
export declare type IdType = A | B;
87+
export declare class MetadataAccessor<T, D extends IdType = IdType> {
88+
readonly key: string;
89+
private constructor();
90+
toString(): string;
91+
static create<T, D extends IdType = IdType>(key: string): MetadataAccessor<T, D>;
92+
}`,
93+
"/src/pkg1/package.json": utils.dedent`
94+
{
95+
"name": "@raymondfeng/pkg1",
96+
"version": "1.0.0",
97+
"description": "",
98+
"main": "dist/index.js",
99+
"typings": "dist/index.d.ts"
100+
}`,
101+
"/src/pkg2/dist/index.d.ts": utils.dedent`
102+
export * from './types';`,
103+
"/src/pkg2/dist/types.d.ts": utils.dedent`
104+
export {MetadataAccessor} from '@raymondfeng/pkg1';`,
105+
"/src/pkg2/package.json": utils.dedent`
106+
{
107+
"name": "@raymondfeng/pkg2",
108+
"version": "1.0.0",
109+
"description": "",
110+
"main": "dist/index.js",
111+
"typings": "dist/index.d.ts"
112+
}`,
113+
"/src/pkg3/src/index.ts": utils.dedent`
114+
export * from './keys';`,
115+
"/src/pkg3/src/keys.ts": utils.dedent`
116+
import {MetadataAccessor} from "@raymondfeng/pkg2";
117+
export const ADMIN = MetadataAccessor.create<boolean>('1');`,
118+
"/src/pkg3/tsconfig.json": utils.dedent`
119+
{
120+
"compilerOptions": {
121+
"outDir": "dist",
122+
"rootDir": "src",
123+
"target": "es5",
124+
"module": "commonjs",
125+
"strict": true,
126+
"esModuleInterop": true,
127+
"declaration": true
128+
}
129+
}`,
130+
"/src/pkg2/node_modules/@raymondfeng/pkg1": new vfs.Symlink("/src/pkg1"),
131+
"/src/pkg3/node_modules/@raymondfeng/pkg2": new vfs.Symlink("/src/pkg2"),
132+
}),
133+
commandLineArgs: ["-p", "src/pkg3", "--listFiles"]
134+
});
72135
});
73136
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//// [/lib/initial-buildOutput.txt]
2+
/lib/tsc -p src/pkg3 --listFiles
3+
src/pkg3/src/keys.ts(2,14): error TS2742: The inferred type of 'ADMIN' cannot be named without a reference to '@raymondfeng/pkg2/node_modules/@raymondfeng/pkg1'. This is likely not portable. A type annotation is necessary.
4+
/lib/lib.d.ts
5+
/src/pkg3/node_modules/@raymondfeng/pkg2/node_modules/@raymondfeng/pkg1/dist/types.d.ts
6+
/src/pkg3/node_modules/@raymondfeng/pkg2/node_modules/@raymondfeng/pkg1/dist/index.d.ts
7+
/src/pkg3/node_modules/@raymondfeng/pkg2/dist/types.d.ts
8+
/src/pkg3/node_modules/@raymondfeng/pkg2/dist/index.d.ts
9+
/src/pkg3/src/keys.ts
10+
/src/pkg3/src/index.ts
11+
exitCode:: 1
12+
13+
14+
//// [/src/pkg3/dist/index.d.ts]
15+
export * from './keys';
16+
17+
18+
//// [/src/pkg3/dist/index.js]
19+
"use strict";
20+
function __export(m) {
21+
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
22+
}
23+
Object.defineProperty(exports, "__esModule", { value: true });
24+
__export(require("./keys"));
25+
26+
27+
//// [/src/pkg3/dist/keys.js]
28+
"use strict";
29+
Object.defineProperty(exports, "__esModule", { value: true });
30+
var pkg2_1 = require("@raymondfeng/pkg2");
31+
exports.ADMIN = pkg2_1.MetadataAccessor.create('1');
32+
33+

0 commit comments

Comments
 (0)