From a701883f4ea83022261304d225eb8225af52b302 Mon Sep 17 00:00:00 2001
From: ubq323 <ubq323@ubq323.website>
Date: Tue, 6 Aug 2024 18:24:28 +0100
Subject: fix failing tests

---
 com.c   | 11 ++++++++---
 read.c  |  2 +-
 state.h |  1 +
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/com.c b/com.c
index 3b2260d..57e600c 100644
--- a/com.c
+++ b/com.c
@@ -619,10 +619,10 @@ static void cpl_expr(Compiler *C, Val v, int flags) {
 		if (form) {
 			size_t nargs = len - 1;
 			if (form->ellipsis)
-				CHECK(nargs >= form->min_params, "%s requires at least %d args",
+				CHECK(nargs >= form->min_params, "%s requires at least %d parameters",
 					form->name, form->min_params);
 			else
-				CHECK(nargs == form->min_params, "%s requires exactly %d args",
+				CHECK(nargs == form->min_params, "%s requires exactly %d parameters",
 					form->name, form->min_params);
 			form->action(C, a, form->op, flags);
 		} else {
@@ -654,6 +654,7 @@ int main(int argc, char **argv) {
 
 	S->do_disasm = false;
 	S->do_trace = false;
+	S->do_dumpsexpr = false;
 
 	char *infile_names[16];
 	int infile_name_n = 0;
@@ -669,6 +670,7 @@ int main(int argc, char **argv) {
 			switch (argv[i][2]) {
 				case 'l': S->do_disasm = true; break;
 				case 't': S->do_trace = true; break;
+				case 's': S->do_dumpsexpr = true; break;
 				default: ERROR("unknown option b");
 			}
 		break;
@@ -699,9 +701,12 @@ int main(int argc, char **argv) {
 		fread(buf, 1, 8192, infile);
 		buf[8192] = '\0';
 		ObjArr *top = read_exprs(S, buf);
+
+		if (S->do_dumpsexpr)
+			println_val(VAL_OBJ(top));
+
 		cpl_body(&com, top, 0, 0);
 
-		// println_val(VAL_OBJ(top));
 
 		// pcc_destroy(parser);
 		// compile_body(&com, top.as.list, 0, 0);
diff --git a/read.c b/read.c
index b3fc5a3..5b3f43e 100644
--- a/read.c
+++ b/read.c
@@ -18,7 +18,7 @@ static bool is_ws(char x) {	return x == ' ' || x == '\t' || x == '\n';}
 static bool is_num(char x) { return '0' <= x && x <= '9'; }
 static bool is_special(char x) {
 	switch(x) {
-	case '(': case ')': case '[': case ']': case '\'': case '"':
+	case '(': case ')': case '[': case ']': case '"':
 	return true; break;
 	default: return false; break;
 	}
diff --git a/state.h b/state.h
index 762d519..b59e4d5 100644
--- a/state.h
+++ b/state.h
@@ -13,6 +13,7 @@ struct _state {
 
 	bool do_disasm;
 	bool do_trace;
+	bool do_dumpsexpr;
 };
 State state_new();
 
-- 
cgit v1.2.3