Refinement of Callable Objects doesn't work correctly
- Dominant language
- Rust
- Stars
- 22.3k
- Forks
- 1.9k
- PR merge metrics
- No merged PRs in 30d
Description
[Flow Try Example](https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoAlgWwA5wE4AuyYAhgM5gBKApiQMZFR5yZgDketDbA3KqsGBgAwiRgwSAIxjUwcSQCtqDMJLjoZebBIKymLMABM4dMgC4BQgBYEC2c4NiIAdPgDmwagDtgx08AIAT2xqMmAoAFcvBnQ4LzCAYjoxCWlqAFp5JQYydNQgkJEUqRkAeUUwAF4wAG9UMDAACi8IzElqPAAaMBa2joBKMx7W9q761RI8IbICPHQvN1QAXz5USOiCWK9SQ0NGgA9uwP7a8c4CCLxt-bAAajBAnjBl-hJd50lJqrAAIitqcRwMAIfAwQw-VaNN6GIaicQlajlBT9VaCMAAOUQwNkuhmYE4UHm1Ew3gI+WCsgAgng3N8agAfKBwODTWbzNz0pZgelFeFpJGrdYxOJgAD6UJpQ2pbkGYBmcwWpwaaIAKlZ0BQCUSSV4iGQrHAImCwACsPMSLpeakyopupIIkRjKEvGwyQ10FAmgVqHBPZNaZVA+wssoCGwTnUGg1zpdtv7nEy4HwGktxmiAJJ66jEigwdAAaxx6s11EJXmJpOB+HzFAIBoibis4w9XopvtINLAAEIg2whZs4uGlVGY1cO24E8zk2BU9HqBcx-HPng+EsgA)
In theory it seems like `typeof foo === 'object'` should eliminate [Callable Objects](https://flow.org/en/docs/types/functions/#callable-objects-) as a type candidate for `foo`, since callable objects are ultimately a function – unless there's something I'm missing.
This seems to cause an issue with React.StatelessFunctionalComponent since that's [defined as a callable object](https://github.com/facebook/flow/blob/master/lib/react.js#L132), where it's not possible to disambiguate between a stateless functional component and an arbitrary object: [Flow Try Example 1](https://flow.org/try/#0JYWwDg9gTgLgBAKjgQwM5wEoFNkGN4BmUEIcA5FDvmQNwBQdA9I3AMozIxYA2WqqAMQCuAO3zAII5NwDCJSCKwj4MAJ5gscIiS3cIAdzioIQqLiwAuJi0YIE1uIjgAVABaa1GuBAIojHLl5+LVFxSWk4XHlJJRgAOjgASRE4EAhUeFw0PjgYd1RNKPAY5VQHJ2RKP1RgEQBzXhCxGAkRBIAJAywANywoABpc91VU5BHXZF6jEk0MzmBcODBiDVhgHLzOOH0scqQslM9C91wAazi9xgcAEyxcbkqPdU1sPBgAEnZOHj5BUJbwrJooplAAeAAKK1QAD44ABeOAAb3KcAAFMsIGBUBY4JDMahBlFlFgAB4wHHIESqACUONe+HeADkILd+ijrsBUGAHqpGcgQFgAPw4wUZKC1Ops5iOJYrZzPVDCuCfIQAIyOoMRAG0APo494AaSwqlQEKh0IAuhSqQBfaFSliOIlcMnyjSK62qBw2+jSgB6LlcnLgQgK6AARFluA9VY0IKqAFZ3GDhoyqZTIEm5CBwSjLPixPwEf6tbbAPL+eaLDGrFp8C50I5wADyvSg4tuZvxsIRdEcAB8kf2igpYnSqPEvoFfsJmq1pHJiiCYF2sbD+za4H24IP6ZOAj9+LOwlIgUvYquYfQHABBKB1SKUuBYcvuKBwVWaJ-xpP4MsV5A4EjYFYlTGslggWoWnqbM-BHEoYEGaA4JA5QLmLOdJDgOosBgRdRzBPE11RbcIDbDtLBbcjgE7IiYToWlMAnOIp0PP5MNPfCEMvWFkUcYBfFRI4fG8ajbnhOEETIH9kzIakkW3RxpQAEQgHIRAgeBKAIWov30MZszAABaXhem4Ji3hYg8gnYk8F1QmA6AASEoGBTBSMi+gouJ4OXehHBtbdXPc0SvJorB6BtIA) | [Flow Try Example 2](https://flow.org/try/#0JYWwDg9gTgLgBAKjgQwM5wEoFNkGN4BmUEIcA5FDvmQNwBQdWAHpLHDAJ5hZwDyAblihRgAEyy8ARgCss+ACoAeeQD44AXjgBvAD504cXCUgA7LCZgB+AFxxL2PDAB0AYWMQzF+VyzKVdHQBfekYWaHhObj5BYTEsJVUNaKERcSlZBT84HUwqZzdwD3MYb24-EOZWQgBXE3xgDzgAcywYAtNivwAKfTgIGNSsWwEUuIT-AEpbB3xXd08SnyytXoB6VbgAEQgsVBMyeEoCYDMUAHdkDlzHJwBlGGQYLAAbXdQAMVr6j2Rn9qKLL1gAQ4F1IlgICD+qNxBp1JoyBAZHIYGQJtpegZKDBqlATH0BnEnEZCgt6AZAmsNthjmYQMU4KgYMBns84OIIHsDnAztAANZwAAWQiwQJBYJ8kIJMJ4AEJ4eQCF9mR40RiDFjWrj8dDYuJifNiuS4JTNTi8dK9Vh6JSgA)
Contributor guide
Assessment
This issue has not been assessed yet.