speedcat/test_type_checker.cat
Slendi 66faf71ec7 Add support for struct field accesses
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-09 02:24:45 +03:00

106 lines
1.7 KiB
Plaintext

\\let asdf := 0b1101 as f32
\\let poop :: 12.0 + 2.0 * asdf
\
\\fn name(a b: f32) i32 {
\\ ret (a + b) as i32
\\}
\
\\name 123.0 456.0
\
\\let arr: []i32, arr2: [69]u8, ptr: ^i32
\
\fn meow(val: i32) i32
\
\let amogus := 500 + (meow 8008135)
\
\meow 69 * amogus + 420
\
\let a b := 5 1
\
\if a == 5 {
\ if b {
\ meow 123
\ } else {
\ meow 69
\ }
\} elif a == 2 {
\ meow 456
\} else {
\ meow 420
\}
\
\fn add(a b: i32) i32 {
\ ret a + b
\}
\
\for a != 0 {
\ meow (1 << a) >> 1
\ a = a - 1
\}
\
\(meow (add 60 9)) -> meow
struct Color {
r g b a: u8,
}
fn ClearBackground(c: u32)
fn DrawRectangle(x y w h: i32, c: u32)
fn DrawCircle(x y: i32, r: f32, c: u32)
fn InitWindow(w h: i32, title: i32)
fn CloseWindow
fn BeginDrawing
fn SetTargetFPS(fps: i32)
fn EndDrawing
fn DrawFPS(x y: i32)
fn WindowShouldClose i32
fn ColorToRaylib(c: Color) u32 {
ret (c.a as u32 << 24 as u32) | (c.b as u32 << 16 as u32) | (c.g as u32 << 8 as u32) | c.r
}
fn ClearBackgroundWrap(c: Color) i32 {
ClearBackground (ColorToRaylib c)
ret 0
}
fn DrawRectangleWrap(x y w h: i32, c: Color) i32 {
DrawRectangle x y w h (ColorToRaylib c)
ret 0
}
fn DrawCircleWrap(x y: i32, r: f32, c: Color) i32 {
DrawCircle x y r (ColorToRaylib c)
ret 0
}
let white :: .Color{69 69 69 255}
let red :: .Color{255 0 0 255}
let blue :: .Color{0 0 255 255}
let x := 0
let dir := 1
fn GetScreenHeight i32
InitWindow 640 480 0
SetTargetFPS 60
for WindowShouldClose == 0 {
x = x + dir
if x > GetScreenHeight - 200 {
dir = -1
} elif x < 0 {
dir = 1
}
BeginDrawing
ClearBackgroundWrap white
DrawFPS 20 20
DrawRectangleWrap 80 x 100 200 red
DrawCircleWrap 200 200 100.0 blue
EndDrawing
}
CloseWindow