- 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.
37 lines
786 B
JavaScript
37 lines
786 B
JavaScript
function block_scope(x: string | number) {
|
|
{
|
|
let x;
|
|
x = ""; // doesn't refine outer x
|
|
}
|
|
(x : string); // error: number ~> string
|
|
}
|
|
|
|
function switch_scope(x: string | number) {
|
|
switch (x) {
|
|
default:
|
|
let x;
|
|
x = ""; // doesn't refine outer x
|
|
}
|
|
(x : string); // error: number ~> string
|
|
}
|
|
|
|
function try_scope(x: string | number) {
|
|
try {
|
|
let x;
|
|
x = ""; // doesn't refine outer x
|
|
} catch (e) {
|
|
x = ""; // refinement would only escape if both sides refined
|
|
}
|
|
(x : string); // error: number ~> string
|
|
}
|
|
|
|
function try_scope_catch(x: string | number) {
|
|
try {
|
|
x = ""; // refinement would only escape if both sides refined
|
|
} catch (e) {
|
|
let x;
|
|
x = ""; // doesn't refine outer x
|
|
}
|
|
(x : string); // error: number ~> string
|
|
}
|