23 lines
582 B
JavaScript
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;
|
|
}
|