31 lines
721 B
Plaintext
31 lines
721 B
Plaintext
//ww:run-exit 19
|
|
// Migrated from 700_e2e row 96.
|
|
package main;
|
|
type error = str;
|
|
def eEOF: error = "eof";
|
|
def eShortRead: error = "short read";
|
|
fn read(n: i64) (i64 | error) = {
|
|
if (n < 0) { return eEOF; };
|
|
if (n == 0) { return eShortRead; };
|
|
return n + 1;
|
|
};
|
|
fn main() i32 = {
|
|
let r0: (i64 | error) = read(0);
|
|
let r1: (i64 | error) = read(-1);
|
|
let r2: (i64 | error) = read(5);
|
|
let acc: i32 = 0;
|
|
match (r0) {
|
|
case let v: i64 => acc += 100;
|
|
case let e: error => acc += e.len: i32;
|
|
};
|
|
match (r1) {
|
|
case let v: i64 => acc += 100;
|
|
case let e: error => acc += e.len: i32;
|
|
};
|
|
match (r2) {
|
|
case let v: i64 => acc += v: i32;
|
|
case let e: error => acc += 100;
|
|
};
|
|
return acc;
|
|
};
|