prettier/tests/flow/switch/__snapshots__/jsfmt.spec.js.snap

401 lines
5.9 KiB
Plaintext

// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`more_switch.js 1`] = `
/* @flow */
function foo(x): number {
switch (x) {
case 0:
case 1: return 1;
default: throw new Error('hi');
}
}
function bar(x) {
switch (x) {
case 0: break;
default: return;
}
1;
}
function baz(x): number {
switch (x) {
case 0: break;
case 1: return 1;
default: throw new Error('hi');
}
return 2;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* @flow */
function foo(x): number {
switch (x) {
case 0:
case 1:
return 1;
default:
throw new Error("hi");
}
}
function bar(x) {
switch (x) {
case 0:
break;
default:
return;
}
1;
}
function baz(x): number {
switch (x) {
case 0:
break;
case 1:
return 1;
default:
throw new Error("hi");
}
return 2;
}
`;
exports[`switch.js 1`] = `
/**
* @flow
*/
function foo(
): number {
switch ('foo') {
case 'foo':
return 1;
}
return 2;
}
function bar() {
switch ('bar') {
case 'bar':
break;
default:
break;
}
}
function qux(b) {
var x = b? 0: "";
switch('qux') {
case '':
x = 0;
case 'qux':
x = x*x;
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* @flow
*/
function foo(): number {
switch ("foo") {
case "foo":
return 1;
}
return 2;
}
function bar() {
switch ("bar") {
case "bar":
break;
default:
break;
}
}
function qux(b) {
var x = b ? 0 : "";
switch ("qux") {
case "":
x = 0;
case "qux":
x = x * x;
}
}
`;
exports[`switch_default_fallthrough.js 1`] = `
/**
* @flow
*/
function foo(x : mixed): string {
var a = "";
var b = "";
switch (x) {
case "foo":
a = 0;
default:
b = 0;
}
// a is now string | number
(a : string); // error, string | number ~/> string
(a : number); // error, string | number ~/> number
// b is now number
(b : number); // ok
return b; // error, number ~/> string
}
function baz(x: mixed): number {
var a = "";
var b = "";
switch (x) {
case "baz":
a = 0;
break;
case "bar":
a = "";
default:
b = 0;
}
// a is now string | number
(a : string); // error, string | number ~/> string
(a : number); // error, string | number ~/> number
// b is now string | number
(b : string); // error, string | number ~/> string
(b : number); // error, string | number ~/> number
return a+b; // error, string ~/> number
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* @flow
*/
function foo(x: mixed): string {
var a = "";
var b = "";
switch (x) {
case "foo":
a = 0;
default:
b = 0;
}
// a is now string | number
(a: string); // error, string | number ~/> string
(a: number); // error, string | number ~/> number
// b is now number
(b: number); // ok
return b; // error, number ~/> string
}
function baz(x: mixed): number {
var a = "";
var b = "";
switch (x) {
case "baz":
a = 0;
break;
case "bar":
a = "";
default:
b = 0;
}
// a is now string | number
(a: string); // error, string | number ~/> string
(a: number); // error, string | number ~/> number
// b is now string | number
(b: string); // error, string | number ~/> string
(b: number); // error, string | number ~/> number
return a + b; // error, string ~/> number
}
`;
exports[`trailing_cases.js 1`] = `
/**
* 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;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* 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;
}
`;