// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`single.js 1`] = `
====================================options=====================================
parsers: ["flow", "babel"]
printWidth: 80
                                                                                | printWidth
=====================================input======================================
const selectorByPath:
  Path
 => SomethingSelector<
  SomethingUEditorContextType,
  SomethingUEditorContextType,
  SomethingBulkValue<string>
> = memoizeWithArgs(/* ... */)

=====================================output=====================================
const selectorByPath: Path => SomethingSelector<
  SomethingUEditorContextType,
  SomethingUEditorContextType,
  SomethingBulkValue<string>
> = memoizeWithArgs(/* ... */);

================================================================================
`;

exports[`single.js 2`] = `
====================================options=====================================
parsers: ["flow", "babel"]
printWidth: 80
trailingComma: "all"
                                                                                | printWidth
=====================================input======================================
const selectorByPath:
  Path
 => SomethingSelector<
  SomethingUEditorContextType,
  SomethingUEditorContextType,
  SomethingBulkValue<string>
> = memoizeWithArgs(/* ... */)

=====================================output=====================================
const selectorByPath: Path => SomethingSelector<
  SomethingUEditorContextType,
  SomethingUEditorContextType,
  SomethingBulkValue<string>,
> = memoizeWithArgs(/* ... */);

================================================================================
`;

exports[`single.js 3`] = `
====================================options=====================================
arrowParens: "always"
parsers: ["flow", "babel"]
printWidth: 80
                                                                                | printWidth
=====================================input======================================
const selectorByPath:
  Path
 => SomethingSelector<
  SomethingUEditorContextType,
  SomethingUEditorContextType,
  SomethingBulkValue<string>
> = memoizeWithArgs(/* ... */)

=====================================output=====================================
const selectorByPath: (Path) => SomethingSelector<
  SomethingUEditorContextType,
  SomethingUEditorContextType,
  SomethingBulkValue<string>
> = memoizeWithArgs(/* ... */);

================================================================================
`;

exports[`test.js 1`] = `
====================================options=====================================
parsers: ["flow", "babel"]
printWidth: 80
                                                                                | printWidth
=====================================input======================================
type Banana = {
  eat: string => boolean,
};

type Hex = {n: 0x01};

type T = { method: (a) => void };

type T = { method(a): void };

declare class X { method(a): void }

declare function f(a): void;

var f: (a) => void;

interface F { m(string): number }

interface F { m: (string) => number }

function f(o: { f: (string) => void }) {}

function f(o: { f(string): void }) {}

type f = (...arg) => void;

type f = (/* comment */ arg) => void;

type f = (arg /* comment */) => void;

type f = (?arg) => void;

class X {
  constructor(
    ideConnectionFactory: child_process$ChildProcess => FlowIDEConnection =
        defaultIDEConnectionFactory,
  ) {
  }
}

interface F {
  ideConnectionFactoryLongLongLong: (child_process$ChildProcess) => FlowIDEConnection
}

type ExtractType = <A>(B<C>) => D

type T = ?(() => A);

type T = ?(() => A) | B;

type T = ?() => A | B;

type T = (?() => A) | B;

// https://github.com/babel/babel/issues/7924
//type T = ??() => A;

type T = ?(?(() => A));

type T = ?(?() => A) | B;

=====================================output=====================================
type Banana = {
  eat: string => boolean
};

type Hex = { n: 0x01 };

type T = { method: a => void };

type T = { method(a): void };

declare class X {
  method(a): void;
}

declare function f(a): void;

var f: a => void;

interface F {
  m(string): number;
}

interface F {
  m: string => number;
}

function f(o: { f: string => void }) {}

function f(o: { f(string): void }) {}

type f = (...arg) => void;

type f = /* comment */ arg => void;

type f = arg /* comment */ => void;

type f = (?arg) => void;

class X {
  constructor(
    ideConnectionFactory: child_process$ChildProcess => FlowIDEConnection = defaultIDEConnectionFactory
  ) {}
}

interface F {
  ideConnectionFactoryLongLongLong: child_process$ChildProcess => FlowIDEConnection;
}

type ExtractType = <A>(B<C>) => D;

type T = ?() => A;

type T = ?(() => A) | B;

type T = ?() => A | B;

type T = ?(() => A) | B;

// https://github.com/babel/babel/issues/7924
//type T = ??() => A;

type T = ??(() => A);

type T = ??(() => A) | B;

================================================================================
`;

exports[`test.js 2`] = `
====================================options=====================================
parsers: ["flow", "babel"]
printWidth: 80
trailingComma: "all"
                                                                                | printWidth
=====================================input======================================
type Banana = {
  eat: string => boolean,
};

type Hex = {n: 0x01};

type T = { method: (a) => void };

