diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-22 22:53:02 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-22 22:53:02 +0300 |
commit | d43f951d4e8be461fd8be7182a4ff1b219fa8edd (patch) | |
tree | 07ed8d2b808e7553b25da7d0cf027a7b82d04458 /debug.c | |
parent | 9bf2c3a7bac4abe6c97af4efb2614575279e7b63 (diff) | |
download | egawk-d43f951d4e8be461fd8be7182a4ff1b219fa8edd.tar.gz egawk-d43f951d4e8be461fd8be7182a4ff1b219fa8edd.tar.bz2 egawk-d43f951d4e8be461fd8be7182a4ff1b219fa8edd.zip |
Improve debugger support for typed regexps.
Diffstat (limited to 'debug.c')
-rw-r--r-- | debug.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -1736,6 +1736,8 @@ watchpoint_triggered(struct list_item *w) /* new != NULL */ if (t2->type == Node_val) w->cur_value = dupnode(t2); + else if (t2->type == Node_typedregex) + w->cur_value = dupnode(t2); else { w->flags |= CUR_IS_ARRAY; w->cur_size = (t2->type == Node_var_array) ? assoc_length(t2) : 0; @@ -1748,6 +1750,7 @@ watchpoint_triggered(struct list_item *w) w->flags |= CUR_IS_ARRAY; w->cur_size = assoc_length(t2); } else + /* works for Node_typedregex too */ w->cur_value = dupnode(t2); } @@ -1790,6 +1793,8 @@ initialize_watch_item(struct list_item *w) } else if (symbol->type == Node_var_array) { w->flags |= CUR_IS_ARRAY; w->cur_size = assoc_length(symbol); + } else if (symbol->type == Node_typedregex) { + w->cur_value = dupnode(r); } /* else can't happen */ } @@ -3703,6 +3708,9 @@ print_memory(NODE *m, NODE *func, Func_print print_func, FILE *fp) print_func(fp, " [%s]", flags2str(m->flags)); break; + case Node_typedregex: + print_func(fp, "@"); + /* fall through */ case Node_regex: pp_string_fp(print_func, fp, m->re_exp->stptr, m->re_exp->stlen, '/', false); break; |