UNPKG

2.61 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = makeComparison;
7exports.resolveType = resolveType;
8exports.makeSimpleComparison = makeSimpleComparison;
9exports.makeObjectComparison = makeObjectComparison;
10
11var _types = require('./types');
12
13function makeComparison(expected, inferred) {
14 var resolved = expected.unwrap();
15 if (resolved instanceof _types.ObjectType && inferred instanceof _types.ObjectType) {
16 return makeObjectComparison(resolved, inferred);
17 } else {
18 return makeSimpleComparison(resolved, inferred);
19 }
20}
21
22function resolveType(input) {
23 if (input instanceof _types.FunctionTypeParam || input instanceof _types.FunctionTypeRestParam) {
24 return resolveType(input.type);
25 } else if (input instanceof _types.FunctionTypeReturn) {
26 return input.type;
27 } else if (input instanceof _types.TypeReference) {
28 return resolveType(input.type);
29 } else if (input instanceof _types.PartialType) {
30 return resolveType(input.type);
31 } else if (input instanceof _types.TypeParameter) {
32 return resolveType(input.recorded || input.bound || input);
33 } else if (input instanceof _types.TypeAlias) {
34 return resolveType(input.type);
35 } else if (input instanceof _types.ObjectTypeCallProperty) {
36 return resolveType(input.value);
37 } else if (input instanceof _types.ObjectTypeIndexer) {
38 return resolveType(input.value);
39 } else if (input instanceof _types.ObjectTypeProperty) {
40 return resolveType(input.value);
41 } else if (input instanceof _types.NullableType) {
42 return resolveType(input.type);
43 } else {
44 return input;
45 }
46}
47
48function makeSimpleComparison(expected, inferred) {
49 return 'Expected: ' + expected.toString() + '\n\nActual: ' + inferred.toString() + '\n\n';
50}
51
52function makeObjectComparison(expected, inferred) {
53 var _iteratorNormalCompletion = true;
54 var _didIteratorError = false;
55 var _iteratorError = undefined;
56
57 try {
58 for (var _iterator = expected.properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
59 var expectedProperty = _step.value;
60
61 var inferredProperty = inferred.getProperty(expectedProperty.key);
62 if (!inferredProperty) {}
63 }
64 } catch (err) {
65 _didIteratorError = true;
66 _iteratorError = err;
67 } finally {
68 try {
69 if (!_iteratorNormalCompletion && _iterator.return) {
70 _iterator.return();
71 }
72 } finally {
73 if (_didIteratorError) {
74 throw _iteratorError;
75 }
76 }
77 }
78
79 return makeSimpleComparison(expected, inferred);
80}
\No newline at end of file