Skip to content

Commit 6bc521c

Browse files
emmatownNoviny
authored andcommitted
Support memo, forwardRef and function expressions (#44)
* Support memo and forwardRef * Rename some tests and refactor some stuff * Remove unnecessary checks * Simplify logic a bit * Change a thing to make a smaller diff * Add changeset
1 parent 8f04dad commit 6bc521c

File tree

5 files changed

+469
-27
lines changed

5 files changed

+469
-27
lines changed

.changeset/d9bc5793/changes.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"releases": [{ "name": "extract-react-types", "type": "minor" }],
3+
"dependents": [
4+
{
5+
"name": "extract-react-types-loader",
6+
"type": "patch",
7+
"dependencies": ["extract-react-types"]
8+
},
9+
{ "name": "kind2string", "type": "patch", "dependencies": ["extract-react-types"] },
10+
{
11+
"name": "pretty-proptypes",
12+
"type": "patch",
13+
"dependencies": ["kind2string", "extract-react-types"]
14+
}
15+
]
16+
}

.changeset/d9bc5793/changes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Support memo, forwardRef and function expressions

packages/extract-react-types/__snapshots__/test.js.snap

Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,58 @@ Object {
655655
}
656656
`;
657657

658+
exports[`flow React.forwardRef 1`] = `
659+
Object {
660+
"component": Object {
661+
"kind": "generic",
662+
"value": Object {
663+
"kind": "object",
664+
"members": Array [
665+
Object {
666+
"key": Object {
667+
"kind": "id",
668+
"name": "ok",
669+
},
670+
"kind": "property",
671+
"optional": false,
672+
"value": Object {
673+
"kind": "number",
674+
},
675+
},
676+
],
677+
"referenceIdName": "Props",
678+
},
679+
},
680+
"kind": "program",
681+
}
682+
`;
683+
684+
exports[`flow React.memo 1`] = `
685+
Object {
686+
"component": Object {
687+
"kind": "generic",
688+
"value": Object {
689+
"kind": "object",
690+
"members": Array [
691+
Object {
692+
"key": Object {
693+
"kind": "id",
694+
"name": "ok",
695+
},
696+
"kind": "property",
697+
"optional": false,
698+
"value": Object {
699+
"kind": "number",
700+
},
701+
},
702+
],
703+
"referenceIdName": "Props",
704+
},
705+
},
706+
"kind": "program",
707+
}
708+
`;
709+
658710
exports[`flow any 1`] = `
659711
Object {
660712
"component": Object {
@@ -942,6 +994,32 @@ Object {
942994
}
943995
`;
944996

997+
exports[`flow forwardRef 1`] = `
998+
Object {
999+
"component": Object {
1000+
"kind": "generic",
1001+
"value": Object {
1002+
"kind": "object",
1003+
"members": Array [
1004+
Object {
1005+
"key": Object {
1006+
"kind": "id",
1007+
"name": "ok",
1008+
},
1009+
"kind": "property",
1010+
"optional": false,
1011+
"value": Object {
1012+
"kind": "number",
1013+
},
1014+
},
1015+
],
1016+
"referenceIdName": "Props",
1017+
},
1018+
},
1019+
"kind": "program",
1020+
}
1021+
`;
1022+
9451023
exports[`flow forwardRef default export 1`] = `
9461024
Object {
9471025
"component": Object {
@@ -968,6 +1046,39 @@ Object {
9681046
}
9691047
`;
9701048

1049+
exports[`flow forwardRef default export 2`] = `
1050+
Object {
1051+
"component": Object {
1052+
"kind": "generic",
1053+
"value": Object {
1054+
"kind": "object",
1055+
"members": Array [
1056+
Object {
1057+
"key": Object {
1058+
"kind": "id",
1059+
"name": "ok",
1060+
},
1061+
"kind": "property",
1062+
"optional": false,
1063+
"value": Object {
1064+
"kind": "number",
1065+
},
1066+
},
1067+
],
1068+
"referenceIdName": "Props",
1069+
},
1070+
},
1071+
"kind": "program",
1072+
}
1073+
`;
1074+
1075+
exports[`flow func that is not valid 1`] = `
1076+
Object {
1077+
"component": undefined,
1078+
"kind": "program",
1079+
}
1080+
`;
1081+
9711082
exports[`flow function 1`] = `
9721083
Object {
9731084
"component": Object {
@@ -1118,6 +1229,32 @@ Object {
11181229
}
11191230
`;
11201231

1232+
exports[`flow function expression 1`] = `
1233+
Object {
1234+
"component": Object {
1235+
"kind": "generic",
1236+
"value": Object {
1237+
"kind": "object",
1238+
"members": Array [
1239+
Object {
1240+
"key": Object {
1241+
"kind": "id",
1242+
"name": "ok",
1243+
},
1244+
"kind": "property",
1245+
"optional": false,
1246+
"value": Object {
1247+
"kind": "number",
1248+
},
1249+
},
1250+
],
1251+
"referenceIdName": "Props",
1252+
},
1253+
},
1254+
"kind": "program",
1255+
}
1256+
`;
1257+
11211258
exports[`flow function named params 1`] = `
11221259
Object {
11231260
"component": Object {
@@ -1569,6 +1706,110 @@ Object {
15691706
}
15701707
`;
15711708

1709+
exports[`flow memo 1`] = `
1710+
Object {
1711+
"component": Object {
1712+
"kind": "generic",
1713+
"value": Object {
1714+
"kind": "object",
1715+
"members": Array [
1716+
Object {
1717+
"key": Object {
1718+
"kind": "id",
1719+
"name": "ok",
1720+
},
1721+
"kind": "property",
1722+
"optional": false,
1723+
"value": Object {
1724+
"kind": "number",
1725+
},
1726+
},
1727+
],
1728+
"referenceIdName": "Props",
1729+
},
1730+
},
1731+
"kind": "program",
1732+
}
1733+
`;
1734+
1735+
exports[`flow memo default export 1`] = `
1736+
Object {
1737+
"component": Object {
1738+
"kind": "generic",
1739+
"value": Object {
1740+
"kind": "object",
1741+
"members": Array [
1742+
Object {
1743+
"key": Object {
1744+
"kind": "id",
1745+
"name": "ok",
1746+
},
1747+
"kind": "property",
1748+
"optional": false,
1749+
"value": Object {
1750+
"kind": "number",
1751+
},
1752+
},
1753+
],
1754+
"referenceIdName": "Props",
1755+
},
1756+
},
1757+
"kind": "program",
1758+
}
1759+
`;
1760+
1761+
exports[`flow memo wrapping forwardRef 1`] = `
1762+
Object {
1763+
"component": Object {
1764+
"kind": "generic",
1765+
"value": Object {
1766+
"kind": "object",
1767+
"members": Array [
1768+
Object {
1769+
"key": Object {
1770+
"kind": "id",
1771+
"name": "ok",
1772+
},
1773+
"kind": "property",
1774+
"optional": false,
1775+
"value": Object {
1776+
"kind": "number",
1777+
},
1778+
},
1779+
],
1780+
"referenceIdName": "Props",
1781+
},
1782+
},
1783+
"kind": "program",
1784+
}
1785+
`;
1786+
1787+
exports[`flow memo wrapping forwardRef default export 1`] = `
1788+
Object {
1789+
"component": Object {
1790+
"kind": "generic",
1791+
"value": Object {
1792+
"kind": "object",
1793+
"members": Array [
1794+
Object {
1795+
"key": Object {
1796+
"kind": "id",
1797+
"name": "ok",
1798+
},
1799+
"kind": "property",
1800+
"optional": false,
1801+
"value": Object {
1802+
"kind": "number",
1803+
},
1804+
},
1805+
],
1806+
"referenceIdName": "Props",
1807+
},
1808+
},
1809+
"kind": "program",
1810+
}
1811+
`;
1812+
15721813
exports[`flow mixed 1`] = `
15731814
Object {
15741815
"component": Object {

0 commit comments

Comments
 (0)