From bcabed6bce2a27fbd617bf1639d43d565510d677 Mon Sep 17 00:00:00 2001 From: giles Date: Sat, 6 Jun 2026 08:05:57 +0000 Subject: [PATCH] erlang: integer literals truncate to strict int (was float; broke integer->char) --- lib/erlang/scoreboard.json | 6 +++--- lib/erlang/scoreboard.md | 4 ++-- lib/erlang/transpile.sx | 7 ++++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/erlang/scoreboard.json b/lib/erlang/scoreboard.json index 97d6f589..a86b5fc6 100644 --- a/lib/erlang/scoreboard.json +++ b/lib/erlang/scoreboard.json @@ -1,11 +1,11 @@ { "language": "erlang", - "total_pass": 759, - "total": 759, + "total_pass": 761, + "total": 761, "suites": [ {"name":"tokenize","pass":62,"total":62,"status":"ok"}, {"name":"parse","pass":52,"total":52,"status":"ok"}, - {"name":"eval","pass":406,"total":406,"status":"ok"}, + {"name":"eval","pass":408,"total":408,"status":"ok"}, {"name":"runtime","pass":93,"total":93,"status":"ok"}, {"name":"ring","pass":4,"total":4,"status":"ok"}, {"name":"ping-pong","pass":4,"total":4,"status":"ok"}, diff --git a/lib/erlang/scoreboard.md b/lib/erlang/scoreboard.md index 6487bf21..bd4087cc 100644 --- a/lib/erlang/scoreboard.md +++ b/lib/erlang/scoreboard.md @@ -1,12 +1,12 @@ # Erlang-on-SX Scoreboard -**Total: 759 / 759 tests passing** +**Total: 761 / 761 tests passing** | | Suite | Pass | Total | |---|---|---|---| | ✅ | tokenize | 62 | 62 | | ✅ | parse | 52 | 52 | -| ✅ | eval | 406 | 406 | +| ✅ | eval | 408 | 408 | | ✅ | runtime | 93 | 93 | | ✅ | ring | 4 | 4 | | ✅ | ping-pong | 4 | 4 | diff --git a/lib/erlang/transpile.sx b/lib/erlang/transpile.sx index c72d9298..12e14b6f 100644 --- a/lib/erlang/transpile.sx +++ b/lib/erlang/transpile.sx @@ -107,7 +107,12 @@ (let ((ty (get node :type))) (cond - (= ty "integer") (parse-number (get node :value)) + (= ty "integer") + (let ((n (parse-number (get node :value)))) + (cond + (= n nil) (error (str "Erlang: invalid integer literal: " + (get node :value))) + :else (truncate n))) (= ty "float") (parse-number (get node :value)) (= ty "atom") (er-mk-atom (get node :value)) (= ty "string") (get node :value)