From f591d307d9af95bfa0ccda4d5eb76a674447ba39 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Wed, 3 Aug 2016 21:38:50 +0300 Subject: Restore typed regexp code in a new branch. --- re.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 're.c') diff --git a/re.c b/re.c index 3b01823b..d92560d0 100644 --- a/re.c +++ b/re.c @@ -351,10 +351,14 @@ re_update(NODE *t) /* regex was compiled with settings matching IGNORECASE */ if ((t->re_flags & CONSTANT) != 0) { /* it's a constant, so just return it as is */ - assert(t->type == Node_regex); + assert(t->type == Node_regex || t->type == Node_typedregex); return t->re_reg; } t1 = t->re_exp; + if (t1->type == Node_typedregex) { + assert((t1->re_flags & CONSTANT) != 0); + return t1->re_reg; + } if (t->re_text != NULL) { /* if contents haven't changed, just return it */ if (cmp_nodes(t->re_text, t1) == 0) -- cgit v1.2.3 From b37675aa79213f2665abb2bbb4db90560642bdee Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 15 Nov 2016 21:03:57 +0200 Subject: First steps reworking code away from node type. --- re.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 're.c') diff --git a/re.c b/re.c index 4360d307..e4191a1c 100644 --- a/re.c +++ b/re.c @@ -345,18 +345,17 @@ re_update(NODE *t) { NODE *t1; + if (t->type == Node_val && (t->flags & REGEX) != 0) + return t->tre_regs; + if ((t->re_flags & CASE) == IGNORECASE) { /* regex was compiled with settings matching IGNORECASE */ if ((t->re_flags & CONSTANT) != 0) { /* it's a constant, so just return it as is */ - assert(t->type == Node_regex || t->type == Node_typedregex); + assert(t->type == Node_regex); return t->re_reg; } t1 = t->re_exp; - if (t1->type == Node_typedregex) { - assert((t1->re_flags & CONSTANT) != 0); - return t1->re_reg; - } if (t->re_text != NULL) { /* if contents haven't changed, just return it */ if (cmp_nodes(t->re_text, t1, true) == 0) -- cgit v1.2.3 From 4f1eec385831018980e4c7424e1a544c5313b52a Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 15 Nov 2016 21:45:58 +0200 Subject: Finish reworking typed regexes. Tests pass! --- re.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 're.c') diff --git a/re.c b/re.c index e4191a1c..dcb06671 100644 --- a/re.c +++ b/re.c @@ -346,7 +346,7 @@ re_update(NODE *t) NODE *t1; if (t->type == Node_val && (t->flags & REGEX) != 0) - return t->tre_regs; + return t->typed_re->re_reg; if ((t->re_flags & CASE) == IGNORECASE) { /* regex was compiled with settings matching IGNORECASE */ -- cgit v1.2.3