Skip to content

Commit b9ae2bd

Browse files
committed
Change Set key type back to never
1. Set<T> once again extends Collection<never, T>. 2. pages/lib/TypeKind.js understands Never now. 3. Remove calls to Set.has and Set.get. These refer to the key type, which is now `never`. Set.contains should be used instead of Set.has. `if (Set.contains(x)) Set.get(x)` should be replaced with `if (Set.contains(x)) x` since Sets shouldn't change the identity of their items.
1 parent ea7ffae commit b9ae2bd

File tree

7 files changed

+72
-65
lines changed

7 files changed

+72
-65
lines changed

__tests__/Set.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,6 @@ describe('Set', () => {
263263
let symbolSet = Set([ a, b, c, a, b, c, a, b, c, a, b, c ]);
264264
expect(symbolSet.size).toBe(3);
265265
expect(symbolSet.contains(b)).toBe(true);
266-
expect(symbolSet.get(c)).toEqual(c);
267266
});
268267

269268
it('operates on a large number of symbols, maintaining obj uniqueness', () => {
@@ -277,7 +276,6 @@ describe('Set', () => {
277276
let symbolSet = Set(manySymbols);
278277
expect(symbolSet.size).toBe(12);
279278
expect(symbolSet.contains(manySymbols[10])).toBe(true);
280-
expect(symbolSet.get(manySymbols[10])).toEqual(manySymbols[10]);
281279
});
282280

283281
});

dist/immutable-nonambient.d.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,7 +1730,7 @@
17301730
* value at every step.
17311731
*/
17321732
map<M>(
1733-
mapper: (value: T, key: number, iter: this) => M,
1733+
mapper: (value: T, key: never, iter: this) => M,
17341734
context?: any
17351735
): Set<M>;
17361736

@@ -1740,7 +1740,7 @@
17401740
* Similar to `set.map(...).flatten(true)`.
17411741
*/
17421742
flatMap<M>(
1743-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
1743+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
17441744
context?: any
17451745
): Set<M>;
17461746

@@ -1752,11 +1752,11 @@
17521752
* not filtering out any values.
17531753
*/
17541754
filter<F extends T>(
1755-
predicate: (value: T, key: number, iter: this) => value is F,
1755+
predicate: (value: T, key: never, iter: this) => value is F,
17561756
context?: any
17571757
): Set<F>;
17581758
filter(
1759-
predicate: (value: T, key: number, iter: this) => any,
1759+
predicate: (value: T, key: never, iter: this) => any,
17601760
context?: any
17611761
): this;
17621762
}
@@ -1825,7 +1825,7 @@
18251825
* value at every step.
18261826
*/
18271827
map<M>(
1828-
mapper: (value: T, key: number, iter: this) => M,
1828+
mapper: (value: T, key: never, iter: this) => M,
18291829
context?: any
18301830
): OrderedSet<M>;
18311831

@@ -1835,7 +1835,7 @@
18351835
* Similar to `set.map(...).flatten(true)`.
18361836
*/
18371837
flatMap<M>(
1838-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
1838+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
18391839
context?: any
18401840
): OrderedSet<M>;
18411841

@@ -1847,11 +1847,11 @@
18471847
* not filtering out any values.
18481848
*/
18491849
filter<F extends T>(
1850-
predicate: (value: T, key: number, iter: this) => value is F,
1850+
predicate: (value: T, key: never, iter: this) => value is F,
18511851
context?: any
18521852
): OrderedSet<F>;
18531853
filter(
1854-
predicate: (value: T, key: number, iter: this) => any,
1854+
predicate: (value: T, key: never, iter: this) => any,
18551855
context?: any
18561856
): this;
18571857

@@ -2670,7 +2670,7 @@
26702670
export function Set<T>(): Seq.Set<T>;
26712671
export function Set<T>(collection: Iterable<T>): Seq.Set<T>;
26722672

