From 7af54064b23efe1f18fab9e7ee20b0fc811c36b5 Mon Sep 17 00:00:00 2001 From: Mel Date: Sun, 24 May 2026 20:30:11 +0200 Subject: Power operator via runtime library implementation Signed-off-by: Mel --- boot/tests/transpile/expressions.cskt | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'boot/tests/transpile/expressions.cskt') diff --git a/boot/tests/transpile/expressions.cskt b/boot/tests/transpile/expressions.cskt index c127b9a..0ca3c01 100644 --- a/boot/tests/transpile/expressions.cskt +++ b/boot/tests/transpile/expressions.cskt @@ -1,5 +1,8 @@ precedence-aware expression emission only inserts parentheses when the child binds more loosely than the parent expects. +`**` has no c equivalent and is routed through the integer-power +runtime helper, with right-associative chaining preserved by the +recursive expansion of the call arguments. <<< @@ -10,6 +13,9 @@ main = fun () { var d int = 10 - (4 - 1) var e int = -1 + 2 var f bool = a == b && c != 0 || d > 0 + var g int = 2 ** 10 + var h int = 2 ** 2 ** 3 + var i int = 1 + 2 ** 3 } >>> @@ -23,5 +29,8 @@ void catskill_main(void) { integer d = 10 - (4 - 1); integer e = -1 + 2; bool f = a == b && c != 0 || d > 0; + integer g = pow_integer(2, 10); + integer h = pow_integer(2, pow_integer(2, 3)); + integer i = 1 + pow_integer(2, 3); } #include "runtime.c" -- cgit 1.4.1