trimming various syntax error messages
This commit is contained in:
128
lib/comp.c
128
lib/comp.c
@ -406,7 +406,8 @@ static int find_variable_backward_with_word (hak_t* hak, const hak_oocs_t* name,
|
||||
{
|
||||
/* instance variables are accessible only in an instance method defintion scope.
|
||||
* it is in class initialization scope */
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, loc, HAK_NULL, "prohibited access to instance variable around '%.*js'", name->len, name->ptr);
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, loc, HAK_NULL,
|
||||
"prohibited access to instance variable around '%.*js'", name->len, name->ptr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -416,7 +417,9 @@ static int find_variable_backward_with_word (hak_t* hak, const hak_oocs_t* name,
|
||||
if ((hak->c->funblk.info[--fi].fun_type & 0xFF) == FUN_CM)
|
||||
{
|
||||
/* the function where this variable is defined is a class method or an plain function block within a class method*/
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, loc, HAK_NULL, "prohibited access to instance variable in class method context around '%.*js'", name->len, name->ptr);
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_BANNED, loc, HAK_NULL,
|
||||
"prohibited access to instance variable in class method context around '%.*js'",
|
||||
name->len, name->ptr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1726,7 +1729,8 @@ static int check_if_plain_cnode (hak_t* hak, hak_cnode_t* obj, hak_cnode_t* prev
|
||||
{
|
||||
if (!obj)
|
||||
{
|
||||
hak_setsynerrbfmt(hak, errnum, HAK_CNODE_GET_LOC(prev), HAK_NULL, "no %hs in %.*js", bname, HAK_CNODE_GET_TOKLEN(container), HAK_CNODE_GET_TOKPTR(container));
|
||||
hak_setsynerrbfmt(hak, errnum, HAK_CNODE_GET_LOC(prev), HAK_NULL,
|
||||
"no %hs in %.*js", bname, HAK_CNODE_GET_TOKLEN(container), HAK_CNODE_GET_TOKPTR(container));
|
||||
return -1;
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
@ -1931,12 +1935,13 @@ static int compile_or (hak_t* hak, hak_cnode_t* src)
|
||||
if (!obj)
|
||||
{
|
||||
/* no value */
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no expression specified in or");
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no expression specified in 'or'");
|
||||
return -1;
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in and");
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in 'or' around '%.*js'", HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1966,7 +1971,8 @@ static HAK_INLINE int compile_or_p1 (hak_t* hak)
|
||||
obj = cf->operand;
|
||||
if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in or");
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in 'or' around '%.*js'", HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2032,7 +2038,8 @@ static int compile_plus (hak_t* hak, hak_cnode_t* src)
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in plus");
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in plus around '%.*js'", HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2048,7 +2055,8 @@ static int compile_plus (hak_t* hak, hak_cnode_t* src)
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in plus");
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in plus around '%.*js", HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2057,7 +2065,8 @@ static int compile_plus (hak_t* hak, hak_cnode_t* src)
|
||||
|
||||
if (obj)
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in plus");
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in plus around '%.*js", HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2098,11 +2107,15 @@ static int compile_break (hak_t* hak, hak_cnode_t* src)
|
||||
{
|
||||
if (HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL, "redundant argument in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant argument in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
}
|
||||
else
|
||||
{
|
||||
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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around '%.*js'",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@ -2126,8 +2139,7 @@ static int compile_break (hak_t* hak, hak_cnode_t* src)
|
||||
}
|
||||
}
|
||||
|
||||
hak_setsynerrbfmt(
|
||||
hak, HAK_SYNERR_BREAK, HAK_CNODE_GET_LOC(src), HAK_NULL,
|
||||
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;
|
||||
|
||||
@ -2166,8 +2178,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, HAK_SYNERR_INTERN, HAK_CNODE_GET_LOC(src), HAK_NULL,
|
||||
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;
|
||||
}
|
||||
@ -2213,11 +2224,15 @@ static int compile_continue (hak_t* hak, hak_cnode_t* src)
|
||||
{
|
||||
if (HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL, "redundant argument in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant argument in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
}
|
||||
else
|
||||
{
|
||||
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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@ -2301,9 +2316,10 @@ 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, 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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -2312,8 +2328,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, HAK_SYNERR_VARDCLBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_VARDCLBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"variable declaration disallowed in class init scope");
|
||||
return -1;
|
||||
}
|
||||
@ -2461,12 +2476,16 @@ static int compile_if (hak_t* hak, hak_cnode_t* src)
|
||||
if (!obj)
|
||||
{
|
||||
/* no value */
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no conditional expression after '%.*js'", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL,
|
||||
"no conditional expression after '%.*js'", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
return -1;
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2562,12 +2581,16 @@ static HAK_INLINE int compile_elif (hak_t* hak)
|
||||
if (!obj)
|
||||
{
|
||||
/* no value */
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no conditional expression after '%.*js'", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL,
|
||||
"no conditional expression after '%.*js'", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
return -1;
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2602,7 +2625,10 @@ static HAK_INLINE int compile_else (hak_t* hak)
|
||||
|
||||
if (obj && !HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -3629,8 +3655,10 @@ static int compile_fun (hak_t* hak, hak_cnode_t* src)
|
||||
|
||||
if (!HAK_CNODE_IS_CONS(dcl))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(dcl), HAK_CNODE_GET_TOK(dcl),
|
||||
"redundant cdr in argument list in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(dcl), HAK_NULL,
|
||||
"redundant cdr in argument list in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(dcl), HAK_CNODE_GET_TOKPTR(dcl));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -4024,13 +4052,17 @@ static int compile_return (hak_t* hak, hak_cnode_t* src, int ret_from_home)
|
||||
/* TODO: should i allow (return)? does it return the last value on the stack? */
|
||||
/* no value */
|
||||
hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src);
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL, "no value specified in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(src), HAK_NULL,
|
||||
"no value specified in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
|
||||
return -1;
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src);
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "redundant cdr in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -4040,7 +4072,11 @@ static int compile_return (hak_t* hak, hak_cnode_t* src, int ret_from_home)
|
||||
if (obj)
|
||||
{
|
||||
hak_cnode_t* tmp = HAK_CNODE_CONS_CAR(src);
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "more than 1 argument in %.*js", HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp));
|
||||
hak_cnode_t* next = HAK_CNODE_CONS_CAR(obj);
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"excessive argument to '%.*js' around '%.*js'",
|
||||
HAK_CNODE_GET_TOKLEN(tmp), HAK_CNODE_GET_TOKPTR(tmp),
|
||||
HAK_CNODE_GET_TOKLEN(next), HAK_CNODE_GET_TOKPTR(next));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -4069,19 +4105,26 @@ static int compile_set (hak_t* hak, hak_cnode_t* src)
|
||||
|
||||
if (!obj)
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(src), HAK_NULL, "no variable name in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(src), HAK_NULL,
|
||||
"no variable name in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
return -1;
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
var = HAK_CNODE_CONS_CAR(obj);
|
||||
if (!HAK_CNODE_IS_SYMBOL(var) && !HAK_CNODE_IS_DSYMBOL_CLA(var))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), "variable name not symbol in %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAME, HAK_CNODE_GET_LOC(var), HAK_NULL,
|
||||
"variable name not symbol in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -4097,7 +4140,10 @@ static int compile_set (hak_t* hak, hak_cnode_t* src)
|
||||
}
|
||||
else if (!HAK_CNODE_IS_CONS(obj))
|
||||
{
|
||||
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));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_DOTBANNED, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"redundant cdr in %.*js around %.*js",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(obj), HAK_CNODE_GET_TOKPTR(obj));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -4106,7 +4152,11 @@ static int compile_set (hak_t* hak, hak_cnode_t* src)
|
||||
obj = HAK_CNODE_CONS_CDR(obj);
|
||||
if (obj)
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_CNODE_GET_TOK(obj), "too many arguments to %.*js", HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd));
|
||||
hak_cnode_t* next = HAK_CNODE_CONS_CAR(obj);
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ARGCOUNT, HAK_CNODE_GET_LOC(obj), HAK_NULL,
|
||||
"too many arguments to '%.*js' around '%.*js'",
|
||||
HAK_CNODE_GET_TOKLEN(cmd), HAK_CNODE_GET_TOKPTR(cmd),
|
||||
HAK_CNODE_GET_TOKLEN(next), HAK_CNODE_GET_TOKPTR(next));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -4119,7 +4169,9 @@ static int compile_set (hak_t* hak, hak_cnode_t* src)
|
||||
{
|
||||
if (HAK_CNODE_IS_DSYMBOL_CLA(var))
|
||||
{
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAMEUNKNOWN, HAK_CNODE_GET_LOC(var), HAK_CNODE_GET_TOK(var), "unknown class-level variable name", HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_VARNAMEUNKNOWN, HAK_CNODE_GET_LOC(var), HAK_NULL,
|
||||
"unknown class-level variable name '%.*js'",
|
||||
HAK_CNODE_GET_TOKLEN(var), HAK_CNODE_GET_TOKPTR(var));
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
@ -699,7 +699,7 @@ void hak_getsynerru (hak_t* hak, hak_synerru_t* synerr)
|
||||
if (s->loc.file)
|
||||
{
|
||||
wcslen = HAK_COUNTOF(hak->errmsg.xerrlocfile);
|
||||
hak_conv_bcstr_to_ucstr_with_cmgr(s->loc.file, &mbslen, hak->errmsg.xerrlocfile, &wcslen, hak->_cmgr);
|
||||
hak_conv_bcstr_to_ucstr_with_cmgr(s->loc.file, &mbslen, hak->errmsg.xerrlocfile, &wcslen, hak->_cmgr, 1);
|
||||
synerr->loc.file = hak->errmsg.xerrlocfile; /* this can be truncated and is transient */
|
||||
}
|
||||
#endif
|
||||
|
41
lib/read.c
41
lib/read.c
@ -2027,13 +2027,15 @@ static int feed_process_token (hak_t* hak)
|
||||
{
|
||||
/* the auto-created xlist can't be terminated with the regular closing symbol
|
||||
* it must end with the semicolon */
|
||||
hak_setsynerr(hak, HAK_SYNERR_UNBALPBB, TOKEN_LOC(hak), TOKEN_NAME(hak));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_UNBALPBB, TOKEN_LOC(hak), HAK_NULL,
|
||||
"unbalanced parenthesis/brace/bracket around '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
if (cons_info[concode].closer != TOKEN_TYPE(hak))
|
||||
{
|
||||
hak_setsynerr(hak, cons_info[concode].synerr, TOKEN_LOC(hak), TOKEN_NAME(hak));
|
||||
hak_setsynerrbfmt(hak, cons_info[concode].synerr, TOKEN_LOC(hak), HAK_NULL,
|
||||
"invalid closer token around '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak));
|
||||
goto oops;
|
||||
}
|
||||
#if 0
|
||||
@ -2056,7 +2058,7 @@ static int feed_process_token (hak_t* hak)
|
||||
* with no opening(left) parenthesis, which is
|
||||
* indicated by frd->level<=0.
|
||||
*/
|
||||
hak_setsynerr(hak, HAK_SYNERR_LPAREN, TOKEN_LOC(hak), TOKEN_NAME(hak));
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_LPAREN, TOKEN_LOC(hak), HAK_NULL, "( expected around '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak));
|
||||
goto oops;
|
||||
}
|
||||
#endif
|
||||
@ -2114,22 +2116,29 @@ static int feed_process_token (hak_t* hak)
|
||||
frd->obj = hak_makecnodedblcolons(hak, 0, TOKEN_LOC(hak), TOKEN_NAME(hak));
|
||||
goto auto_xlist;
|
||||
|
||||
case HAK_TOK_SMPTRLIT:
|
||||
case HAK_TOK_SMPTRLIT: /* 0pXXXX */
|
||||
{
|
||||
hak_oow_t i;
|
||||
hak_oow_t v = 0;
|
||||
hak_ooch_t tc;
|
||||
|
||||
/* 0pNNNN */
|
||||
HAK_ASSERT(hak, TOKEN_NAME_LEN(hak) >= 3);
|
||||
|
||||
tc = TOKEN_NAME_CHAR(hak, 0);
|
||||
if (tc != '0') goto illegal_smptr_literal; /* most likely + or - */
|
||||
|
||||
for (i = 2; i < TOKEN_NAME_LEN(hak); i++)
|
||||
{
|
||||
HAK_ASSERT(hak, is_xdigit_char(TOKEN_NAME_CHAR(hak, i)));
|
||||
v = v * 16 + HAK_CHAR_TO_NUM(TOKEN_NAME_CHAR(hak, i), 16);
|
||||
tc = TOKEN_NAME_CHAR(hak, i);
|
||||
HAK_ASSERT(hak, is_xdigit_char(tc));
|
||||
v = v * 16 + HAK_CHAR_TO_NUM(tc, 16);
|
||||
}
|
||||
|
||||
if (!HAK_IN_SMPTR_RANGE(v))
|
||||
{
|
||||
hak_setsynerr(hak, HAK_SYNERR_SMPTRLIT, TOKEN_LOC(hak), TOKEN_NAME(hak));
|
||||
illegal_smptr_literal:
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_SMPTRLIT, TOKEN_LOC(hak), HAK_NULL,
|
||||
"illegal smptr literal '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
@ -2137,20 +2146,28 @@ static int feed_process_token (hak_t* hak)
|
||||
goto auto_xlist;
|
||||
}
|
||||
|
||||
case HAK_TOK_ERRLIT:
|
||||
case HAK_TOK_ERRLIT: /* 0eNNNN */
|
||||
{
|
||||
hak_oow_t i;
|
||||
hak_ooi_t v = 0;
|
||||
hak_ooch_t tc;
|
||||
|
||||
HAK_ASSERT(hak, TOKEN_NAME_LEN(hak) >= 3);
|
||||
|
||||
tc = TOKEN_NAME_CHAR(hak, 0);
|
||||
if (tc != '0') goto illegal_error_literal; /* most likely + or - */
|
||||
|
||||
for (i = 2; i < TOKEN_NAME_LEN(hak); i++)
|
||||
{
|
||||
HAK_ASSERT(hak, is_digit_char(TOKEN_NAME_CHAR(hak, i)));
|
||||
v = v * 10 + HAK_CHAR_TO_NUM(TOKEN_NAME_CHAR(hak, i), 10);
|
||||
tc = TOKEN_NAME_CHAR(hak, i);
|
||||
HAK_ASSERT(hak, is_digit_char(tc));
|
||||
v = v * 10 + HAK_CHAR_TO_NUM(tc, 10);
|
||||
|
||||
if (v > HAK_ERROR_MAX)
|
||||
{
|
||||
hak_setsynerr(hak, HAK_SYNERR_ERRLIT, TOKEN_LOC(hak), TOKEN_NAME(hak));
|
||||
illegal_error_literal:
|
||||
hak_setsynerrbfmt(hak, HAK_SYNERR_ERRLIT, TOKEN_LOC(hak), HAK_NULL,
|
||||
"illegal erorr literal '%.*js'", TOKEN_NAME_LEN(hak), TOKEN_NAME_PTR(hak));
|
||||
goto oops;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,12 @@
|
||||
return 1 2 ##ERROR: syntax error - excessive argument to 'return' around '2'
|
||||
|
||||
---
|
||||
|
||||
## TODO: improve the return to show the actual parenthensis like around '('
|
||||
return 1 (+ 1 2) ##ERROR: syntax error - excessive argument to 'return' around ''
|
||||
|
||||
---
|
||||
|
||||
## the expression begins with a dictionary expression.
|
||||
## it is not a function name and can'be be invoked.
|
||||
#{100:1, 200: 3}; ##ERROR: syntax error - invalid callable
|
||||
|
@ -2,6 +2,22 @@ $?a ##ERROR: syntax error - invalid dollar-prefixed identifier '$?a'
|
||||
|
||||
---
|
||||
|
||||
-0e00 ##ERROR: syntax error - illegal erorr literal '-0e00'
|
||||
|
||||
---
|
||||
|
||||
+0e11 ##ERROR: syntax error - illegal erorr literal '+0e11'
|
||||
|
||||
---
|
||||
|
||||
-0p00 ##ERROR: syntax error - illegal smptr literal '-0p00'
|
||||
|
||||
---
|
||||
|
||||
+0p11 ##ERROR: syntax error - illegal smptr literal '+0p11'
|
||||
|
||||
---
|
||||
|
||||
$include ##ERROR: syntax error - '$include' target not specified
|
||||
|
||||
---
|
||||
|
Reference in New Issue
Block a user