prettier/tests/flow/switch/trailing_cases.js

81 lines
1.1 KiB
JavaScript

/**
* trailing cases are allowed - spot checks that we handle them as usual
* @flow
*/
function f1(i) {
var x;
switch (i) {
case 0:
x = 0;
break;
case 1:
x = 1;
break;
default:
x = -1;
break;
case 2:
x = "2";
break;
}
var y:number = x; // error, number | string ~/> number
}
function f2(i) {
var x;
switch (i) {
case 0:
case 1:
default:
x = 1;
break;
case 2:
// does not fall through default
}
var y:number = x; // error, number | uninitialized ~/> number
}
function f3(i) {
var x;
switch (i) {
case 0:
case 1:
default:
// falls through to subsequent cases
case 2:
x = 1;
}
var y:number = x; // no error
}
function foo(x): number {
switch (x) {
case 0:
default: throw new Error('hi');
case 1: return 1;
}
}
function bar(x) {
switch (x) {
default: return;
case 0: break;
}
1;
}
function baz(x): number {
switch (x) {
case 0: break;
default: throw new Error('hi');
case 1: return 1;
}
return 2;
}