some code reformatting

This commit is contained in:
2025-09-05 01:16:24 +09:00
parent ad510b1436
commit 4d3172e552
5 changed files with 780 additions and 737 deletions

View File

@ -231,7 +231,7 @@ static int handle_logopt (hak_t* hak, const hak_bch_t* logstr)
if (i >= HAK_COUNTOF(xtab))
{
fprintf (stderr, "ERROR: unrecognized value - [%.*s] - [%s]\n", (int)tlen, flt, logstr);
fprintf(stderr, "ERROR: unrecognized value - [%.*s] - [%s]\n", (int)tlen, flt, logstr);
return -1;
}
}
@ -273,7 +273,7 @@ static int handle_dbgopt (hak_t* hak, const hak_bch_t* str)
else if (hak_comp_bchars_bcstr(flt, len, "bigint") == 0) dbgopt |= HAK_TRAIT_DEBUG_BIGINT;
else
{
fprintf (stderr, "ERROR: unknown debug option value - %.*s\n", (int)len, flt);
fprintf(stderr, "ERROR: unknown debug option value - %.*s\n", (int)len, flt);
return -1;
}
}
@ -380,21 +380,21 @@ static void print_synerr (hak_t* hak)
xtn = (xtn_t*)hak_getxtn(hak);
hak_getsynerr (hak, &synerr);
hak_logbfmt (hak,HAK_LOG_STDERR, "ERROR: ");
hak_logbfmt(hak,HAK_LOG_STDERR, "ERROR: ");
if (synerr.loc.file)
hak_logbfmt (hak, HAK_LOG_STDERR, "%js", synerr.loc.file);
hak_logbfmt(hak, HAK_LOG_STDERR, "%js", synerr.loc.file);
else
hak_logbfmt (hak, HAK_LOG_STDERR, "%hs", xtn->cci_path);
hak_logbfmt(hak, HAK_LOG_STDERR, "%hs", xtn->cci_path);
hak_logbfmt (hak, HAK_LOG_STDERR, "[%zu,%zu] %js",
hak_logbfmt(hak, HAK_LOG_STDERR, "[%zu,%zu] %js",
synerr.loc.line, synerr.loc.colm,
(hak_geterrmsg(hak) != hak_geterrstr(hak)? hak_geterrmsg(hak): hak_geterrstr(hak))
);
if (synerr.tgt.len > 0)
hak_logbfmt (hak, HAK_LOG_STDERR, " - %.*js", synerr.tgt.len, synerr.tgt.val);
hak_logbfmt(hak, HAK_LOG_STDERR, " - %.*js", synerr.tgt.len, synerr.tgt.val);
hak_logbfmt (hak, HAK_LOG_STDERR, "\n");
hak_logbfmt(hak, HAK_LOG_STDERR, "\n");
}
static void print_other_error (hak_t* hak)
@ -405,22 +405,22 @@ static void print_other_error (hak_t* hak)
xtn = (xtn_t*)hak_getxtn(hak);
hak_geterrloc(hak, &loc);
hak_logbfmt (hak,HAK_LOG_STDERR, "ERROR: ");
hak_logbfmt(hak,HAK_LOG_STDERR, "ERROR: ");
if (loc.file)
hak_logbfmt (hak, HAK_LOG_STDERR, "%js", loc.file);
hak_logbfmt(hak, HAK_LOG_STDERR, "%js", loc.file);
else
hak_logbfmt (hak, HAK_LOG_STDERR, "%hs", xtn->cci_path);
hak_logbfmt(hak, HAK_LOG_STDERR, "%hs", xtn->cci_path);
hak_logbfmt (hak, HAK_LOG_STDERR, "[%zu,%zu] %js", loc.line, loc.colm, hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR, "[%zu,%zu] %js", loc.line, loc.colm, hak_geterrmsg(hak));
hak_logbfmt (hak, HAK_LOG_STDERR, "\n");
hak_logbfmt(hak, HAK_LOG_STDERR, "\n");
}
static void print_error (hak_t* hak, const hak_bch_t* msghdr)
{
if (HAK_ERRNUM(hak) == HAK_ESYNERR) print_synerr (hak);
else print_other_error (hak);
/*else hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: %hs - [%d] %js\n", msghdr, hak_geterrnum(hak), hak_geterrmsg(hak));*/
/*else hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: %hs - [%d] %js\n", msghdr, hak_geterrnum(hak), hak_geterrmsg(hak));*/
}
@ -435,17 +435,17 @@ static void print_incomplete_expression_error (hak_t* hak)
xtn = hak_getxtn(hak);
hak_getfeedloc (hak, &loc);
hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: ");
hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: ");
if (loc.file)
hak_logbfmt (hak, HAK_LOG_STDERR, "%js", loc.file);
hak_logbfmt(hak, HAK_LOG_STDERR, "%js", loc.file);
else
hak_logbfmt (hak, HAK_LOG_STDERR, "%hs", xtn->cci_path);
hak_logbfmt(hak, HAK_LOG_STDERR, "%hs", xtn->cci_path);
/* if the input is like this
* a := 2; c := {
* the second expression is incompelete. however, the whole input is not executed.
* the number of compiled expressions so far is in xtn->feed.ncompexprs, however */
hak_logbfmt (hak, HAK_LOG_STDERR, "[%zu,%zu] incomplete expression\n", loc.line, loc.colm);
hak_logbfmt(hak, HAK_LOG_STDERR, "[%zu,%zu] incomplete expression\n", loc.line, loc.colm);
}
#endif
@ -454,8 +454,8 @@ static void show_prompt (hak_t* hak, int level)
/* TODO: different prompt per level */
hak_resetfeedloc (hak); /* restore the line number to 1 in the interactive mode */
#if !defined(USE_ISOCLINE)
hak_logbfmt (hak, HAK_LOG_STDOUT, "HAK> ");
hak_logbfmt (hak, HAK_LOG_STDOUT, HAK_NULL); /* flushing */
hak_logbfmt(hak, HAK_LOG_STDOUT, "HAK> ");
hak_logbfmt(hak, HAK_LOG_STDOUT, HAK_NULL); /* flushing */
#endif
}
@ -480,7 +480,7 @@ static hak_oop_t execute_in_interactive_mode (hak_t* hak)
else
{
/* print the result in the interactive mode regardless 'verbose' */
hak_logbfmt (hak, HAK_LOG_STDOUT, "%O\n", retv); /* TODO: show this go to the output handler?? */
hak_logbfmt(hak, HAK_LOG_STDOUT, "%O\n", retv); /* TODO: show this go to the output handler?? */
/*
* print the value of ERRSTR.
hak_oop_cons_t cons = hak_getatsysdic(hak, xtn->sym_errstr);
@ -519,7 +519,7 @@ static hak_oop_t execute_in_batch_mode(hak_t* hak, int verbose)
hak_marshalcodetomem(hak, &hak->code, &mem);
hak_unmarshalcodefrommem(hak, &xcode, (const hak_ptl_t*)&mem);
hak_freemem (hak, mem.ptr);
hak_freemem(hak, mem.ptr);
hak_decode(hak, &xcode, 0, xcode.bc.len);
hak_purgecode (hak, &xcode);
@ -531,7 +531,7 @@ static hak_oop_t execute_in_batch_mode(hak_t* hak, int verbose)
hak_flushudio (hak);
if (!retv) print_error (hak, "execute");
else if (verbose) hak_logbfmt (hak, HAK_LOG_STDERR, "EXECUTION OK - EXITED WITH %O\n", retv);
else if (verbose) hak_logbfmt(hak, HAK_LOG_STDERR, "EXECUTION OK - EXITED WITH %O\n", retv);
/*cancel_tick();*/
g_hak = HAK_NULL;
@ -636,7 +636,7 @@ static int get_line (hak_t* hak, xtn_t* xtn, FILE* fp)
{
if (ferror(fp))
{
hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno));
hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno));
return -1;
}
@ -670,7 +670,7 @@ static int feed_loop (hak_t* hak, xtn_t* xtn, int verbose)
fp = fopen(xtn->cci_path, FOPEN_R_FLAGS);
if (!fp)
{
hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: failed to open - %hs - %hs\n", xtn->cci_path, strerror(errno));
hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: failed to open - %hs - %hs\n", xtn->cci_path, strerror(errno));
goto oops;
}
#endif
@ -686,7 +686,7 @@ static int feed_loop (hak_t* hak, xtn_t* xtn, int verbose)
/*if (hak_beginfeed(hak, is_tty? on_fed_cnode_in_interactive_mode: HAK_NULL) <= -1)*/
if (hak_beginfeed(hak, is_tty? on_fed_cnode_in_interactive_mode: on_fed_cnode_in_batch_mode) <= -1)
{
hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: cannot begin feed - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: cannot begin feed - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
goto oops;
}
@ -773,7 +773,7 @@ static int feed_loop (hak_t* hak, xtn_t* xtn, int verbose)
* this results in the OS prompt on the same line as this program's prompt.
* however ISOCLINE prints a newline upon ctrl-D. print \n when ISOCLINE is
* not used */
hak_logbfmt (hak, HAK_LOG_STDOUT, "\n");
hak_logbfmt(hak, HAK_LOG_STDOUT, "\n");
#endif
}
else
@ -790,7 +790,7 @@ static int feed_loop (hak_t* hak, xtn_t* xtn, int verbose)
{
if (ferror(fp))
{
hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno));
hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: failed to read - %hs - %hs\n", xtn->cci_path, strerror(errno));
goto oops;
}
break;
@ -852,15 +852,15 @@ int main (int argc, char* argv[])
const char* dbgopt = HAK_NULL;
#endif
setlocale (LC_ALL, "");
setlocale(LC_ALL, "");
#if !defined(macintosh)
if (argc < 2)
{
print_usage:
fprintf (stderr, "Usage: %s [options] script-filename [output-filename]\n", argv[0]);
fprintf (stderr, "Options are:\n");
fprintf (stderr, " -v show verbose messages\n");
fprintf(stderr, "Usage: %s [options] script-filename [output-filename]\n", argv[0]);
fprintf(stderr, "Options are:\n");
fprintf(stderr, " -v show verbose messages\n");
return -1;
}
@ -904,9 +904,9 @@ int main (int argc, char* argv[])
case ':':
if (opt.lngopt)
fprintf (stderr, "bad argument for '%s'\n", opt.lngopt);
fprintf(stderr, "bad argument for '%s'\n", opt.lngopt);
else
fprintf (stderr, "bad argument for '%c'\n", opt.opt);
fprintf(stderr, "bad argument for '%c'\n", opt.opt);
return -1;
@ -953,21 +953,21 @@ int main (int argc, char* argv[])
tmp = hak_dupbtoucstr(hak, modlibdirs, HAK_NULL);
if (HAK_UNLIKELY(!tmp))
{
hak_logbfmt (hak, HAK_LOG_STDERR,"ERROR: cannot duplicate modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR,"ERROR: cannot duplicate modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
goto oops;
}
if (hak_setoption(hak, HAK_MOD_LIBDIRS, tmp) <= -1)
{
hak_logbfmt (hak, HAK_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_freemem (hak, tmp);
hak_logbfmt(hak, HAK_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_freemem(hak, tmp);
goto oops;
}
hak_freemem (hak, tmp);
hak_freemem(hak, tmp);
#else
if (hak_setoption(hak, HAK_MOD_LIBDIRS, modlibdirs) <= -1)
{
hak_logbfmt (hak, HAK_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR,"ERROR: cannot set modlibdirs - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
goto oops;
}
#endif
@ -1000,13 +1000,13 @@ int main (int argc, char* argv[])
if (hak_ignite(hak, heapsize) <= -1)
{
hak_logbfmt (hak, HAK_LOG_STDERR, "cannot ignite hak - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR, "cannot ignite hak - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
goto oops;
}
if (hak_addbuiltinprims(hak) <= -1)
{
hak_logbfmt (hak, HAK_LOG_STDERR, "cannot add builtin primitives - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR, "cannot add builtin primitives - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
goto oops;
}
@ -1015,19 +1015,19 @@ int main (int argc, char* argv[])
if (hak_attachcciostdwithbcstr(hak, xtn->cci_path) <= -1)
{
hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: cannot attach source input stream - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: cannot attach source input stream - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
goto oops;
}
if (hak_attachudiostdwithbcstr(hak, "", xtn->udo_path) <= -1) /* TODO: add udi path */
{
hak_logbfmt (hak, HAK_LOG_STDERR, "ERROR: cannot attach user data streams - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
hak_logbfmt(hak, HAK_LOG_STDERR, "ERROR: cannot attach user data streams - [%d] %js\n", hak_geterrnum(hak), hak_geterrmsg(hak));
goto oops;
}
/* -- from this point onward, any failure leads to jumping to the oops label
* -- instead of returning -1 immediately. --*/
set_signal (SIGINT, handle_sigint);
set_signal(SIGINT, handle_sigint);
#if 0
// TODO: change the option name
@ -1043,13 +1043,13 @@ int main (int argc, char* argv[])
if (feed_loop(hak, xtn, verbose) <= -1) goto oops;
set_signal_to_default (SIGINT);
hak_close (hak);
set_signal_to_default(SIGINT);
hak_close(hak);
return 0;
oops:
set_signal_to_default (SIGINT); /* harmless to call multiple times without set_signal() */
if (hak) hak_close (hak);
set_signal_to_default(SIGINT); /* harmless to call multiple times without set_signal() */
if (hak) hak_close(hak);
return -1;
}

View File

@ -221,14 +221,14 @@ static int add_temporary_variable (hak_t* hak, const hak_cnode_t* var, hak_oow_t
{
if (tgt)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARNAMEDUP, HAK_CNODE_GET_LOC(var), HAK_NULL,
"duplicate %hs name '%.*js' for '%.*js'",
desc, name->len, name->ptr, tgt->len, tgt->ptr);
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARNAMEDUP, HAK_CNODE_GET_LOC(var), HAK_NULL,
"duplicate %hs name '%.*js'",
desc, name->len, name->ptr);
@ -305,7 +305,7 @@ static int add_class_level_variable (hak_t* hak, hak_oocsc_t* dst, hak_oocsc_t*
if (__find_word_in_string((hak_oocs_t*)dst, name, 0, HAK_NULL) >= 0 ||
(__find_word_in_string((hak_oocs_t*)altdst, name, 0, HAK_NULL) >= 0))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARNAMEDUP, HAK_CNODE_GET_LOC(var), HAK_NULL,
"duplicate %hs variable name '%.*js'", desc, name->len, name->ptr);
return -1;
@ -541,7 +541,7 @@ static int check_block_expression_as_body (hak_t* hak, hak_cnode_t* c, const hak
HAK_CNODE_IS_ELIST_CONCODED(car, HAK_CONCODE_VLIST)))
{
no_block:
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_BLOCK,
(car? HAK_CNODE_GET_LOC(car): c? HAK_CNODE_GET_LOC(c): HAK_CNODE_GET_LOC(ctx)), HAK_NULL,
"block expression expected as '%.*js' body", HAK_CNODE_GET_TOKLEN(ctx), HAK_CNODE_GET_TOKPTR(ctx)
@ -585,7 +585,7 @@ static int check_block_expression_as_body (hak_t* hak, hak_cnode_t* c, const hak
}
}
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(cdr), HAK_NULL,
"redundant expression prohibited after '%.*js' body",
HAK_CNODE_GET_TOKLEN(ctx), HAK_CNODE_GET_TOKPTR(ctx)
@ -1291,7 +1291,7 @@ static void pop_funblk (hak_t* hak)
/* patch the temporaries mask parameter for the MAKE_BLOCK or MAKE_FUNCTION instruction */
HAK_ASSERT(hak, hak->code.bc.ptr[fbi->make_inst_pos] == HAK_CODE_MAKE_BLOCK ||
hak->code.bc.ptr[fbi->make_inst_pos] == HAK_CODE_MAKE_FUNCTION);
hak->code.bc.ptr[fbi->make_inst_pos] == HAK_CODE_MAKE_FUNCTION);
/* the total number of temporaries in this function block must be the sum of
* the number of arguments, return variables and local variables */
@ -1479,7 +1479,7 @@ static int collect_vardcl_for_class (hak_t* hak, hak_cnode_t* obj, hak_cnode_t**
if (enclosed)
{
synerr_varname:
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(var), HAK_NULL,
"not variable name '%.*js'", HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var));
return -1;
@ -1507,7 +1507,7 @@ static int collect_vardcl_for_class (hak_t* hak, hak_cnode_t* obj, hak_cnode_t**
/* class variable */
if (vardcl->nivars >= MAX_NCVARS)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(var), HAK_NULL,
"too many(%zu) class variables before '%.*js'",
vardcl->nivars, HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var));
@ -1524,7 +1524,7 @@ static int collect_vardcl_for_class (hak_t* hak, hak_cnode_t* obj, hak_cnode_t**
/* instance variable */
if (vardcl->nivars >= MAX_NIVARS)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(var), HAK_NULL,
"too many(%zu) instance variables before '%.*js'",
vardcl->nivars, HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var));
@ -1588,7 +1588,7 @@ static int collect_vardcl (hak_t* hak, hak_cnode_t* obj, hak_cnode_t** nextobj,
#if 0
if (!HAK_CNODE_IS_SYMBOL(var))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_ARGNAME, HAK_CNODE_GET_LOC(var), HAK_NULL,
"invalid local variable name '%.*js'",
HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var));
@ -2050,7 +2050,7 @@ static int compile_break (hak_t* hak, hak_cnode_t* src)
}
}
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_BREAK, HAK_CNODE_GET_LOC(src), HAK_NULL,
"%.*js outside loop", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
return -1;
@ -2090,7 +2090,7 @@ inside_loop:
/* this part must no be reached. if a loop control block is found,
* there must exist a COP_POST_UNTIL_BODY or COP_POST_WHILE_BODY frame */
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_INTERN, HAK_CNODE_GET_LOC(src), HAK_NULL,
"internal error in compiling %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
return -1;
@ -2225,7 +2225,7 @@ static int compile_expression_block (hak_t* hak, hak_cnode_t* src, const hak_bch
obj = HAK_CNODE_CONS_CDR(src); /* expression list after it */
if (obj && !HAK_CNODE_IS_CONS(obj))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj),
"redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
return -1;
@ -2236,7 +2236,7 @@ static int compile_expression_block (hak_t* hak, hak_cnode_t* src, const hak_bch
{
if (is_in_class_init_scope(hak))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARDCLBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
"variable declaration disallowed in class init scope");
return -1;
@ -2254,7 +2254,7 @@ static int compile_expression_block (hak_t* hak, hak_cnode_t* src, const hak_bch
* ^
* not allowed either
*/
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARDCLBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
"variable declaration disallowed in '%hs' context", ctxname);
return -1;
@ -2270,7 +2270,7 @@ static int compile_expression_block (hak_t* hak, hak_cnode_t* src, const hak_bch
if (collect_vardcls(hak, obj, &obj, tvslen, &nlvars, ctxname) <= -1) return -1;
if (nlvars > MAX_CODE_NBLKLVARS)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"too many(%zu) variables in %.*js", nlvars, HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
return -1;
@ -2596,7 +2596,7 @@ static int check_class_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned i
/* don't allow empty attribute list */
if (class_name)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"empty attribute list on '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name),
@ -2604,7 +2604,7 @@ static int check_class_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned i
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"empty attribute list on unnamed class for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -2632,7 +2632,7 @@ static int check_class_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned i
if (!HAK_CNODE_IS_TYPED(attr, HAK_CNODE_SYMLIT))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr), HAK_NULL,
"invalid class attribute name '%.*js'", toklen, tokptr);
return -1;
@ -2663,7 +2663,7 @@ static int check_class_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned i
*/
if (!!((ct >> attr_tab[i].shifts) & (attr_tab[i].mask | attr_tab[i].value)))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr), HAK_NULL,
"conflicting or duplicate class attribute name '#%.*js'", toklen, tokptr);
return -1;
@ -2679,7 +2679,7 @@ static int check_class_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned i
if (lim <= 0)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr), HAK_NULL,
"unrecognized class attribute name '#%.*js'", toklen, tokptr);
return -1;
@ -2763,7 +2763,7 @@ static int compile_class (hak_t* hak, hak_cnode_t* src)
{
if (!HAK_CNODE_IS_SYMBOL_IDENT(tmp))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"invalid class name '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp),
@ -2780,7 +2780,7 @@ static int compile_class (hak_t* hak, hak_cnode_t* src)
{
if (class_name)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(src), HAK_NULL,
"incomplete definition of '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name),
@ -2788,7 +2788,7 @@ static int compile_class (hak_t* hak, hak_cnode_t* src)
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(src), HAK_NULL,
"incomplete defintion of unnamed class for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -2807,7 +2807,7 @@ static int compile_class (hak_t* hak, hak_cnode_t* src)
obj = HAK_CNODE_CONS_CDR(obj);
if (!obj || !HAK_CNODE_IS_CONS(obj))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(marker), HAK_NULL,
"no expression or declaration after %.*js",
HAK_CNODE_GET_TOKLEN(marker), HAK_CNODE_GET_TOKPTR(marker));
@ -2820,7 +2820,7 @@ static int compile_class (hak_t* hak, hak_cnode_t* src)
{
if (HAK_CNODE_IS_FOR_DATA_SIMPLE(superclass) || HAK_CNODE_IS_FOR_LANG(superclass))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(marker), HAK_NULL,
"invalid superclass name '%.*js' after '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(superclass), HAK_CNODE_GET_TOKPTR(superclass),
@ -2829,7 +2829,7 @@ static int compile_class (hak_t* hak, hak_cnode_t* src)
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_CLASS, HAK_CNODE_GET_LOC(marker), HAK_NULL,
"no valid superclass name after '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(marker), HAK_CNODE_GET_TOKPTR(marker),
@ -3092,7 +3092,7 @@ static int check_fun_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
/* don't allow empty attribute list */
if (class_name && fun_name)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"empty attribute list on '%.*js:%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name),
@ -3101,7 +3101,7 @@ static int check_fun_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
}
else if (fun_name)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"empty attribute list on '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name),
@ -3109,7 +3109,7 @@ static int check_fun_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"empty attribute list on unnamed function for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3133,7 +3133,7 @@ static int check_fun_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
if (!HAK_CNODE_IS_TYPED(a, HAK_CNODE_SYMLIT))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(a), HAK_NULL,
"invalid function attribute name '%.*js'", toklen, tokptr);
return -1;
@ -3145,7 +3145,7 @@ static int check_fun_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
if (ft != FUN_IM)
{
conflicting:
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(a), HAK_NULL,
"conflicting function attribute name '#%.*js'", toklen, tokptr);
return -1;
@ -3160,7 +3160,7 @@ static int check_fun_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(a), HAK_NULL,
"unrecognized function attribute name '#%.*js'", toklen, tokptr);
return -1;
@ -3228,7 +3228,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
next = HAK_CNODE_CONS_CDR(next);
if (!next)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(fun_name), HAK_NULL,
"function name '%.*js' not followed by ( or : for '%.*js'",
HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name),
@ -3246,7 +3246,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
next = HAK_CNODE_CONS_CDR(next);
if (!next)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(class_name), HAK_NULL,
"no function name after class name '%.*js:' for '%.*js'",
HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name),
@ -3257,7 +3257,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
tmp = HAK_CNODE_CONS_CAR(next);
if (!HAK_CNODE_IS_SYMBOL(tmp))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"invalid function name '%.*js' after '%.*js:' for '%.*js'",
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp),
@ -3270,7 +3270,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
next = HAK_CNODE_CONS_CDR(next);
if (!next)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(fun_name), HAK_NULL,
"function name '%.*js:%.*js' not followed by ( for '%.*js'",
HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name),
@ -3283,7 +3283,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
if (is_in_class_init_scope(hak))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(fun_name), HAK_NULL,
"class name '%.*js' before :'%.*js' prohibited in class initialization context",
HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name),
@ -3307,7 +3307,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
next = HAK_CNODE_CONS_CDR(next); /* point past argument list */
if (!next)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL,
"no function body after argument list of function '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name),
@ -3325,7 +3325,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
/* TODO: guess if the current list looks like attribute list or
* not by inspecting elements and produce better error mesage.
* another hack is to disallow ELIST as attribute list? */
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL,
"unnamed function not followed by function body for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3350,7 +3350,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
next = HAK_CNODE_CONS_CDR(next); /* point past argument list */
if (!next)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL,
"no function body after attribute list and argument list of unnamed function for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3373,7 +3373,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
* fun() {} ## this is prohibited
* }
*/
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL,
"unnamed function defined with '%.*js' prohibited in class initialziation context",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3390,7 +3390,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
*/
if (fun_name)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"'%.*js' not followed by ( but followed by '%.*js'",
HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name),
@ -3398,7 +3398,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"invalid function name '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp),
@ -3410,7 +3410,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
else
{
/* nothing after 'fun' (e.g. fun ) */
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(cmd), HAK_NULL,
"'%.*js' not followed by name or (",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3433,14 +3433,14 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
{
if (fun_name)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"attribute list prohibited on plain function '%.*js'",
HAK_CNODE_GET_TOKLEN(fun_name), HAK_CNODE_GET_TOKPTR(fun_name));
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_FUN, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"attribute list prohibited on unnamed function for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3486,7 +3486,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
{
/* in 'fun x (x :: 20) { }', '20' is not a valid return variable name.
* in 'fun x (x :: if) { }', 'if' is not a valid return variable name. */
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(arg), HAK_NULL,
"invalid return variable '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(arg), HAK_CNODE_GET_TOKPTR(arg),
@ -3507,7 +3507,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
{
/* in 'fun x (... a) {}', 'a' is an unexpected token.
* only ')' or '::' can follow ... */
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_CNODE, HAK_CNODE_GET_LOC(arg), HAK_NULL,
"unexpected token '%.*js' after '...' for '%.*js'",
HAK_CNODE_GET_TOKLEN(arg), HAK_CNODE_GET_TOKPTR(arg),
@ -3527,7 +3527,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
}
else if (!HAK_CNODE_IS_SYMBOL_IDENT(arg))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_ARGNAME, HAK_CNODE_GET_LOC(arg), HAK_NULL,
"invalid argument name '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(arg), HAK_CNODE_GET_TOKPTR(arg),
@ -3560,7 +3560,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
* block arguments, evaluation which is done by message passing
* limits the number of arguments that can be passed. so the
* check is implemented */
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_ARGFLOOD, HAK_CNODE_GET_LOC(arg_list), HAK_NULL,
"too many(%zu) arguments in %.*js", nargs,
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3569,7 +3569,7 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
if (nrvars > MAX_CODE_NBLKLVARS)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(arg_list), HAK_NULL,
"too many(%zu) return variables in %.*js", nrvars,
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3653,7 +3653,7 @@ static int check_var_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
/* don't allow empty attribute list */
if (class_name)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"empty attribute list on '%.*js' in '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(var_name), HAK_CNODE_GET_TOKPTR(var_name),
@ -3662,7 +3662,7 @@ static int check_var_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"empty attribute list on '%.*js' in unnamed class for '%.*js'",
HAK_CNODE_GET_TOKLEN(var_name), HAK_CNODE_GET_TOKPTR(var_name),
@ -3687,7 +3687,7 @@ static int check_var_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
if (!HAK_CNODE_IS_TYPED(a, HAK_CNODE_SYMLIT))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(a), HAK_NULL,
"invalid variable attribute name '%.*js'", toklen, tokptr);
return -1;
@ -3699,7 +3699,7 @@ static int check_var_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
if (ft != VAR_INST)
{
conflicting:
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(a), HAK_NULL,
"conflicting variable attribute name '#%.*js'", toklen, tokptr);
return -1;
@ -3708,7 +3708,7 @@ static int check_var_attr_list (hak_t* hak, hak_cnode_t* attr_list, unsigned int
}
else
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(a), HAK_NULL,
"unrecognized variable attribute name '#%.*js'", toklen, tokptr);
return -1;
@ -3742,7 +3742,7 @@ static int compile_var (hak_t* hak, hak_cnode_t* src)
if (!next)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(cmd), HAK_NULL,
"'%.*js' not followed by name or (",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3755,7 +3755,7 @@ static int compile_var (hak_t* hak, hak_cnode_t* src)
if (!is_in_class_init_scope(hak))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(cmd), HAK_NULL,
"'%.*js' prohibited in this context",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3772,7 +3772,7 @@ static int compile_var (hak_t* hak, hak_cnode_t* src)
next = HAK_CNODE_CONS_CDR(next);
if (!next)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(attr_list), HAK_NULL,
"no name after attribute list for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -3795,7 +3795,7 @@ static int compile_var (hak_t* hak, hak_cnode_t* src)
{
if (cbi->nivars >= MAX_NIVARS)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"too many(%zu) instance variables before '%.*js'",
cbi->nivars, HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
@ -3809,7 +3809,7 @@ static int compile_var (hak_t* hak, hak_cnode_t* src)
{
if (cbi->ncvars >= MAX_NCVARS)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARFLOOD, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"too many(%zu) class variables before '%.*js'",
cbi->ncvars, HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
@ -3829,7 +3829,7 @@ static int compile_var (hak_t* hak, hak_cnode_t* src)
else
{
not_ident:
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VAR, HAK_CNODE_GET_LOC(tmp), HAK_NULL,
"invalid variable name '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp),
@ -3889,7 +3889,7 @@ static int compile_return (hak_t* hak, hak_cnode_t* src, int ret_from_home)
if (ret_from_home)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(src), HAK_NULL,
"%.*js not compatible with return variables",
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
@ -3978,7 +3978,7 @@ static int compile_set (hak_t* hak, hak_cnode_t* src)
obj = HAK_CNODE_CONS_CDR(obj);
if (!obj)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(var), HAK_NULL,
"no value after '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var),
@ -4074,7 +4074,7 @@ static int compile_set_r (hak_t* hak, hak_cnode_t* src)
if (!obj)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(var), HAK_NULL,
"no value after '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var),
@ -4280,7 +4280,7 @@ static HAK_INLINE int compile_catch (hak_t* hak)
exarg = HAK_CNODE_CONS_CAR(obj);
if (!HAK_CNODE_IS_CONS_CONCODED(exarg, HAK_CONCODE_XLIST) || hak_countcnodecons(hak, exarg) != 1)
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(exarg), HAK_NULL,
"improper exception variable for '%.*js'",
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
@ -4290,7 +4290,7 @@ static HAK_INLINE int compile_catch (hak_t* hak)
exarg = HAK_CNODE_CONS_CAR(exarg);
if (!HAK_CNODE_IS_SYMBOL(exarg))
{
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(exarg), HAK_NULL,
"invalid exception variable name '%.*js' for '%.*js'",
HAK_CNODE_GET_TOKLEN(exarg), HAK_CNODE_GET_TOKPTR(exarg),
@ -4414,7 +4414,7 @@ static int compile_throw (hak_t* hak, hak_cnode_t* src)
/* TODO: should i allow (throw)? does it return the last value on the stack? */
/* no value */
hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src);
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL,
"no value or expression after '%.*js'",
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
@ -6559,7 +6559,7 @@ static HAK_INLINE int post_fun (hak_t* hak)
{
/* something wrong - this must not happen because the reader must prevent this
* but if it happens, it is a syntax error */
hak_setsynerrbfmt (
hak_setsynerrbfmt(
hak, HAK_SYNERR_BANNED, HAK_CNODE_GET_LOC(class_name), HAK_NULL,
"class name '%.js' prohibited class initialization context",
HAK_CNODE_GET_TOKLEN(class_name), HAK_CNODE_GET_TOKPTR(class_name));

1258
lib/exec.c

File diff suppressed because it is too large Load Diff

View File

@ -559,7 +559,7 @@ static const hak_ooch_t* add_sr_name (hak_t* hak, const hak_oocs_t* name)
nptr = (hak_ooch_t*)(link + 1);
hak_copy_oochars (nptr, name->ptr, name->len);
hak_copy_oochars(nptr, name->ptr, name->len);
nptr[name->len] = '\0';
link->link = hak->c->sr_names;

View File

@ -141,13 +141,26 @@ class (#varying) Z: Object [ a b c ] {
self.a := 10
self.b := 20
self.c := 30
printf "Z:new called\n"
}
fun aaa() {
printf "%d %d %d\n" a b c
}
}
k := (Z:basicNew 10)
##k := (Z:new)
fun Z:abc() {
printf "%d %d %d\n" a b c ## this is not recognized as ....
}
fun k () {
k := (Z:basicNew 10) ## #varying is really required? what is the big deal even if you allow it regardless?
##k := (Z:new) ## no way to add extra fields.
k:basicAtPut 2 "hello"
k:basicAtPut 3 "world"
printf "----------------------------------------\n"
printf "%O\n" (k:basicAt 2)
printf "%O\n" (k:basicAt 20)
##k := (Z:new)
##k:aaa
}
(k)