prettier/tests/async_iteration/__snapshots__/jsfmt.spec.js.snap

235 lines
4.7 KiB
Plaintext
Raw Normal View History

exports[`test delegate_yield.js 1`] = `
"async function *delegate_next() {
async function *inner() {
var x: void = yield; // error: number ~> void
}
yield *inner();
}
delegate_next().next(0);
async function *delegate_yield() {
async function *inner() {
yield 0;
}
yield *inner();
}
(async () => {
for await (const x of delegate_yield()) {
(x: void); // error: number ~> void
}
});
async function *delegate_return() {
async function *inner() {
return 0;
}
var x: void = yield *inner(); // error: number ~> void
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2016-12-27 21:29:31 +03:00
// error: number ~> void
// error: number ~> void
// error: number ~> void
async function* delegate_next() {
async function* inner() {
2016-12-27 21:29:31 +03:00
var x: void = yield;
}
yield* inner();
}
2016-12-27 21:29:31 +03:00
delegate_next().next([object Number]);
async function* delegate_yield() {
async function* inner() {
2016-12-27 21:29:31 +03:00
yield [object Number];
}
yield* inner();
}
async () => {
for await (const x of delegate_yield()) {
2016-12-27 21:29:31 +03:00
(x: void);
}
};
async function* delegate_return() {
async function* inner() {
2016-12-27 21:29:31 +03:00
return [object Number];
}
2016-12-27 21:29:31 +03:00
var x: void = yield* inner();
}
"
`;
exports[`test generator.js 1`] = `
"declare interface File {
readLine(): Promise<string>;
close(): void;
EOF: boolean;
}
declare function fileOpen(path: string): Promise<File>;
async function* readLines(path) {
let file: File = await fileOpen(path);
try {
while (!file.EOF) {
yield await file.readLine();
}
} finally {
file.close();
}
}
async function f() {
2016-12-27 21:29:31 +03:00
for await (const line of readLines("/path/to/file")) {
(line: void); // error: string ~> void
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2016-12-27 21:29:31 +03:00
// error: string ~> void
interface File extends {
readLine: : () => Promise<string>,
close: : () => void,
EOF: boolean
}
declare function fileOpen(path: string): Promise<File>;
async function* readLines(path) {
let file: File = await fileOpen(path);
try {
while (!file.EOF) {
yield await file.readLine();
}
} finally {
file.close();
}
}
async function f() {
for await (const line of readLines("/path/to/file")) {
(line: void);
}
}
"
`;
exports[`test return.js 1`] = `
"declare var gen: AsyncGenerator<void,string,void>;
2016-12-27 21:29:31 +03:00
// You can pass whatever you like to return, it doesn't need to be related to
// the AsyncGenerator's return type
gen.return(0).then(result => {
(result.value: void); // error: string | number ~> void
});
2016-12-27 21:29:31 +03:00
// However, a generator can "refuse" the return by catching an exception and
// yielding or returning internally.
async function *refuse_return() {
try {
yield 1;
} finally {
return 0;
}
}
2016-12-27 21:29:31 +03:00
refuse_return().return("string").then(result => {
if (result.done) {
(result.value: string); // error: number | void ~> string
}
});
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2016-12-27 21:29:31 +03:00
// You can pass whatever you like to return, it doesn't need to be related to
// the AsyncGenerator's return type
// error: string | number ~> void
// However, a generator can "refuse" the return by catching an exception and
// yielding or returning internally.
// error: number | void ~> string
declare var gen: AsyncGenerator<void, string, void>;
gen.return([object Number]).then(
result => {
(result.value: void);
}
);
async function* refuse_return() {
try {
yield [object Number];
} finally {
return [object Number];
}
}
refuse_return().return("string").then(
result => {
if (result.done) {
(result.value: string);
}
}
);
"
`;
exports[`test throw.js 1`] = `
"async function *catch_return() {
try {
yield 0;
} catch (e) {
return e;
}
}
(async () => {
2016-12-27 21:29:31 +03:00
catch_return().throw("").then(({value}) => {
if (value !== undefined) {
(value: void); // error: number ~> void
}
});
});
async function *yield_return() {
try {
yield 0;
return;
} catch (e) {
yield e;
}
}
(async () => {
2016-12-27 21:29:31 +03:00
yield_return().throw("").then(({value}) => {
if (value !== undefined) {
(value: void); // error: number ~> void
}
});
});
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2016-12-27 21:29:31 +03:00
// error: number ~> void
// error: number ~> void
async function* catch_return() {
try {
2016-12-27 21:29:31 +03:00
yield [object Number];
} catch (e) {
return e;
}
}
async () => {
2016-12-27 21:29:31 +03:00
catch_return().throw("").then(
({ value }) => {
if (value !== undefined) {
2016-12-27 21:29:31 +03:00
(value: void);
}
}
);
};
async function* yield_return() {
try {
2016-12-27 21:29:31 +03:00
yield [object Number];
return;
} catch (e) {
yield e;
}
}
async () => {
2016-12-27 21:29:31 +03:00
yield_return().throw("").then(
({ value }) => {
if (value !== undefined) {
2016-12-27 21:29:31 +03:00
(value: void);
}
}
);
};
"
`;