From 6648fa1e27425eb51957ccec8f739455fe85ca82 Mon Sep 17 00:00:00 2001 From: hanez Date: Sat, 24 Jan 2026 20:15:25 +0100 Subject: [PATCH] Some code style fixes in the parser and bug fixes. (0.37.61) --- CMakeLists.txt | 2 +- examples/types_overview.fun | 2 +- src/parser.c | 30 +++++++++++++++--------------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 618cc69..e16325b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.10) -project(fun VERSION 0.37.60 LANGUAGES C) +project(fun VERSION 0.37.61 LANGUAGES C) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) diff --git a/examples/types_overview.fun b/examples/types_overview.fun index 859f64d..ff02f12 100755 --- a/examples/types_overview.fun +++ b/examples/types_overview.fun @@ -71,7 +71,7 @@ class Person(number age, string name) // typeof(instance) will call this and return it return "Class" -Class p = Person(33, "Jo") +p = Person(33, "Jo") print(typeof(p)) // -> "Class" // p = "nope" // Uncomment to see TypeError: expected Class diff --git a/src/parser.c b/src/parser.c index 47b727a..e110f68 100644 --- a/src/parser.c +++ b/src/parser.c @@ -2851,26 +2851,26 @@ static void parse_simple_statement(Bytecode *bc, const char *src, size_t len, si || strcmp(name, "byte") == 0 || strcmp(name, "uint8") == 0 || strcmp(name, "uint16") == 0 || strcmp(name, "uint32") == 0 || strcmp(name, "uint64") == 0 || strcmp(name, "int8") == 0 || strcmp(name, "int16") == 0 || strcmp(name, "int32") == 0 || strcmp(name, "int64") == 0) { - int is_number = (strcmp(name, "number") == 0); - int is_string = (strcmp(name, "string") == 0); - int is_boolean = (strcmp(name, "boolean") == 0); - int is_nil = (strcmp(name, "nil") == 0); - int is_class = (strcmp(name, "class") == 0); - int is_float = (strcmp(name, "float") == 0); - int is_array = (strcmp(name, "array") == 0); - int is_byte = (strcmp(name, "byte") == 0); - int is_u8 = (strcmp(name, "uint8") == 0) || is_byte; - int is_u16 = (strcmp(name, "uint16") == 0); - int is_u32 = (strcmp(name, "uint32") == 0); - int is_u64 = (strcmp(name, "uint64") == 0); + int is_number = (strcmp(name, "number") == 0); + int is_string = (strcmp(name, "string") == 0); + int is_boolean = (strcmp(name, "boolean") == 0); + int is_nil = (strcmp(name, "nil") == 0); + int is_class = (strcmp(name, "class") == 0); + int is_float = (strcmp(name, "float") == 0); + int is_array = (strcmp(name, "array") == 0); + int is_byte = (strcmp(name, "byte") == 0); + int is_u8 = (strcmp(name, "uint8") == 0) || is_byte; + int is_u16 = (strcmp(name, "uint16") == 0); + int is_u32 = (strcmp(name, "uint32") == 0); + int is_u64 = (strcmp(name, "uint64") == 0); int is_s8 = (strcmp(name, "int8") == 0); int is_s16 = (strcmp(name, "int16") == 0); int is_s32 = (strcmp(name, "int32") == 0); int is_s64 = (strcmp(name, "int64") == 0) || is_number; /* number maps to int64 (signed) */ int decl_bits = is_u8 ? 8 : is_u16 ? 16 : is_u32 ? 32 : is_u64 ? 64 - : is_s8 ? 8 : is_s16 ? 16 : is_s32 ? 32 : is_s64 ? 64 : 0; + : is_s8 ? 8 : is_s16 ? 16 : is_s32 ? 32 : is_s64 ? 64 : 0; int decl_signed = (is_s8 || is_s16 || is_s32 || is_s64) ? 1 : 0; - /* store decl bits with sign encoded: negative means signed (number is signed 64-bit) */ + /* store decl bits with sign encoded: negative means signed (number is signed 64-bit) */ if (decl_signed) decl_bits = -decl_bits; /* declared type metadata: integers use decl_bits; string/boolean/nil/Class/float/array use special markers */ @@ -3099,7 +3099,7 @@ static void parse_simple_statement(Bytecode *bc, const char *src, size_t len, si ci = bytecode_add_constant(bc, make_string("")); } else if (is_nil) { ci = bytecode_add_constant(bc, make_nil()); - } else if (is_class_tkn) { + } else if (is_class) { /* Class-typed variable defaults to Nil until assigned an instance */ ci = bytecode_add_constant(bc, make_nil()); } else if (is_boolean) {