Skip to content

Commit 7e8ff3f

Browse files
authored
replaceType: only warn for known unhandled types (#182)
1 parent c7c19eb commit 7e8ff3f

File tree

1 file changed

+39
-28
lines changed

1 file changed

+39
-28
lines changed

src-runtime/replaceType.js

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,48 @@ function replaceType(type, search, replace, warn) {
1717
// console.log("replaceType", {type, search, replace, warn});
1818
return replace;
1919
}
20-
if (type.type === 'object') {
21-
const {properties} = type;
22-
// todo I need unit tests making sure I don't need a full copy
23-
// const newProperties = {};
24-
for (const prop in properties) {
25-
const val = properties[prop];
26-
properties[prop] = replaceType(val, search, replace, warn);
20+
switch (type.type) {
21+
case 'object': {
22+
const {properties} = type;
23+
// todo I need unit tests making sure I don't need a full copy
24+
// const newProperties = {};
25+
for (const prop in properties) {
26+
const val = properties[prop];
27+
properties[prop] = replaceType(val, search, replace, warn);
28+
}
29+
return type;
2730
}
28-
return type;
29-
} else if (type.type === 'tuple') {
30-
const {elements} = type;
31-
const {length } = elements;
32-
for (let i = 0; i < length; i++) {
33-
const element = elements[i];
34-
elements[i] = replaceType(element, search, replace, warn);
31+
case 'tuple': {
32+
const {elements} = type;
33+
const {length } = elements;
34+
for (let i = 0; i < length; i++) {
35+
const element = elements[i];
36+
elements[i] = replaceType(element, search, replace, warn);
37+
}
38+
return type;
3539
}
36-
return type;
37-
} else if (type.type === 'array') {
38-
type.elementType = replaceType(type.elementType, search, replace, warn);
39-
return type;
40-
} else if (type.type === 'union') {
41-
const {members} = type;
42-
const {length } = members;
43-
for (let i = 0; i < length; i++) {
44-
const member = members[i];
45-
members[i] = replaceType(member, search, replace, warn);
40+
case 'array':
41+
type.elementType = replaceType(type.elementType, search, replace, warn);
42+
return type;
43+
case 'union': {
44+
const {members} = type;
45+
const {length } = members;
46+
for (let i = 0; i < length; i++) {
47+
const member = members[i];
48+
members[i] = replaceType(member, search, replace, warn);
49+
}
50+
return type;
4651
}
47-
return type;
48-
}
49-
if (type.type) {
50-
warn('replaceType: unhandled', {type, search, replace});
52+
case 'indexedAccess':
53+
case 'record':
54+
case 'map':
55+
case 'mapping':
56+
case 'intersection':
57+
case 'keyof':
58+
case 'set':
59+
case 'new':
60+
warn('replaceType: @todo unhandled', {type, search, replace});
61+
break;
5162
}
5263
return type;
5364
}

0 commit comments

Comments
 (0)