summaryrefslogtreecommitdiffstats
path: root/js/src/irregexp/RegExpAST.h
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2020-01-19 14:38:36 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-01-19 14:39:14 +0100
commite0baeba546f8f45bc1ec981a60b615a28f4142af (patch)
treea71ec1879c612c55f22fae35d4f2eb767bf45e42 /js/src/irregexp/RegExpAST.h
parentb1abb9aebe9de3507c93f31cf1b7ffff3432e481 (diff)
downloadUXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar
UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar.gz
UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar.lz
UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar.xz
UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.zip
Issue #1362 - Revert "Implement regular expression lookbehind"
This reverts commit fa473930f424bf17a9e545b601c84dd2e61364e3.
Diffstat (limited to 'js/src/irregexp/RegExpAST.h')
-rw-r--r--js/src/irregexp/RegExpAST.h33
1 files changed, 10 insertions, 23 deletions
diff --git a/js/src/irregexp/RegExpAST.h b/js/src/irregexp/RegExpAST.h
index 6f59842bc..7bda6fc7e 100644
--- a/js/src/irregexp/RegExpAST.h
+++ b/js/src/irregexp/RegExpAST.h
@@ -360,7 +360,6 @@ class RegExpCapture : public RegExpTree
virtual int min_match() { return body_->min_match(); }
virtual int max_match() { return body_->max_match(); }
RegExpTree* body() { return body_; }
- void set_body(RegExpTree* body) { body_ = body; }
int index() { return index_; }
static int StartRegister(int index) { return index * 2; }
static int EndRegister(int index) { return index * 2 + 1; }
@@ -370,29 +369,25 @@ class RegExpCapture : public RegExpTree
int index_;
};
-class RegExpLookaround : public RegExpTree
+class RegExpLookahead : public RegExpTree
{
public:
- enum Type { LOOKAHEAD, LOOKBEHIND };
-
- RegExpLookaround(RegExpTree* body,
- bool is_positive,
- int capture_count,
- int capture_from,
- Type type)
+ RegExpLookahead(RegExpTree* body,
+ bool is_positive,
+ int capture_count,
+ int capture_from)
: body_(body),
is_positive_(is_positive),
capture_count_(capture_count),
- capture_from_(capture_from),
- type_(type)
+ capture_from_(capture_from)
{}
virtual void* Accept(RegExpVisitor* visitor, void* data);
virtual RegExpNode* ToNode(RegExpCompiler* compiler,
RegExpNode* on_success);
- virtual RegExpLookaround* AsLookaround();
+ virtual RegExpLookahead* AsLookahead();
virtual Interval CaptureRegisters();
- virtual bool IsLookaround();
+ virtual bool IsLookahead();
virtual bool IsAnchoredAtStart();
virtual int min_match() { return 0; }
virtual int max_match() { return 0; }
@@ -400,14 +395,12 @@ class RegExpLookaround : public RegExpTree
bool is_positive() { return is_positive_; }
int capture_count() { return capture_count_; }
int capture_from() { return capture_from_; }
- Type type() { return type_; }
private:
RegExpTree* body_;
bool is_positive_;
int capture_count_;
int capture_from_;
- Type type_;
};
typedef InfallibleVector<RegExpCapture*, 1> RegExpCaptureVector;
@@ -424,14 +417,8 @@ class RegExpBackReference : public RegExpTree
RegExpNode* on_success);
virtual RegExpBackReference* AsBackReference();
virtual bool IsBackReference();
- virtual int min_match() override { return 0; }
- // The capture may not be completely parsed yet, if the reference occurs
- // before the capture. In the ordinary case, nothing has been captured yet,
- // so the back reference must have the length 0. If the back reference is
- // inside a lookbehind, effectively making it a forward reference, we return
- virtual int max_match() override {
- return capture_->body() ? capture_->max_match() : 0;
- }
+ virtual int min_match() { return 0; }
+ virtual int max_match() { return capture_->max_match(); }
int index() { return capture_->index(); }
RegExpCapture* capture() { return capture_; }
private: