facebook / facebook/flow

Cannot refine type that's part of an intersection type

Aperta
#4,820 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Rust
Stelle
22.3k
Fork
1.9k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Reproduction: https://flow.org/try/#0C4TwDgpgBAYg9nAglAvFA3gKClA1gSwDsATALigHIBDCgGmyivMIFcBbAIwgCd6BfTJlCRYCAEKoMDAiXIUOdBh2bsuvTAKHho8OJN3IAPqLhiA3IOE6EiFgHM2EQsCrB8cQgGdJWHByrcKpw89H5UAF5BahoWmAD0cVAAKgAW+N7EcBDehHDAUADucNy4WiK2Dk7AEMS6kgAUBlDGumIAlFAAZCYVjs6u7l4WAGYshADGbh5QmYipRHb1wwjkvVU1um1RPFI4+MNQSwgAdDLEqCho1BQdvjhQ3BDALNyEUMtwx1QWOAI4DI9nq8oABGAAMFk0CWSaQyWU8mFGEymb1muWAKR480Iiw+5E2224uyg+0OH1ORHOlyuNFuDBwgJeb3J3wYfygAKeTNBEI0QA

Basically, if we have some type `T = (A | B) & C`, when we perform a check on a value of type `T` that would be able to refine `A | B` to `A`, we should be able to refine `(A | B) & C` to `A & C`.

Possibly related, changing `type AugmentedFoo = (FooA | FooB) & FooAugmentation` to `type Foo = FooA | FooB; type AugmentedFoo = Foo & FooAugmentation` causes a second error: https://flow.org/try/#0C4TwDgpgBAYg9nAglAvFA3gKClA1gSwDsATALigHIBDCgGmyivMIFcBbAIwgCd6BfTJlCRYCAEKoMDAiXIUOdBh2bsuvTAKHho8OJN3IAPqLhiA3IOE6EiFgHM2EQsCrB8cQgGdJWHByrcKpw89H5UAF5BahoWmAD0cVAAKgAW+N7EcBDehHDAUADucNy4WiK2Dk7AEMS6+ghQAGQmFY7Oru5eFgBmLIQAxm4eUJmIqUR2ABTdCOStVTW6AJRRPFI4+N1Q0wgAdDLEqCho1BRL6zhQ3BDALNyEUDNwu1QWOAI4DNe391AAjAAGCyaBLJNIZLKeTC9AZDB6jXLAFI8caEKZPcjLVbcC6bbZPfZEQ7HE40c6+S7fO4PAmvBgfKBfG7U-5AjRAA

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.