53b43b0f79
Ship the QUALITY_PLAN stretch from ownership through ecosystem: C.1 lifetime elision (bootstrap + selfhost), bux fmt/test/doc CI hooks, stdlib goldens, package registry (bux search/add), and LSP 0.4 position-sensitive locals with inferred let types. Full-tree format pass plus Map/Set remove double-free fix.
30 lines
563 B
Plaintext
30 lines
563 B
Plaintext
// Algebraic Enums - Enums with data (tagged unions)
|
|
import Std::Io::{PrintLine, PrintInt};
|
|
|
|
|
|
enum Result {
|
|
Ok(int),
|
|
Err(String)
|
|
}
|
|
|
|
func Main() -> int {
|
|
let r1: Result = Result { tag: Result_Ok };
|
|
r1.data.Ok_0 = 42;
|
|
|
|
let r2: Result = Result { tag: Result_Err };
|
|
r2.data.Err_0 = "error message";
|
|
|
|
if r1.tag == Result_Ok {
|
|
PrintLine("r1 is Ok:");
|
|
PrintInt(r1.data.Ok_0);
|
|
PrintLine("");
|
|
}
|
|
|
|
if r2.tag == Result_Err {
|
|
PrintLine("r2 is Err:");
|
|
PrintLine(r2.data.Err_0);
|
|
}
|
|
|
|
return 0;
|
|
}
|