- This brings in the flow test suite that contains a ton of JavaScript parsing edge cases - This creates snapshot tests using the pretty printer for all of them - If uncomment `RUN_AST_TESTS` line in `tests/run_specs.js`, it checks ast(pretty_print(x)) == ast(x). Right now, "178 failed, 197 passed, 375 of 377 total". So half of the tests are not passing, most of them are crashes and many of the rest are subtle issues.
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;
|
|
}
|