Order sensitivity bug in refinements for intersection types
- Lingua principale
- Rust
- Stelle
- 22.3k
- Fork
- 1.9k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
This code throws an error (see https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVAXAngBwKZgDyARgFZgC8YA3qmGAIYBcYAdgK4C2xeATmKgC+YAGQ06YYiwDOGXgEtWAcwGCA3OijtWAYwzy4rMBjyyAFDDxQMLEqQA0YBUoAWNomQCU4+rzwZ2XiM7PD0AOgBrPCxpCysMTzCoRQATMwjKAD4fejBpBHkMHRcwdO9aXNydBmkCAHJiOpY-AKCwS2sAbQiAXUoKKmc3bp6NSvpq2rA6hianf0CjDowR-sH5VxXesdzBCUFPDT3USwx2+MoaRhYARkcpaYAPOrB1E-8nDbdL6muwACZ7iw6lgXm9MKYMHFrI4hgkNEA):
```js
/* @flow */
type Obj = {
a: number
} & {
b: string
};
function test(left: Obj, right: Obj) {
return Object.keys(left).find(k => {
switch (k) {
case 'b': return left[k] === right[k];
case 'a': return left[k] === right[k];
}
});
}
let left = { a: 1, b: 'x' };
let right = { a: 2, b: 'y' };
test(left, right);
```
```
12: case 'b': return left[k] === right[k];
^ property `b`. Property not found in
3: type Obj = { ^ object type
12: case 'b': return left[k] === right[k];
^ property `b`. Property not found in
3: type Obj = { ^ object type
```
It works fine though if we switch `case 'a'` and `case 'b'`:
```
...
case 'a': return left[k] === right[k];
case 'b': return left[k] === right[k];
...
```
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.