ludic/selfhost/tests/long.ludic
Orkuncakilkaya b7745a4600 refactor(lang): rename the str type (and stringify builtin) to string
Expand the abbreviated string type and its conversion builtin to the full
word everywhere:
  str            ->  string        (the immutable-string type)
  str(x) -> str  ->  string(x) -> string   (the stringify builtin;
                                            what `{…}` interpolation calls)

Types are recognized by identifier, and llty maps both spellings to LLVM
`ptr`, so this is an atomic source rewrite: type annotations, the Ludic
type tags, the builtin name/dispatch, and the interpolation desugar, plus
the grammars, LSP, docs (type-str -> type-string, fn-str -> fn-string), and
inventory. int/bool stay (universally accepted, like Math).

Reseeded; C-free fixpoint holds; all suites green (45/24/29); site + check.py OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 01:51:11 +03:00

23 lines
950 B
Text

program T {
function wide(a: long, b: int) -> long { return a * b } # int arg widens to i64
entry {
let big: long = 1000000 # int literal widens to a long
let sq = big * big # i64 multiply -> 10^12, no overflow
print(sq) # 1000000000000
print(sq + 1) # 1000000000001
var acc: long = 0
acc += sq
acc += 5 # compound assign in i64
print(acc) # 1000000000005
print(wide(big, 3000000)) # 3000000000000 (> i32 max)
let x: long = big * 3
let y = big * 2 # inferred long
print(x > y) # 1
print(y < x) # 1
print(x == x) # 1
print(0 - sq) # -1000000000000 (unary negate stays 64-bit)
print(big) # 1000000
print(Text.length(string(sq))) # 13 — string(long) renders all 13 digits
}
}