prettier/tests/annot/leak.js

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;
}