Skip to content

Commit b10dfac

Browse files
committed
Minimal repro
1 parent bf5e43a commit b10dfac

File tree

4 files changed

+54
-648
lines changed

4 files changed

+54
-648
lines changed
Lines changed: 13 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,26 @@
11
//// [tests/cases/compiler/importShouldNotBeElidedInDeclarationEmit.ts] ////
22

3-
//// [reselect.d.ts]
4-
export as namespace Reselect;
3+
//// [umd.d.ts]
4+
export as namespace UMD;
55

6-
export type Selector<S, R> = (state: S) => R;
7-
8-
export type OutputSelector<S, R, C> = Selector<S, R> & {
9-
resultFunc: C;
10-
recomputations: () => number;
11-
resetRecomputations: () => number;
12-
};
13-
14-
export type ParametricSelector<S, P, R> = (state: S, props: P, ...args: any[]) => R;
15-
16-
export type OutputParametricSelector<S, P, R, C> = ParametricSelector<S, P, R> & {
17-
resultFunc: C;
18-
recomputations: () => number;
19-
resetRecomputations: () => number;
20-
};
21-
22-
/* one selector */
23-
export function createSelector<S, R1, T>(
24-
selector: Selector<S, R1>,
25-
combiner: (res: R1) => T,
26-
): OutputSelector<S, T, (res: R1) => T>;
27-
export function createSelector<S, P, R1, T>(
28-
selector: ParametricSelector<S, P, R1>,
29-
combiner: (res: R1) => T,
30-
): OutputParametricSelector<S, P, T, (res: R1) => T>;
6+
export type Thing = {
7+
a: number;
8+
}
319

32-
/* two selectors */
33-
export function createSelector<S, R1, R2, T>(
34-
selector1: Selector<S, R1>,
35-
selector2: Selector<S, R2>,
36-
combiner: (res1: R1, res2: R2) => T,
37-
): OutputSelector<S, T, (res1: R1, res2: R2) => T>;
38-
export function createSelector<S, P, R1, R2, T>(
39-
selector1: ParametricSelector<S, P, R1>,
40-
selector2: ParametricSelector<S, P, R2>,
41-
combiner: (res1: R1, res2: R2) => T,
42-
): OutputParametricSelector<S, P, T, (res1: R1, res2: R2) => T>;
43-
10+
export declare function makeThing(): Thing;
4411
//// [index.ts]
45-
import { createSelector } from "reselect";
46-
/*
47-
* changing the import to
48-
* import * as reselect from 'reselect';
49-
* and accessing reselect.createSelector fixes the issue
50-
*/
51-
export interface State {
52-
a: string;
53-
b: number;
54-
}
55-
export const selector = createSelector<State, string, number, { out: string }>(
56-
state => state.a,
57-
state => state.b,
58-
(a, b) => {
59-
return {
60-
out: `${a}+${b}`
61-
};
62-
}
63-
);
64-
selector({ a: "string", b: 5 });
12+
import { makeThing } from "umd";
13+
export const thing = makeThing();
14+
6515

6616
//// [index.js]
6717
"use strict";
6818
exports.__esModule = true;
69-
var reselect_1 = require("reselect");
70-
exports.selector = reselect_1.createSelector(function (state) { return state.a; }, function (state) { return state.b; }, function (a, b) {
71-
return {
72-
out: a + "+" + b
73-
};
74-
});
75-
exports.selector({ a: "string", b: 5 });
19+
var umd_1 = require("umd");
20+
exports.thing = umd_1.makeThing();
7621

7722