2673-
export interface Set<T> extends Seq<number, T>, Collection.Set<T> {
2673+
export interface Set<T> extends Seq<never, T>, Collection.Set<T> {
26742674
/**
26752675
* Deeply converts this Set Seq to equivalent native JavaScript Array.
26762676
*/
@@ -2707,7 +2707,7 @@
27072707
* same value at every step.
27082708
*/
27092709
map<M>(
2710-
mapper: (value: T, key: number, iter: this) => M,
2710+
mapper: (value: T, key: never, iter: this) => M,
27112711
context?: any
27122712
): Seq.Set<M>;
27132713

@@ -2717,7 +2717,7 @@
27172717
* Similar to `seq.map(...).flatten(true)`.
27182718
*/
27192719
flatMap<M>(
2720-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
2720+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
27212721
context?: any
27222722
): Seq.Set<M>;
27232723

@@ -2729,11 +2729,11 @@
27292729
* not filtering out any values.
27302730
*/
27312731
filter<F extends T>(
2732-
predicate: (value: T, key: number, iter: this) => value is F,
2732+
predicate: (value: T, key: never, iter: this) => value is F,
27332733
context?: any
27342734
): Seq.Set<F>;
27352735
filter(
2736-
predicate: (value: T, key: number, iter: this) => any,
2736+
predicate: (value: T, key: never, iter: this) => any,
27372737
context?: any
27382738
): this;
27392739
}
@@ -3294,7 +3294,7 @@
32943294
*/
32953295
export function Set<T>(collection: Iterable<T>): Collection.Set<T>;
32963296

3297-
export interface Set<T> extends Collection<number, T> {
3297+
export interface Set<T> extends Collection<never, T> {
32983298
/**
32993299
* Deeply converts this Set collection to equivalent native JavaScript Array.
33003300
*/
@@ -3331,7 +3331,7 @@
33313331
* same value at every step.
33323332
*/
33333333
map<M>(
3334-
mapper: (value: T, key: number, iter: this) => M,
3334+
mapper: (value: T, key: never, iter: this) => M,
33353335
context?: any
33363336
): Collection.Set<M>;
33373337

@@ -3341,7 +3341,7 @@
33413341
* Similar to `collection.map(...).flatten(true)`.
33423342
*/
33433343
flatMap<M>(
3344-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
3344+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
33453345
context?: any
33463346
): Collection.Set<M>;
33473347

@@ -3353,11 +3353,11 @@
33533353
* not filtering out any values.
33543354
*/
33553355
filter<F extends T>(
3356-
predicate: (value: T, key: number, iter: this) => value is F,
3356+
predicate: (value: T, key: never, iter: this) => value is F,
33573357
context?: any
33583358
): Collection.Set<F>;
33593359
filter(
3360-
predicate: (value: T, key: number, iter: this) => any,
3360+
predicate: (value: T, key: never, iter: this) => any,
33613361
context?: any
33623362
): this;
33633363

dist/immutable.d.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,7 +1730,7 @@ declare module Immutable {
17301730
* value at every step.
17311731
*/
17321732
map<M>(
1733-
mapper: (value: T, key: number, iter: this) => M,
1733+
mapper: (value: T, key: never, iter: this) => M,
17341734
context?: any
17351735
): Set<M>;
17361736

@@ -1740,7 +1740,7 @@ declare module Immutable {
17401740
* Similar to `set.map(...).flatten(true)`.
17411741
*/
17421742
flatMap<M>(
1743-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
1743+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
17441744
context?: any
17451745
): Set<M>;
17461746

@@ -1752,11 +1752,11 @@ declare module Immutable {
17521752
* not filtering out any values.
17531753
*/
17541754
filter<F extends T>(
1755-
predicate: (value: T, key: number, iter: this) => value is F,
1755+
predicate: (value: T, key: never, iter: this) => value is F,
17561756
context?: any
17571757
): Set<F>;
17581758
filter(
1759-
predicate: (value: T, key: number, iter: this) => any,
1759+
predicate: (value: T, key: never, iter: this) => any,
17601760
context?: any
17611761
): this;
17621762
}
@@ -1825,7 +1825,7 @@ declare module Immutable {
18251825
* value at every step.
18261826
*/
18271827
map<M>(
1828-
mapper: (value: T, key: number, iter: this) => M,
1828+
mapper: (value: T, key: never, iter: this) => M,
18291829
context?: any
18301830
): OrderedSet<M>;
18311831

@@ -1835,7 +1835,7 @@ declare module Immutable {
18351835
* Similar to `set.map(...).flatten(true)`.
18361836
*/
18371837
flatMap<M>(
1838-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
1838+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
18391839
context?: any
18401840
): OrderedSet<M>;
18411841

@@ -1847,11 +1847,11 @@ declare module Immutable {
18471847
* not filtering out any values.
18481848
*/
18491849
filter<F extends T>(
1850-
predicate: (value: T, key: number, iter: this) => value is F,
1850+
predicate: (value: T, key: never, iter: this) => value is F,
18511851
context?: any
18521852
): OrderedSet<F>;
18531853
filter(
1854-
predicate: (value: T, key: number, iter: this) => any,
1854+
predicate: (value: T, key: never, iter: this) => any,
18551855
context?: any
18561856
): this;
18571857

@@ -2670,7 +2670,7 @@ declare module Immutable {
26702670
export function Set<T>(): Seq.Set<T>;
26712671
export function Set<T>(collection: Iterable<T>): Seq.Set<T>;
26722672

2673-
export interface Set<T> extends Seq<number, T>, Collection.Set<T> {
2673+
export interface Set<T> extends Seq<never, T>, Collection.Set<T> {
26742674
/**
26752675
* Deeply converts this Set Seq to equivalent native JavaScript Array.
26762676
*/
@@ -2707,7 +2707,7 @@ declare module Immutable {
27072707
* same value at every step.
27082708
*/
27092709
map<M>(
2710-
mapper: (value: T, key: number, iter: this) => M,
2710+
mapper: (value: T, key: never, iter: this) => M,
27112711
context?: any
27122712
): Seq.Set<M>;
27132713

@@ -2717,7 +2717,7 @@ declare module Immutable {
27172717
* Similar to `seq.map(...).flatten(true)`.
27182718
*/
27192719
flatMap<M>(
2720-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
2720+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
27212721
context?: any
27222722
): Seq.Set<M>;
27232723

@@ -2729,11 +2729,11 @@ declare module Immutable {
27292729
* not filtering out any values.
27302730
*/
27312731
filter<F extends T>(
2732-
predicate: (value: T, key: number, iter: this) => value is F,
2732+
predicate: (value: T, key: never, iter: this) => value is F,
27332733
context?: any
27342734
): Seq.Set<F>;
27352735
filter(
2736-
predicate: (value: T, key: number, iter: this) => any,
2736+
predicate: (value: T, key: never, iter: this) => any,
27372737
context?: any
27382738
): this;
27392739
}
@@ -3294,7 +3294,7 @@ declare module Immutable {
32943294
*/
32953295
export function Set<T>(collection: Iterable<T>): Collection.Set<T>;
32963296

3297-
export interface Set<T> extends Collection<number, T> {
3297+
export interface Set<T> extends Collection<never, T> {
32983298
/**
32993299
* Deeply converts this Set collection to equivalent native JavaScript Array.
33003300
*/
@@ -3331,7 +3331,7 @@ declare module Immutable {
33313331
* same value at every step.
33323332
*/
33333333
map<M>(
3334-
mapper: (value: T, key: number, iter: this) => M,
3334+
mapper: (value: T, key: never, iter: this) => M,
33353335
context?: any
33363336
): Collection.Set<M>;
33373337

@@ -3341,7 +3341,7 @@ declare module Immutable {
33413341
* Similar to `collection.map(...).flatten(true)`.
33423342
*/
33433343
flatMap<M>(
3344-
mapper: (value: T, key: number, iter: this) => Iterable<M>,
3344+
mapper: (value: T, key: never, iter: this) => Iterable<M>,
33453345
context?: any
33463346
): Collection.Set<M>;
33473347

@@ -3353,11 +3353,11 @@ declare module Immutable {
33533353
* not filtering out any values.
33543354
*/
33553355
filter<F extends T>(
3356-
predicate: (value: T, key: number, iter: this) => value is F,
3356+
predicate: (value: T, key: never, iter: this) => value is F,
33573357
context?: any
33583358
): Collection.Set<F>;
33593359
filter(
3360-
predicate: (value: T, key: number, iter: this) => any,
3360+
predicate: (value: T, key: never, iter: this) => any,
33613361
context?: any
33623362
): this;
33633363

pages/lib/TypeKind.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ var TypeKind = {
66
String: 3,
77
Object: 4,
88
Array: 5,
9-
Function: 6,
9+
Never: 6,
10+
Function: 7,
1011

11-
Param: 7,
12-
Type: 8,
12+
Param: 8,
13+
Type: 9,
1314

14-
This: 9,
15-
Undefined: 10,
16-
Union: 11,
17-
Tuple: 12,
18-
Indexed: 13,
19-
Operator: 14
15+
This: 10,
16+
Undefined: 11,
17+
Union: 12,
18+
Tuple: 13,
19+
Indexed: 14,
20+
Operator: 15
2021
};
2122

2223
module.exports = TypeKind;

pages/lib/genTypeDefData.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,10 @@ function DocVisitor(source) {
262262

263263
function parseType(node) {
264264
switch (node.kind) {
265+
case ts.SyntaxKind.NeverKeyword:
266+
return {
267+
k: TypeKind.NeverKeyword
268+
};
265269
case ts.SyntaxKind.AnyKeyword:
266270
return {
267271
k: TypeKind.Any

pages/src/docs/src/Defs.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ var TypeDef = React.createClass({
8080
var type = this.props.type;
8181
var prefix = this.props.prefix;
8282
switch (type.k) {
83+
case TypeKind.Never:
84+
return this.wrap('primitive', 'never');
8385
case TypeKind.Any:
8486
return this.wrap('primitive', 'any');
8587
case TypeKind.This:
@@ -295,6 +297,8 @@ function typeLength(info, type) {
295297
throw new Error('Expected type');
296298
}
297299
switch (type.k) {
300+
case TypeKind.Never:
301+
return 5;
298302
case TypeKind.Any:
299303
return 3;
300304
case TypeKind.This:

0 commit comments

Comments
 (0)