type T = { method(a): void };

declare class X { method(a): void }

declare function f(a): void;

var f: (a) => void;

interface F { m(string): number }

interface F { m: (string) => number }

function f(o: { f: (string) => void }) {}

function f(o: { f(string): void }) {}

type f = (...arg) => void;

type f = (/* comment */ arg) => void;

type f = (arg /* comment */) => void;

type f = (?arg) => void;

class X {
  constructor(
    ideConnectionFactory: child_process$ChildProcess => FlowIDEConnection =
        defaultIDEConnectionFactory,
  ) {
  }
}

interface F {
  ideConnectionFactoryLongLongLong: (child_process$ChildProcess) => FlowIDEConnection
}

type ExtractType = <A>(B<C>) => D

type T = ?(() => A);

type T = ?(() => A) | B;

type T = ?() => A | B;

type T = (?() => A) | B;

// https://github.com/babel/babel/issues/7924
//type T = ??() => A;

type T = ?(?(() => A));

type T = ?(?() => A) | B;

=====================================output=====================================
type Banana = {
  eat: string => boolean,
};

type Hex = { n: 0x01 };

type T = { method: a => void };

type T = { method(a): void };

declare class X {
  method(a): void;
}

declare function f(a): void;

var f: a => void;

interface F {
  m(string): number;
}

interface F {
  m: string => number;
}

function f(o: { f: string => void }) {}

function f(o: { f(string): void }) {}

type f = (...arg) => void;

type f = /* comment */ arg => void;

type f = arg /* comment */ => void;

type f = (?arg) => void;

class X {
  constructor(
    ideConnectionFactory: child_process$ChildProcess => FlowIDEConnection = defaultIDEConnectionFactory,
  ) {}
}

interface F {
  ideConnectionFactoryLongLongLong: child_process$ChildProcess => FlowIDEConnection;
}

type ExtractType = <A>(B<C>) => D;

type T = ?() => A;

type T = ?(() => A) | B;

type T = ?() => A | B;

type T = ?(() => A) | B;

// https://github.com/babel/babel/issues/7924
//type T = ??() => A;

type T = ??(() => A);

type T = ??(() => A) | B;

================================================================================
`;

exports[`test.js 3`] = `
====================================options=====================================
arrowParens: "always"
parsers: ["flow", "babel"]
printWidth: 80
                                                                                | printWidth
=====================================input======================================
type Banana = {
  eat: string => boolean,
};

type Hex = {n: 0x01};

type T = { method: (a) => void };

type T = { method(a): void };

declare class X { method(a): void }

declare function f(a): void;

var f: (a) => void;

interface F { m(string): number }

interface F { m: (string) => number }

function f(o: { f: (string) => void }) {}

function f(o: { f(string): void }) {}

type f = (...arg) => void;

type f = (/* comment */ arg) => void;

type f = (arg /* comment */) => void;

type f = (?arg) => void;

class X {
  constructor(
    ideConnectionFactory: child_process$ChildProcess => FlowIDEConnection =
        defaultIDEConnectionFactory,
  ) {
  }
}

interface F {
  ideConnectionFactoryLongLongLong: (child_process$ChildProcess) => FlowIDEConnection
}

type ExtractType = <A>(B<C>) => D

type T = ?(() => A);

type T = ?(() => A) | B;

type T = ?() => A | B;

type T = (?() => A) | B;

// https://github.com/babel/babel/issues/7924
//type T = ??() => A;

type T = ?(?(() => A));

type T = ?(?() => A) | B;

=====================================output=====================================
type Banana = {
  eat: (string) => boolean
};

type Hex = { n: 0x01 };

type T = { method: (a) => void };

type T = { method(a): void };

declare class X {
  method(a): void;
}

declare function f(a): void;

var f: (a) => void;

interface F {
  m(string): number;
}

interface F {
  m: (string) => number;
}

function f(o: { f: (string) => void }) {}

function f(o: { f(string): void }) {}

type f = (...arg) => void;

type f = (/* comment */ arg) => void;

type f = (arg /* comment */) => void;

type f = (?arg) => void;

class X {
  constructor(
    ideConnectionFactory: (child_process$ChildProcess) => FlowIDEConnection = defaultIDEConnectionFactory
  ) {}
}

interface F {
  ideConnectionFactoryLongLongLong: (child_process$ChildProcess) => FlowIDEConnection;
}

type ExtractType = <A>(B<C>) => D;

type T = ?() => A;

type T = ?(() => A) | B;

type T = ?() => A | B;

type T = ?(() => A) | B;

// https://github.com/babel/babel/issues/7924
//type T = ??() => A;

type T = ??(() => A);

type T = ??(() => A) | B;

================================================================================
`;
