diff --git a/ase/awk/awk.c b/ase/awk/awk.c index 231b84bb..64861b3c 100644 --- a/ase/awk/awk.c +++ b/ase/awk/awk.c @@ -1,5 +1,5 @@ /* - * $Id: awk.c,v 1.112 2007-03-02 10:12:40 bacon Exp $ + * $Id: awk.c,v 1.113 2007-03-04 06:26:45 bacon Exp $ * * {License} */ @@ -215,6 +215,8 @@ int ase_awk_clear (ase_awk_t* awk) awk->tree.ok = 0; awk->tree.nbglobals = 0; awk->tree.nglobals = 0; + awk->tree.cur_afn.ptr = ASE_NULL; + awk->tree.cur_afn.len = 0; ase_awk_map_clear (&awk->tree.afns); if (awk->tree.begin != ASE_NULL) diff --git a/ase/awk/awk.h b/ase/awk/awk.h index aed86810..9d171f14 100644 --- a/ase/awk/awk.h +++ b/ase/awk/awk.h @@ -1,5 +1,5 @@ /* - * $Id: awk.h,v 1.198 2007-03-03 14:44:31 bacon Exp $ + * $Id: awk.h,v 1.199 2007-03-04 06:26:45 bacon Exp $ * * {License} */ @@ -261,6 +261,7 @@ enum ASE_AWK_EWHILE, /* keyword 'while' is expected */ ASE_AWK_EASSIGN, /* assignment statement expected */ ASE_AWK_EIDENT, /* identifier expected */ + ASE_AWK_EFNNAME, /* invalid function name */ ASE_AWK_EBLKBEG, /* BEGIN requires an action block */ ASE_AWK_EBLKEND, /* END requires an action block */ ASE_AWK_EDUPBEG, /* duplicate BEGIN */ diff --git a/ase/awk/awk_i.h b/ase/awk/awk_i.h index f8bafd29..8da278a3 100644 --- a/ase/awk/awk_i.h +++ b/ase/awk/awk_i.h @@ -1,5 +1,5 @@ /* - * $Id: awk_i.h,v 1.108 2007-03-03 14:44:31 bacon Exp $ + * $Id: awk_i.h,v 1.109 2007-03-04 06:26:45 bacon Exp $ * * {License} */ @@ -65,6 +65,7 @@ struct ase_awk_tree_t { ase_size_t nglobals; /* total number of globals */ ase_size_t nbglobals; /* number of builtin globals */ + ase_cstr_t cur_afn; ase_awk_map_t afns; /* awk function map */ ase_awk_nde_t* begin; ase_awk_nde_t* end; @@ -192,6 +193,11 @@ struct ase_awk_t } depth; } rex; + struct + { + ase_char_t* fmt[1024]; + } tmp; + /* housekeeping */ int errnum; ase_size_t errlin; diff --git a/ase/awk/err.c b/ase/awk/err.c index 0f5a8960..97ce3c47 100644 --- a/ase/awk/err.c +++ b/ase/awk/err.c @@ -1,5 +1,5 @@ /* - * $Id: err.c,v 1.79 2007-03-03 14:44:31 bacon Exp $ + * $Id: err.c,v 1.80 2007-03-04 06:26:45 bacon Exp $ * * {License} */ @@ -74,17 +74,18 @@ static const ase_char_t* __geterrstr (int errnum) ASE_T("keyword 'while' expected"), ASE_T("assignment statement expected"), ASE_T("identifier expected"), + ASE_T("'%.*s' not a valid function name"), ASE_T("BEGIN requires an action block"), ASE_T("END requires an action block"), ASE_T("duplicate BEGIN"), ASE_T("duplicate END"), - ASE_T("built-in function redefined"), - ASE_T("function redefined"), - ASE_T("global variable redefined"), - ASE_T("parameter redefined"), - ASE_T("duplicate parameter name"), - ASE_T("duplicate global variable name"), - ASE_T("duplicate local variable name"), + ASE_T("built-in function '%.*s' redefined"), + ASE_T("function '%.*s' redefined"), + ASE_T("global variable '%.*s' redefined"), + ASE_T("parameter '%.*s' redefined"), + ASE_T("duplicate parameter name '%.*s'"), + ASE_T("duplicate global variable '%.*s'"), + ASE_T("duplicate local variable '%.*s'"), ASE_T("undefined identifier"), ASE_T("l-value required"), ASE_T("too many global variables"), diff --git a/ase/awk/parse.c b/ase/awk/parse.c index 00de097a..02a020c1 100644 --- a/ase/awk/parse.c +++ b/ase/awk/parse.c @@ -1,5 +1,5 @@ /* - * $Id: parse.c,v 1.248 2007-03-03 13:22:00 bacon Exp $ + * $Id: parse.c,v 1.249 2007-03-04 06:26:45 bacon Exp $ * * {License} */ @@ -126,6 +126,9 @@ struct __binmap_t int binop; }; +#define PTR_EOF ASE_T("") +#define LEN_EOF 5 + static int __parse (ase_awk_t* awk); static ase_awk_t* __parse_progunit (ase_awk_t* awk); @@ -710,25 +713,21 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) if (!MATCH(awk,TOKEN_IDENT)) { /* cannot find a valid identifier for a function name */ + ase_cstr_t errarg; + if (MATCH(awk,TOKEN_EOF)) { - ase_awk_seterror_old ( - awk, ASE_AWK_EIDENT, awk->token.prev.line, - ASE_T("function definition without a name")); + errarg.ptr = PTR_EOF; + errarg.len = LEN_EOF; } else { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("'%.*s' not a valid function name"), - ASE_STR_LEN(&awk->token.name), - ASE_STR_BUF(&awk->token.name)); - - ase_awk_seterror_old ( - awk, ASE_AWK_EIDENT, awk->token.line, - awk->errmsg); + errarg.ptr = ASE_STR_BUF(&awk->token.name); + errarg.len = ASE_STR_LEN(&awk->token.name); } + + ase_awk_seterror ( + awk, ASE_AWK_EFNNAME, awk->token.line, &errarg, 1); return ASE_NULL; } @@ -738,15 +737,13 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) /* check if it is a builtin function */ if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("built-in function '%.*s' redefined"), - name_len, name); + ase_cstr_t errarg; + + errarg.ptr = name; + errarg.len = name_len; - ase_awk_seterror_old ( - awk, ASE_AWK_EBFNRED, awk->token.line, - awk->errmsg); + ase_awk_seterror ( + awk, ASE_AWK_EBFNRED, awk->token.line, &errarg, 1); return ASE_NULL; } @@ -754,15 +751,13 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) if (ase_awk_map_get(&awk->tree.afns, name, name_len) != ASE_NULL) { /* the function is defined previously */ - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("function '%.*s' redefined"), - name_len, name); + ase_cstr_t errarg; + + errarg.ptr = name; + errarg.len = name_len; - ase_awk_seterror_old ( - awk, ASE_AWK_EAFNRED, awk->token.line, - awk->errmsg); + ase_awk_seterror ( + awk, ASE_AWK_EAFNRED, awk->token.line, &errarg, 1); return ASE_NULL; } @@ -775,15 +770,14 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) g = ase_awk_tab_find (&awk->parse.globals, 0, name, name_len); if (g != (ase_size_t)-1) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("global variable '%.*s' redefined"), - name_len, name); + ase_cstr_t errarg; + + errarg.ptr = name; + errarg.len = name_len; - ase_awk_seterror_old ( - awk, ASE_AWK_EGBLRED, awk->token.line, - awk->errmsg); + ase_awk_seterror ( + awk, ASE_AWK_EGBLRED, awk->token.line, + &errarg, 1); return ASE_NULL; } @@ -793,8 +787,8 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) name_dup = ase_strxdup (name, name_len, &awk->prmfns.mmgr); if (name_dup == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL, 0); return ASE_NULL; } @@ -887,18 +881,17 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) if (ase_strxncmp (name_dup, name_len, param, param_len) == 0 || ase_awk_map_get (&awk->tree.afns, param, param_len) != ASE_NULL) { + ase_cstr_t errarg; + ASE_AWK_FREE (awk, name_dup); ase_awk_tab_clear (&awk->parse.params); - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("conflicting parameter '%.*s' with the function"), - param_len, param); + errarg.ptr = param; + errarg.len = param_len; - ase_awk_seterror_old ( - awk, ASE_AWK_EDUPPAR, awk->token.line, - awk->errmsg); + ase_awk_seterror ( + awk, ASE_AWK_EAFNRED, awk->token.line, + &errarg, 1); return ASE_NULL; } @@ -915,18 +908,17 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) &awk->parse.params, 0, param, param_len) != (ase_size_t)-1) { + ase_cstr_t errarg; + ASE_AWK_FREE (awk, name_dup); ase_awk_tab_clear (&awk->parse.params); - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("duplicate parameter '%.*s'"), - param_len, param); + errarg.ptr = param; + errarg.len = param_len; - ase_awk_seterror_old ( + ase_awk_seterror ( awk, ASE_AWK_EDUPPAR, awk->token.line, - awk->errmsg); + &errarg, 1); return ASE_NULL; } @@ -1028,8 +1020,18 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) return ASE_NULL; } + /* remember the current function name so that the body parser + * can know the name of the current function being parsed */ + awk->tree.cur_afn.ptr = name_dup; + awk->tree.cur_afn.len = name_len; + /* actual function body */ body = awk->parse.parse_block (awk, awk->token.prev.line, ase_true); + + /* clear the current function name remembered */ + awk->tree.cur_afn.ptr = ASE_NULL; + awk->tree.cur_afn.len = 0; + if (body == ASE_NULL) { ASE_AWK_FREE (awk, name_dup); @@ -1067,8 +1069,8 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) ase_awk_clrpt (awk, body); ASE_AWK_FREE (awk, afn); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL, 0); return ASE_NULL; } @@ -1351,13 +1353,15 @@ static ase_awk_t* __add_global ( /* check if it conflict with a builtin function name */ if (ase_awk_getbfn (awk, name, len) != ASE_NULL) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("built-in function '%.*s' redefined"), - len, name); + ase_cstr_t errarg; + + errarg.ptr = name; + errarg.len = len; + + ase_awk_seterror ( + awk, ASE_AWK_EBFNRED, awk->token.line, + &errarg, 1); - ase_awk_seterror_old (awk, ASE_AWK_EBFNRED, line, awk->errmsg); return ASE_NULL; } @@ -1365,13 +1369,14 @@ static ase_awk_t* __add_global ( if (ase_awk_map_get ( &awk->tree.afns, name, len) != ASE_NULL) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("function '%.*s' redefined"), - len, name); + ase_cstr_t errarg; + + errarg.ptr = name; + errarg.len = len; + + ase_awk_seterror ( + awk, ASE_AWK_EAFNRED, line, &errarg, 1); - ase_awk_seterror_old (awk, ASE_AWK_EAFNRED, line, awk->errmsg); return ASE_NULL; } } @@ -1380,13 +1385,14 @@ static ase_awk_t* __add_global ( if (ase_awk_tab_find ( &awk->parse.globals, 0, name, len) != (ase_size_t)-1) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("duplicate global variable '%.*s'"), - len, name); + ase_cstr_t errarg; + + errarg.ptr = name; + errarg.len = len; + + ase_awk_seterror ( + awk, ASE_AWK_EDUPGBL, line, &errarg, 1); - ase_awk_seterror_old (awk, ASE_AWK_EDUPGBL, line, awk->errmsg); return ASE_NULL; } } @@ -1504,31 +1510,34 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) /* check if it conflict with a builtin function name */ if (ase_awk_getbfn (awk, local, local_len) != ASE_NULL) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("built-in function '%.*s' redefined"), - local_len, local); + ase_cstr_t errarg; + + errarg.ptr = local; + errarg.len = local_len; + + ase_awk_seterror ( + awk, ASE_AWK_EBFNRED, awk->token.line, + &errarg, 1); - ase_awk_seterror_old ( - awk, ASE_AWK_EBFNRED, awk->token.line, - awk->errmsg); return ASE_NULL; } /* check if it conflict with a function name */ - if (ase_awk_map_get ( - &awk->tree.afns, local, local_len) != ASE_NULL) + if (ase_strxncmp ( + awk->tree.cur_afn.ptr, awk->tree.cur_afn.len, + local, local_len) == 0 || + ase_awk_map_get ( + &awk->tree.afns, local, local_len) != ASE_NULL) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("function '%.*s' redefined"), - local_len, local); + ase_cstr_t errarg; - ase_awk_seterror_old ( + errarg.ptr = local; + errarg.len = local_len; + + ase_awk_seterror ( awk, ASE_AWK_EAFNRED, awk->token.line, - awk->errmsg); + &errarg, 1); + return ASE_NULL; } } @@ -1537,15 +1546,15 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) if (ase_awk_tab_find (&awk->parse.params, 0, local, local_len) != (ase_size_t)-1) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("parameter '%.*s' redefined"), - local_len, local); + ase_cstr_t errarg; - ase_awk_seterror_old ( + errarg.ptr = local; + errarg.len = local_len; + + ase_awk_seterror ( awk, ASE_AWK_EPARRED, awk->token.line, - awk->errmsg); + &errarg, 1); + return ASE_NULL; } @@ -1554,14 +1563,15 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) ((awk->option & ASE_AWK_SHADING)? nlocals: 0), local, local_len) != (ase_size_t)-1) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("duplicate local variable '%.*s'"), - local_len, local); + ase_cstr_t errarg; + + errarg.ptr = local; + errarg.len = local_len; + + ase_awk_seterror ( + awk, ASE_AWK_EDUPLCL, awk->token.line, + &errarg, 1); - ase_awk_seterror_old ( - awk, ASE_AWK_EDUPLCL, awk->token.line, awk->errmsg); return ASE_NULL; } diff --git a/ase/awk/run.c b/ase/awk/run.c index 99ad0061..69d83e4c 100644 --- a/ase/awk/run.c +++ b/ase/awk/run.c @@ -1,5 +1,5 @@ /* - * $Id: run.c,v 1.338 2007-03-03 14:44:31 bacon Exp $ + * $Id: run.c,v 1.339 2007-03-04 06:26:45 bacon Exp $ * * {License} */ @@ -2344,7 +2344,8 @@ static int __run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde) errarg.ptr = var->id.name; errarg.len = var->id.name_len; ase_awk_setrunerror ( - run, ASE_AWK_ENOTDEL, var->line, &errarg, 1); + run, ASE_AWK_ENOTDEL, var->line, + &errarg, 1); return -1; } diff --git a/ase/awk/tree.c b/ase/awk/tree.c index 5183490e..980691fd 100644 --- a/ase/awk/tree.c +++ b/ase/awk/tree.c @@ -1,5 +1,5 @@ /* - * $Id: tree.c,v 1.104 2007-02-24 14:31:44 bacon Exp $ + * $Id: tree.c,v 1.105 2007-03-04 06:26:45 bacon Exp $ * * {License} */ @@ -236,14 +236,13 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) { if (((ase_awk_nde_int_t*)nde)->str == ASE_NULL) { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; ase_size_t n; n = ase_awk_longtostr ( - ((ase_awk_nde_int_t*)nde)->val, - 10, ASE_NULL, tmp, ASE_COUNTOF(tmp)); + ((ase_awk_nde_int_t*)nde)->val, 10, ASE_NULL, + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); - PUT_SRCSTRX (awk, tmp, n); + PUT_SRCSTRX (awk, awk->tmp.fmt, n); } else { @@ -258,21 +257,20 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) { if (((ase_awk_nde_real_t*)nde)->str == ASE_NULL) { - ase_char_t tmp[256]; #if (ASE_SIZEOF_LONG_DOUBLE != 0) awk->prmfns.misc.sprintf ( awk->prmfns.misc.custom_data, - tmp, ASE_COUNTOF(tmp), ASE_T("%Lf"), + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%Lf"), (long double)((ase_awk_nde_real_t*)nde)->val); #elif (ASE_SIZEOF_DOUBLE != 0) awk->prmfns.misc.sprintf ( awk->prmfns.misc.custom_data, - tmp, ASE_COUNTOF(tmp), ASE_T("%f"), + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%f"), (double)((ase_awk_nde_real_t*)nde)->val); #else #error unsupported floating-point data type #endif - PUT_SRCSTR (awk, tmp); + PUT_SRCSTR (awk, awk->tmp.fmt); } else { @@ -343,7 +341,6 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) case ASE_AWK_NDE_ARGIDX: { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; ase_size_t n; ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; ASE_AWK_ASSERT (awk, px->id.idxa != (ase_size_t)-1); @@ -351,8 +348,9 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) PUT_SRCSTR (awk, ASE_T("__param")); n = ase_awk_longtostr ( - px->id.idxa, 10, ASE_NULL, tmp, ASE_COUNTOF(tmp)); - PUT_SRCSTRX (awk, tmp, n); + px->id.idxa, 10, ASE_NULL, + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTRX (awk, awk->tmp.fmt, n); PUT_SRCSTR (awk, ASE_T("[")); PRINT_EXPRESSION_LIST (awk, px->idx); PUT_SRCSTR (awk, ASE_T("]")); @@ -438,7 +436,6 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) case ASE_AWK_NDE_LOCAL: { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; ase_size_t n; ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; @@ -446,9 +443,9 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) { PUT_SRCSTR (awk, ASE_T("__local")); n = ase_awk_longtostr ( - px->id.idxa, 10, - ASE_NULL, tmp, ASE_COUNTOF(tmp)); - PUT_SRCSTRX (awk, tmp, n); + px->id.idxa, 10, ASE_NULL, + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTRX (awk, awk->tmp.fmt, n); } else { @@ -460,7 +457,6 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) case ASE_AWK_NDE_LOCALIDX: { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; ase_size_t n; ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; @@ -468,9 +464,9 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) { PUT_SRCSTR (awk, ASE_T("__local")); n = ase_awk_longtostr ( - px->id.idxa, 10, - ASE_NULL, tmp, ASE_COUNTOF(tmp)); - PUT_SRCSTRX (awk, tmp, n); + px->id.idxa, 10, ASE_NULL, + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTRX (awk, awk->tmp.fmt, n); PUT_SRCSTR (awk, ASE_T("[")); } else @@ -587,7 +583,6 @@ static int __print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) case ASE_AWK_NDE_BLK: { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; ase_size_t n; ase_awk_nde_blk_t* px = (ase_awk_nde_blk_t*)p; @@ -604,15 +599,17 @@ static int __print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) { PUT_SRCSTR (awk, ASE_T("__local")); n = ase_awk_longtostr ( - i, 10, ASE_NULL, tmp, ASE_COUNTOF(tmp)); - PUT_SRCSTRX (awk, tmp, n); + i, 10, ASE_NULL, + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTRX (awk, awk->tmp.fmt, n); PUT_SRCSTR (awk, ASE_T(", ")); } PUT_SRCSTR (awk, ASE_T("__local")); n = ase_awk_longtostr ( - i, 10, ASE_NULL, tmp, ASE_COUNTOF(tmp)); - PUT_SRCSTRX (awk, tmp, n); + i, 10, ASE_NULL, + awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTRX (awk, awk->tmp.fmt, n); PUT_SRCSTR (awk, ASE_T(";")); PUT_NEWLINE (awk); } diff --git a/ase/test/awk/err-007.awk b/ase/test/awk/err-007.awk new file mode 100644 index 00000000..875970ee --- /dev/null +++ b/ase/test/awk/err-007.awk @@ -0,0 +1,4 @@ + +function substr () +{ +} diff --git a/ase/test/awk/err-008.awk b/ase/test/awk/err-008.awk new file mode 100644 index 00000000..36d700f5 --- /dev/null +++ b/ase/test/awk/err-008.awk @@ -0,0 +1,6 @@ + +BEGIN { + local substr; + substr = 20; +} + diff --git a/ase/test/awk/err-009.awk b/ase/test/awk/err-009.awk new file mode 100644 index 00000000..b90f55fb --- /dev/null +++ b/ase/test/awk/err-009.awk @@ -0,0 +1,19 @@ + +func abc () +{ + + local x; + print x = 20; + + { + local abc; + + abc = 30; + print abc; + abc (); + } +} + +BEGIN { + abc (); +} diff --git a/ase/test/awk/err-010.awk b/ase/test/awk/err-010.awk new file mode 100644 index 00000000..e59a23f3 --- /dev/null +++ b/ase/test/awk/err-010.awk @@ -0,0 +1,15 @@ + +global abc; + +func abc () +{ + local abc; + + abc = 20; + print abc; + abc (); +} + +BEGIN { + abc (); +} diff --git a/ase/test/awk/err-011.awk b/ase/test/awk/err-011.awk new file mode 100644 index 00000000..d8dd77ea --- /dev/null +++ b/ase/test/awk/err-011.awk @@ -0,0 +1,13 @@ + +func abc (x) +{ + local x; + + x = 20; + print x; + abc (); +} + +BEGIN { + abc (); +} diff --git a/ase/test/awk/err-012.awk b/ase/test/awk/err-012.awk new file mode 100644 index 00000000..3382d7ed --- /dev/null +++ b/ase/test/awk/err-012.awk @@ -0,0 +1,14 @@ + +func abc () +{ + local j ; + + j = 20; + print j; + abc (); +} + +global abc; +BEGIN { + abc (); +} diff --git a/ase/test/awk/err-013.awk b/ase/test/awk/err-013.awk new file mode 100644 index 00000000..2acc1f7d --- /dev/null +++ b/ase/test/awk/err-013.awk @@ -0,0 +1,3 @@ +func abc (abc) +{ +}