From 9c5aaa8db6f8adb50f9124a2459903cfbf03b170 Mon Sep 17 00:00:00 2001 From: n00b Date: Sat, 21 Dec 2024 02:28:44 -0500 Subject: [PATCH] Fixed ByRef UDT arrays --- rcbasic_build/main.cpp | 2 +- rcbasic_build/parser.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/rcbasic_build/main.cpp b/rcbasic_build/main.cpp index 11ed620..b351817 100755 --- a/rcbasic_build/main.cpp +++ b/rcbasic_build/main.cpp @@ -921,7 +921,7 @@ int main(int argc, char * argv[]) //DEBUG START //rc_filename = "/home/n00b/projects/bu/constraint_demo/main.bas"; //rc_filename = "/home/n00b/Music/Simple 3D Platformer/main.bas"; - rc_filename = "/home/n00b/Programs/RCBasic_v400_Linux64/examples/Constraint/main.bas"; + //rc_filename = "/home/n00b/Programs/RCBasic_v400_Linux64/examples/Constraint/main.bas"; //DEBUG END //enable_presets = true; diff --git a/rcbasic_build/parser.h b/rcbasic_build/parser.h index c019c3d..d20f387 100755 --- a/rcbasic_build/parser.h +++ b/rcbasic_build/parser.h @@ -1415,8 +1415,10 @@ bool pre_parse(int start_token = 0, int end_token = -1, int pp_flags, bool eval_ return false; } + bool byref_isArray = (id[tmp_id].type == ID_TYPE_BYREF_USER && arg_count == 1); - if(arg_count != id[tmp_id].num_args) + + if(arg_count != id[tmp_id].num_args && (!byref_isArray)) { if(type_redim_flag) { @@ -1680,7 +1682,7 @@ bool pre_parse(int start_token = 0, int end_token = -1, int pp_flags, bool eval_ if(byref_type_flag) { type_error_exception tx; - tx.error_log = "[0]Expected " + rc_intToString(id[tmp_id].num_args) + " dimension in " + id[tmp_id].name; + tx.error_log = "[0.1]Expected " + rc_intToString(id[tmp_id].num_args) + " dimension in " + id[tmp_id].name; tx.tk_reg = token[i]; tx.num_args = id[tmp_id].num_args; tx.exception_used = false;