Skip to content

Commit 0f62177

Browse files
committed
Squashed commit of the following: commit f26ae8edff3c84c8426887bb55591fac7dacdc7b Merge: 51d3244 498e8a5 Author: Lee Byron <lee@leebyron.com> Date: Fri Sep 29 11:49:20 2017 -0700 Merge branch 'dtslint' of https://github.com/umidbekkarimov/immutable-js into umidbekkarimov-dtslint commit 498e8a5 Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Fri Sep 29 18:39:02 2017 +0400 refactor(ts-test): remove ignored ts version annotations. commit b798a78 Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Fri Sep 29 18:38:02 2017 +0400 refactor(ts-test): remove fixed `FIXME` tags. commit 2c12827 Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Fri Sep 29 18:35:56 2017 +0400 refactor: move `flow-types` back, add extra directory for ts tests. commit be1f544 Merge: 18f426b 6384ea3 Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Fri Sep 29 17:26:06 2017 +0400 Merge branch 'master' into dtslint commit 18f426b Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 20:32:38 2017 +0400 Add test spec for `record` types. commit 3ff6ef4 Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 19:45:56 2017 +0400 Add tests for `Range`, `Repeat` and `Seq` types. commit fceaa38 Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 19:37:34 2017 +0400 Add tests for `Stack` types. commit 2f4e28d Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 19:27:40 2017 +0400 Add tests for `Set` and `OrderedSet` types. commit 568fa9a Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 19:13:43 2017 +0400 Add tests for `Map` and `OrderedMap` types. commit 6b63cbc Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 18:06:55 2017 +0400 Extract `list` and `exports` type tests from `immutable-flow.ts`. commit 4dc8ec5 Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 15:55:37 2017 +0400 Hide failed tests. commit 211b7ae Author: Umidbek Karimov <uma.karimov@gmail.com> Date: Sat Apr 1 13:38:39 2017 +0400 [WIP] Implement dtslint.
1 parent 51d3244 commit 0f62177

18 files changed

+2313
-80
lines changed

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@
3434
"lint:js": "eslint \"{__tests__,src,pages/src,pages/lib}/**/*.js\"",
3535
"format": "prettier --single-quote --write \"{__tests__,src,pages/src,pages/lib}/**/*.js\"",
3636
"testonly": "./resources/jest",
37-
"test": "run-s format build lint testonly type-check",
37+
"test": "run-s format build lint testonly test:types:*",
3838
"test:travis": "npm run test && ./resources/check-changes",
39-
"type-check": "cd type-definitions/tests && flow check",
39+
"test:types:ts": "dtslint type-definitions/ts-tests",
40+
"test:types:flow": "flow check type-definitions/tests",
4041
"perf": "node ./resources/bench.js",
4142
"start": "gulp --gulpfile gulpfile.js dev",
4243
"deploy": "(cd ./pages/out && git init && git config user.name \"Travis CI\" && git config user.email \"github@fb.com\" && git add . && git commit -m \"Deploy to GitHub Pages\" && git push --force --quiet \"https://${GH_TOKEN}@github.com/facebook/immutable-js.git\" master:gh-pages > /dev/null 2>1)"
@@ -60,6 +61,7 @@
6061
"browserify": "^5.11.2",
6162
"colors": "1.1.2",
6263
"del": "2.2.2",
64+
"dtslint": "0.1.2",
6365
"eslint": "3.17.1",
6466
"eslint-config-airbnb": "14.1.0",
6567
"eslint-config-prettier": "1.5.0",
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import {
2+
List,
3+
Map,
4+
OrderedMap,
5+
OrderedSet,
6+
Set,
7+
Stack,
8+
} from '../../';
9+
10+
class A { x: number; }
11+
class B extends A { y: string; }
12+
class C { z: string; }
13+
14+
// List covariance
15+
var listOfB: List<B> = List<B>();
16+
var listOfA: List<A> = listOfB;
17+
18+
// $ExpectType List<B>
19+
listOfA = List([new B()]);
20+
21+
// $ExpectError
22+
var listOfC: List<C> = listOfB;
23+
24+
// Map covariance
25+
declare var mapOfB: Map<string, B>;
26+
var mapOfA: Map<string, A> = mapOfB;
27+
28+
// $ExpectType Map<string, B>
29+
mapOfA = Map({b: new B()});
30+
31+
// $ExpectError
32+
var mapOfC: Map<string, C> = mapOfB;
33+
34+
// Set covariance
35+
declare var setOfB: Set<B>;
36+
var setOfA: Set<A> = setOfB;
37+
38+
// $ExpectType Set<B>
39+
setOfA = Set([new B()]);
40+
// $ExpectError
41+
var setOfC: Set<C> = setOfB;
42+
43+
// Stack covariance
44+
declare var stackOfB: Stack<B>;
45+
var stackOfA: Stack<A> = stackOfB;
46+
// $ExpectType Stack<B>
47+
stackOfA = Stack([new B()]);
48+
// $ExpectError
49+
var stackOfC: Stack<C> = stackOfB;
50+
51+
// OrderedMap covariance
52+
declare var orderedMapOfB: OrderedMap<string, B>;
53+
var orderedMapOfA: OrderedMap<string, A> = orderedMapOfB;
54+
// $ExpectType OrderedMap<string, B>
55+
orderedMapOfA = OrderedMap({b: new B()});
56+
// $ExpectError
57+
var orderedMapOfC: OrderedMap<string, C> = orderedMapOfB;
58+
59+
// OrderedSet covariance
60+
declare var orderedSetOfB: OrderedSet<B>;
61+
var orderedSetOfA: OrderedSet<A> = orderedSetOfB;
62+
// $ExpectType OrderedSet<B>
63+
orderedSetOfA = OrderedSet([new B()]);
64+
// $ExpectError
65+
var orderedSetOfC: OrderedSet<C> = orderedSetOfB;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {
2+
Map as ImmutableMap,
3+
Set as ImmutableSet,
4+
} from '../../';
5+
6+
// Immutable.js collections
7+
var mapImmutable: ImmutableMap<string, number> = ImmutableMap<string, number>();
8+
var setImmutable: ImmutableSet<string> = ImmutableSet<string>();
9+
10+
// $ExpectType Map<string, number>
11+
mapImmutable.delete('foo');
12+
13+
// ES6 collections
14+
var mapES6: Map<string, number> = new Map<string, number>();
15+
var setES6: Set<string> = new Set<string>();
16+
17+
// $ExpectType boolean
18+
mapES6.delete('foo');

