Files
test-repo/tests/flow/annot/leak.js
T
Christopher Chedeau 3375cfe605 Move tests around (#454)
* new_tests

* move_all_clobbered_tests

* remove all the tests that no longer exist

* re-run flow tests

* Move all the flow tests to tests/flow and prettier to tests/

* Move prettier tests to their own folders

* Add jsfmt files

* run prettier snapshot tests
2017-01-24 14:35:37 -08:00

23 lines
582 B
JavaScript

/** @flow */
/* This test documents an example we ran into of a type annotation leaking.
*
* When foo() calls bar(), we should make sure the type of x matches the type
* annotation for y and stop. We should type the body of bar() with the type
* annotation of y.
*
* However, the leaky type annotation meant that we were flowing x's type to y
* and type checking the body of bar() using the stricter dictionary type,
* leading to an error.
*/
type MyObj = Object;
function foo(x: {[key: string]: mixed}) {
bar(x);
}
function bar(y: MyObj): string {
return y.foo;
}