exports[`test enumerror.js 1`] = ` "/** @flow */ function isActive(ad: {state: $Keys<{ PAUSED: string; ACTIVE: string; DELETED: string; }>}): boolean { return ad.state === \'ACTIVE\'; }; isActive({state: \'PAUSE\'}); var MyStates = { PAUSED: \'PAUSED\', ACTIVE: \'ACTIVE\', DELETED: \'DELETED\', }; function isActive2(ad: {state: $Keys}): boolean { return ad.state === MyStates.ACTIVE; }; isActive2({state: \'PAUSE\'}); type Keys = $Keys<{ x: any, y: any }>; type Union = \"x\" | \"y\" function keys2union(s: Keys): Union { return s; } // ok function union2keys(s: Union): Keys { return s; } // ok ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /** @flow */ function isActive( ad: { state: $Keys<{ PAUSED: string, ACTIVE: string, DELETED: string }> } ): boolean { return ad.state === \"ACTIVE\"; } isActive({ state: \"PAUSE\" }); var MyStates = { PAUSED: \"PAUSED\", ACTIVE: \"ACTIVE\", DELETED: \"DELETED\" }; function isActive2(ad: { state: $Keys }): boolean { return ad.state === MyStates.ACTIVE; } isActive2({ state: \"PAUSE\" }); type Keys = $Keys<{ x: any, y: any }>; type Union = \"x\" | \"y\"; function keys2union(s: Keys): Union { return s; } // ok function union2keys(s: Union): Keys { return s; } // ok" `;