36 lines
750 B
Core
36 lines
750 B
Core
|
|
storage: [32]S64
|
|
len : S64
|
|
|
|
"+" :: (a: Any, b: Any): Any
|
|
result: Any = storage[len++]
|
|
if a.type == S64 && b.type == S64
|
|
*(result.data->*S64) = *(a.data->*S64) + *(b.data->*S64)
|
|
return result
|
|
|
|
"+" :: (a: Any, b: S64): Any
|
|
result: Any = storage[len++]
|
|
if a.type == S64
|
|
*(result.data->*S64) = *(a.data->*S64) + b
|
|
return result
|
|
|
|
"==" :: (a: Any, b: S64): Bool
|
|
result := false
|
|
if a.type == S64
|
|
result = *(a.data->*S64) == b
|
|
return result
|
|
|
|
"==" :: (a: Any, b: Any): Bool
|
|
result := false
|
|
if a.type == S64 && b.type == S64
|
|
result = *(a.data->*S64) == *(b.data->*S64)
|
|
return result
|
|
|
|
main :: (): int
|
|
a: Any = 10
|
|
b: Any = 20
|
|
c := a + b
|
|
Assert(c.type == S64 && c == 30)
|
|
Assert(a+b+a==c+(5+5))
|
|
|
|
return 0 |