type-definitions/ts-tests/exports.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Some tests look like they are repeated in order to avoid false positives.
2+
3+
import * as Immutable from '../../';
4+
import {
5+
List,
6+
Map,
7+
OrderedMap,
8+
OrderedSet,
9+
Range,
10+
Repeat,
11+
Seq,
12+
Set,
13+
Stack,
14+
Collection
15+
} from '../../';
16+
17+
List; // $ExpectType typeof List
18+
Map; // $ExpectType typeof Map
19+
OrderedMap; // $ExpectType typeof OrderedMap
20+
OrderedSet; // $ExpectType typeof OrderedSet
21+
// TODO: Turn on once https://github.com/Microsoft/dtslint/issues/19 is resolved.
22+
Range; // $ ExpectType (start?: number | undefined, end?: number | undefined, step?: number | undefined) => Indexed<number>
23+
Repeat; // $ExpectType <T>(value: T, times?: number | undefined) => Indexed<T>
24+
Seq; // $ExpectType typeof Seq
25+
Set; // $ExpectType typeof Set
26+
Stack; // $ExpectType typeof Stack
27+
Collection; // $ExpectType typeof Collection
28+
Collection.Set; // $ExpectType <T>(collection: Iterable<T>) => Set<T>
29+
Collection.Keyed; // $ ExpectType { <K, V>(collection: Iterable<[K, V]>): Keyed<K, V>; <V>(obj: { [key: string]: V; }): Keyed<string, V> }
30+
Collection.Indexed; // $ExpectType <T>(collection: Iterable<T>) => Indexed<T>
31+
32+
Immutable.List; // $ExpectType typeof List
33+
Immutable.Map; // $ExpectType typeof Map
34+
Immutable.OrderedMap; // $ExpectType typeof OrderedMap
35+
Immutable.OrderedSet; // $ExpectType typeof OrderedSet
36+
// TODO: Turn on once https://github.com/Microsoft/dtslint/issues/19 is resolved.
37+
Immutable.Range; // $ ExpectType (start?: number | undefined, end?: number | undefined, step?: number | undefined) => Indexed<number>
38+
Immutable.Repeat; // $ExpectType <T>(value: T, times?: number | undefined) => Indexed<T>
39+
Immutable.Seq; // $ExpectType typeof Seq
40+
Immutable.Set; // $ExpectType typeof Set
41+
Immutable.Stack; // $ExpectType typeof Stack
42+
Immutable.Collection; // $ExpectType typeof Collection
43+
Immutable.Collection.Set; // $ExpectType <T>(collection: Iterable<T>) => Set<T>
44+
Immutable.Collection.Keyed; // $ ExpectType { <K, V>(collection: Iterable<[K, V]>): Keyed<K, V>; <V>(obj: { [key: string]: V; }): Keyed<string, V> }
45+
Immutable.Collection.Indexed; // $ExpectType <T>(collection: Iterable<T>) => Indexed<T>

type-definitions/ts-tests/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// TypeScript Version: 2.2
2+
/* tslint:disable:no-useless-files */

0 commit comments

Comments
 (0)