7823
//// [index.d.ts]
79-
export interface State {
80-
a: string;
81-
b: number;
82-
}
83-
export declare const selector: ((state: State) => {
84-
out: string;
85-
}) & {
86-
resultFunc: (res1: string, res2: number) => {
87-
out: string;
88-
};
89-
recomputations: () => number;
90-
resetRecomputations: () => number;
24+
export declare const thing: {
25+
a: number;
9126
};
Lines changed: 16 additions & 250 deletions
Original file line numberDiff line numberDiff line change
@@ -1,257 +1,23 @@
1-
=== tests/cases/compiler/node_modules/reselect.d.ts ===
2-
export as namespace Reselect;
3-
>Reselect : Symbol(Reselect, Decl(reselect.d.ts, 0, 0))
1+
=== tests/cases/compiler/node_modules/umd.d.ts ===
2+
export as namespace UMD;
3+
>UMD : Symbol(UMD, Decl(umd.d.ts, 0, 0))
44

5-
export type Selector<S, R> = (state: S) => R;
6-
>Selector : Symbol(Selector, Decl(reselect.d.ts, 0, 29))
7-
>S : Symbol(S, Decl(reselect.d.ts, 2, 21))
8-
>R : Symbol(R, Decl(reselect.d.ts, 2, 23))
9-
>state : Symbol(state, Decl(reselect.d.ts, 2, 30))
10-
>S : Symbol(S, Decl(reselect.d.ts, 2, 21))
11-
>R : Symbol(R, Decl(reselect.d.ts, 2, 23))
5+
export type Thing = {
6+
>Thing : Symbol(Thing, Decl(umd.d.ts, 0, 24))
127

13-
export type OutputSelector<S, R, C> = Selector<S, R> & {
14-
>OutputSelector : Symbol(OutputSelector, Decl(reselect.d.ts, 2, 45))
15-
>S : Symbol(S, Decl(reselect.d.ts, 4, 27))
16-
>R : Symbol(R, Decl(reselect.d.ts, 4, 29))
17-
>C : Symbol(C, Decl(reselect.d.ts, 4, 32))
18-
>Selector : Symbol(Selector, Decl(reselect.d.ts, 0, 29))
19-
>S : Symbol(S, Decl(reselect.d.ts, 4, 27))
20-
>R : Symbol(R, Decl(reselect.d.ts, 4, 29))
21-
22-
resultFunc: C;
23-
>resultFunc : Symbol(resultFunc, Decl(reselect.d.ts, 4, 56))
24-
>C : Symbol(C, Decl(reselect.d.ts, 4, 32))
25-
26-
recomputations: () => number;
27-
>recomputations : Symbol(recomputations, Decl(reselect.d.ts, 5, 16))
28-
29-
resetRecomputations: () => number;
30-
>resetRecomputations : Symbol(resetRecomputations, Decl(reselect.d.ts, 6, 31))
31-
32-
};
33-
34-
export type ParametricSelector<S, P, R> = (state: S, props: P, ...args: any[]) => R;
35-
>ParametricSelector : Symbol(ParametricSelector, Decl(reselect.d.ts, 8, 2))
36-
>S : Symbol(S, Decl(reselect.d.ts, 10, 31))
37-
>P : Symbol(P, Decl(reselect.d.ts, 10, 33))
38-
>R : Symbol(R, Decl(reselect.d.ts, 10, 36))
39-
>state : Symbol(state, Decl(reselect.d.ts, 10, 43))
40-
>S : Symbol(S, Decl(reselect.d.ts, 10, 31))
41-
>props : Symbol(props, Decl(reselect.d.ts, 10, 52))
42-
>P : Symbol(P, Decl(reselect.d.ts, 10, 33))
43-
>args : Symbol(args, Decl(reselect.d.ts, 10, 62))
44-
>R : Symbol(R, Decl(reselect.d.ts, 10, 36))
45-
46-
export type OutputParametricSelector<S, P, R, C> = ParametricSelector<S, P, R> & {
47-
>OutputParametricSelector : Symbol(OutputParametricSelector, Decl(reselect.d.ts, 10, 84))
48-
>S : Symbol(S, Decl(reselect.d.ts, 12, 37))
49-
>P : Symbol(P, Decl(reselect.d.ts, 12, 39))
50-
>R : Symbol(R, Decl(reselect.d.ts, 12, 42))
51-
>C : Symbol(C, Decl(reselect.d.ts, 12, 45))
52-
>ParametricSelector : Symbol(ParametricSelector, Decl(reselect.d.ts, 8, 2))
53-
>S : Symbol(S, Decl(reselect.d.ts, 12, 37))
54-
>P : Symbol(P, Decl(reselect.d.ts, 12, 39))
55-
>R : Symbol(R, Decl(reselect.d.ts, 12, 42))
56-
57-
resultFunc: C;
58-
>resultFunc : Symbol(resultFunc, Decl(reselect.d.ts, 12, 82))
59-
>C : Symbol(C, Decl(reselect.d.ts, 12, 45))
60-
61-
recomputations: () => number;
62-
>recomputations : Symbol(recomputations, Decl(reselect.d.ts, 13, 16))
63-
64-
resetRecomputations: () => number;
65-
>resetRecomputations : Symbol(resetRecomputations, Decl(reselect.d.ts, 14, 31))
66-
67-
};
68-
69-
/* one selector */
70-
export function createSelector<S, R1, T>(
71-
>createSelector : Symbol(createSelector, Decl(reselect.d.ts, 16, 2), Decl(reselect.d.ts, 22, 40), Decl(reselect.d.ts, 26, 53), Decl(reselect.d.ts, 33, 51))
72-
>S : Symbol(S, Decl(reselect.d.ts, 19, 31))
73-
>R1 : Symbol(R1, Decl(reselect.d.ts, 19, 33))
74-
>T : Symbol(T, Decl(reselect.d.ts, 19, 37))
75-
76-
selector: Selector<S, R1>,
77-
>selector : Symbol(selector, Decl(reselect.d.ts, 19, 41))
78-
>Selector : Symbol(Selector, Decl(reselect.d.ts, 0, 29))
79-
>S : Symbol(S, Decl(reselect.d.ts, 19, 31))
80-
>R1 : Symbol(R1, Decl(reselect.d.ts, 19, 33))
81-
82-
combiner: (res: R1) => T,
83-
>combiner : Symbol(combiner, Decl(reselect.d.ts, 20, 30))
84-
>res : Symbol(res, Decl(reselect.d.ts, 21, 15))
85-
>R1 : Symbol(R1, Decl(reselect.d.ts, 19, 33))
86-
>T : Symbol(T, Decl(reselect.d.ts, 19, 37))
87-
88-
): OutputSelector<S, T, (res: R1) => T>;
89-
>OutputSelector : Symbol(OutputSelector, Decl(reselect.d.ts, 2, 45))
90-
>S : Symbol(S, Decl(reselect.d.ts, 19, 31))
91-
>T : Symbol(T, Decl(reselect.d.ts, 19, 37))
92-
>res : Symbol(res, Decl(reselect.d.ts, 22, 25))
93-
>R1 : Symbol(R1, Decl(reselect.d.ts, 19, 33))
94-
>T : Symbol(T, Decl(reselect.d.ts, 19, 37))
95-
96-
export function createSelector<S, P, R1, T>(
97-
>createSelector : Symbol(createSelector, Decl(reselect.d.ts, 16, 2), Decl(reselect.d.ts, 22, 40), Decl(reselect.d.ts, 26, 53), Decl(reselect.d.ts, 33, 51))
98-
>S : Symbol(S, Decl(reselect.d.ts, 23, 31))
99-
>P : Symbol(P, Decl(reselect.d.ts, 23, 33))
100-
>R1 : Symbol(R1, Decl(reselect.d.ts, 23, 36))
101-
>T : Symbol(T, Decl(reselect.d.ts, 23, 40))
102-
103-
selector: ParametricSelector<S, P, R1>,
104-
>selector : Symbol(selector, Decl(reselect.d.ts, 23, 44))
105-
>ParametricSelector : Symbol(ParametricSelector, Decl(reselect.d.ts, 8, 2))
106-
>S : Symbol(S, Decl(reselect.d.ts, 23, 31))
107-
>P : Symbol(P, Decl(reselect.d.ts, 23, 33))
108-
>R1 : Symbol(R1, Decl(reselect.d.ts, 23, 36))
109-
110-
combiner: (res: R1) => T,
111-
>combiner : Symbol(combiner, Decl(reselect.d.ts, 24, 43))
112-
>res : Symbol(res, Decl(reselect.d.ts, 25, 15))
113-
>R1 : Symbol(R1, Decl(reselect.d.ts, 23, 36))
114-
>T : Symbol(T, Decl(reselect.d.ts, 23, 40))
115-
116-
): OutputParametricSelector<S, P, T, (res: R1) => T>;
117-
>OutputParametricSelector : Symbol(OutputParametricSelector, Decl(reselect.d.ts, 10, 84))
118-
>S : Symbol(S, Decl(reselect.d.ts, 23, 31))
119-
>P : Symbol(P, Decl(reselect.d.ts, 23, 33))
120-
>T : Symbol(T, Decl(reselect.d.ts, 23, 40))
121-
>res : Symbol(res, Decl(reselect.d.ts, 26, 38))
122-
>R1 : Symbol(R1, Decl(reselect.d.ts, 23, 36))
123-
>T : Symbol(T, Decl(reselect.d.ts, 23, 40))
124-
125-
/* two selectors */
126-
export function createSelector<S, R1, R2, T>(
127-
>createSelector : Symbol(createSelector, Decl(reselect.d.ts, 16, 2), Decl(reselect.d.ts, 22, 40), Decl(reselect.d.ts, 26, 53), Decl(reselect.d.ts, 33, 51))
128-
>S : Symbol(S, Decl(reselect.d.ts, 29, 31))
129-
>R1 : Symbol(R1, Decl(reselect.d.ts, 29, 33))
130-
>R2 : Symbol(R2, Decl(reselect.d.ts, 29, 37))
131-
>T : Symbol(T, Decl(reselect.d.ts, 29, 41))
132-
133-
selector1: Selector<S, R1>,
134-
>selector1 : Symbol(selector1, Decl(reselect.d.ts, 29, 45))
135-
>Selector : Symbol(Selector, Decl(reselect.d.ts, 0, 29))
136-
>S : Symbol(S, Decl(reselect.d.ts, 29, 31))
137-
>R1 : Symbol(R1, Decl(reselect.d.ts, 29, 33))
138-
139-
selector2: Selector<S, R2>,
140-
>selector2 : Symbol(selector2, Decl(reselect.d.ts, 30, 31))
141-
>Selector : Symbol(Selector, Decl(reselect.d.ts, 0, 29))
142-
>S : Symbol(S, Decl(reselect.d.ts, 29, 31))
143-
>R2 : Symbol(R2, Decl(reselect.d.ts, 29, 37))
144-
145-
combiner: (res1: R1, res2: R2) => T,
146-
>combiner : Symbol(combiner, Decl(reselect.d.ts, 31, 31))
147-
>res1 : Symbol(res1, Decl(reselect.d.ts, 32, 15))
148-
>R1 : Symbol(R1, Decl(reselect.d.ts, 29, 33))
149-
>res2 : Symbol(res2, Decl(reselect.d.ts, 32, 24))
150-
>R2 : Symbol(R2, Decl(reselect.d.ts, 29, 37))
151-
>T : Symbol(T, Decl(reselect.d.ts, 29, 41))
152-
153-
): OutputSelector<S, T, (res1: R1, res2: R2) => T>;
154-
>OutputSelector : Symbol(OutputSelector, Decl(reselect.d.ts, 2, 45))
155-
>S : Symbol(S, Decl(reselect.d.ts, 29, 31))
156-
>T : Symbol(T, Decl(reselect.d.ts, 29, 41))
157-
>res1 : Symbol(res1, Decl(reselect.d.ts, 33, 25))
158-
>R1 : Symbol(R1, Decl(reselect.d.ts, 29, 33))
159-
>res2 : Symbol(res2, Decl(reselect.d.ts, 33, 34))
160-
>R2 : Symbol(R2, Decl(reselect.d.ts, 29, 37))
161-
>T : Symbol(T, Decl(reselect.d.ts, 29, 41))
162-
163-
export function createSelector<S, P, R1, R2, T>(
164-
>createSelector : Symbol(createSelector, Decl(reselect.d.ts, 16, 2), Decl(reselect.d.ts, 22, 40), Decl(reselect.d.ts, 26, 53), Decl(reselect.d.ts, 33, 51))
165-
>S : Symbol(S, Decl(reselect.d.ts, 34, 31))
166-
>P : Symbol(P, Decl(reselect.d.ts, 34, 33))
167-
>R1 : Symbol(R1, Decl(reselect.d.ts, 34, 36))
168-
>R2 : Symbol(R2, Decl(reselect.d.ts, 34, 40))
169-
>T : Symbol(T, Decl(reselect.d.ts, 34, 44))
170-
171-
selector1: ParametricSelector<S, P, R1>,
172-
>selector1 : Symbol(selector1, Decl(reselect.d.ts, 34, 48))
173-
>ParametricSelector : Symbol(ParametricSelector, Decl(reselect.d.ts, 8, 2))
174-
>S : Symbol(S, Decl(reselect.d.ts, 34, 31))
175-
>P : Symbol(P, Decl(reselect.d.ts, 34, 33))
176-
>R1 : Symbol(R1, Decl(reselect.d.ts, 34, 36))
177-
178-
selector2: ParametricSelector<S, P, R2>,
179-
>selector2 : Symbol(selector2, Decl(reselect.d.ts, 35, 44))
180-
>ParametricSelector : Symbol(ParametricSelector, Decl(reselect.d.ts, 8, 2))
181-
>S : Symbol(S, Decl(reselect.d.ts, 34, 31))
182-
>P : Symbol(P, Decl(reselect.d.ts, 34, 33))
183-
>R2 : Symbol(R2, Decl(reselect.d.ts, 34, 40))
184-
185-
combiner: (res1: R1, res2: R2) => T,
186-
>combiner : Symbol(combiner, Decl(reselect.d.ts, 36, 44))
187-
>res1 : Symbol(res1, Decl(reselect.d.ts, 37, 15))
188-
>R1 : Symbol(R1, Decl(reselect.d.ts, 34, 36))
189-
>res2 : Symbol(res2, Decl(reselect.d.ts, 37, 24))
190-
>R2 : Symbol(R2, Decl(reselect.d.ts, 34, 40))
191-
>T : Symbol(T, Decl(reselect.d.ts, 34, 44))
192-
193-
): OutputParametricSelector<S, P, T, (res1: R1, res2: R2) => T>;
194-
>OutputParametricSelector : Symbol(OutputParametricSelector, Decl(reselect.d.ts, 10, 84))
195-
>S : Symbol(S, Decl(reselect.d.ts, 34, 31))
196-
>P : Symbol(P, Decl(reselect.d.ts, 34, 33))
197-
>T : Symbol(T, Decl(reselect.d.ts, 34, 44))
198-
>res1 : Symbol(res1, Decl(reselect.d.ts, 38, 38))
199-
>R1 : Symbol(R1, Decl(reselect.d.ts, 34, 36))
200-
>res2 : Symbol(res2, Decl(reselect.d.ts, 38, 47))
201-
>R2 : Symbol(R2, Decl(reselect.d.ts, 34, 40))
202-
>T : Symbol(T, Decl(reselect.d.ts, 34, 44))
203-
204-
=== tests/cases/compiler/index.ts ===
205-
import { createSelector } from "reselect";
206-
>createSelector : Symbol(createSelector, Decl(index.ts, 0, 8))
207-
208-
/*
209-
* changing the import to
210-
* import * as reselect from 'reselect';
211-
* and accessing reselect.createSelector fixes the issue
212-
*/
213-
export interface State {
214-
>State : Symbol(State, Decl(index.ts, 0, 42))
215-
216-
a: string;
217-
>a : Symbol(State.a, Decl(index.ts, 6, 24))
218-
219-
b: number;
220-
>b : Symbol(State.b, Decl(index.ts, 7, 14))
8+
a: number;
9+
>a : Symbol(a, Decl(umd.d.ts, 2, 21))
22110
}
222-
export const selector = createSelector<State, string, number, { out: string }>(
223-
>selector : Symbol(selector, Decl(index.ts, 10, 12))
224-
>createSelector : Symbol(createSelector, Decl(index.ts, 0, 8))
225-
>State : Symbol(State, Decl(index.ts, 0, 42))
226-
>out : Symbol(out, Decl(index.ts, 10, 63))
227-
228-
state => state.a,
229-
>state : Symbol(state, Decl(index.ts, 10, 79))
230-
>state.a : Symbol(State.a, Decl(index.ts, 6, 24))
231-
>state : Symbol(state, Decl(index.ts, 10, 79))
232-
>a : Symbol(State.a, Decl(index.ts, 6, 24))
23311

234-
state => state.b,
235-
>state : Symbol(state, Decl(index.ts, 11, 21))
236-
>state.b : Symbol(State.b, Decl(index.ts, 7, 14))
237-
>state : Symbol(state, Decl(index.ts, 11, 21))
238-
>b : Symbol(State.b, Decl(index.ts, 7, 14))
12+
export declare function makeThing(): Thing;
13+
>makeThing : Symbol(makeThing, Decl(umd.d.ts, 4, 1))
14+
>Thing : Symbol(Thing, Decl(umd.d.ts, 0, 24))
23915

240-
(a, b) => {
241-
>a : Symbol(a, Decl(index.ts, 13, 5))
242-
>b : Symbol(b, Decl(index.ts, 13, 7))
243-
244-
return {
245-
out: `${a}+${b}`
246-
>out : Symbol(out, Decl(index.ts, 14, 16))
247-
>a : Symbol(a, Decl(index.ts, 13, 5))
248-
>b : Symbol(b, Decl(index.ts, 13, 7))
16+
=== tests/cases/compiler/index.ts ===
17+
import { makeThing } from "umd";
18+
>makeThing : Symbol(makeThing, Decl(index.ts, 0, 8))
24919

250-
};
251-
}
252-
);
253-
selector({ a: "string", b: 5 });
254-
>selector : Symbol(selector, Decl(index.ts, 10, 12))
255-
>a : Symbol(a, Decl(index.ts, 19, 10))
256-
>b : Symbol(b, Decl(index.ts, 19, 23))
20+
export const thing = makeThing();
21+
>thing : Symbol(thing, Decl(index.ts, 1, 12))
22+
>makeThing : Symbol(makeThing, Decl(index.ts, 0, 8))
25723

0 commit comments

Comments
 (0)