allocators/fs/process/socket/log/trace/test move under modules/std/ (allocators.sx becomes std/mem.sx; the Allocator protocol moves into the std.sx prelude, impls stay in mem.sx). New std/xml.sx holds xml_escape as xml.escape. std.sx gains the carried namespace tail — flat-importing std.sx now also provides mem./xml./log. — with the remaining modules (fs/process/socket/json/cli/hash/test) deferred from the tail until the global last-wins maps are fully own-wins (pulling them into every closure collides bare names corpus-wide; they stay direct imports: modules/std/fs.sx etc.). log.sx's internal emit renamed log_emit (it clobbered consumer fns named emit program-wide). bundle.sx uses xml.escape via the carried alias. Consumer import paths swept mechanically; .ir snapshots recaptured for the larger std closure. m3te + game build unchanged.
68 lines
1.4 KiB
Plaintext
68 lines
1.4 KiB
Plaintext
#import "modules/std.sx";
|
|
#import "modules/math/math.sx";
|
|
#import "modules/compiler.sx";
|
|
#import "modules/std/test.sx";
|
|
pkg :: #import "modules/testpkg";
|
|
|
|
Color :: enum { red; green; blue; }
|
|
|
|
main :: () {
|
|
|
|
// ========================================================
|
|
// 1. LITERALS
|
|
// ========================================================
|
|
print("=== 1. Literals ===\n");
|
|
|
|
// Integer literals
|
|
print("decimal: {}\n", 42);
|
|
print("hex: {}\n", 0xFF);
|
|
print("binary: {}\n", 0b1010);
|
|
|
|
// Float literal
|
|
pi := 3.14;
|
|
print("float: {}\n", pi);
|
|
|
|
// Explicit f64
|
|
big : f64 = 2.718281828;
|
|
print("f64: {}\n", big);
|
|
|
|
// Boolean literals
|
|
print("true: {}\n", true);
|
|
print("false: {}\n", false);
|
|
|
|
// String with escapes
|
|
print("escapes: hello\tworld\n");
|
|
|
|
// Multi-line string
|
|
ml := "line1
|
|
line2";
|
|
print("multiline: {}\n", ml);
|
|
|
|
// Heredoc string
|
|
hd := #string END
|
|
raw heredoc
|
|
END;
|
|
print("heredoc: {}\n", hd);
|
|
|
|
// Undefined with type
|
|
undef_val : s32 = ---;
|
|
undef_val = 77;
|
|
print("undef-then-set: {}\n", undef_val);
|
|
|
|
// Enum literal (context-inferred)
|
|
c : Color = .green;
|
|
print("enum-lit: {}\n", c);
|
|
|
|
// Null pointer
|
|
np : *s32 = null;
|
|
print("null-ptr: {}\n", np);
|
|
|
|
// String .len
|
|
slen := "hello";
|
|
print("string-len: {}\n", slen.len);
|
|
|
|
// Empty string .len
|
|
es := "";
|
|
print("empty-string: {}\n", es.len);
|
|
}
|