[jruby-joni] 139/194: CallNode target is always an enclose

Hideki Yamane henrich at moszumanska.debian.org
Thu Feb 1 12:04:35 UTC 2018


This is an automated email from the git hooks/post-receive script.

henrich pushed a commit to branch debian/sid
in repository jruby-joni.

commit 59679c697ef2fe7346080cd47f95e94ce1c2f47f
Author: Marcin Mielzynski <lopx at gazeta.pl>
Date:   Wed Jan 10 22:32:16 2018 +0100

    CallNode target is always an enclose
---
 src/org/joni/Analyser.java        | 10 +++++-----
 src/org/joni/Parser.java          |  6 +++---
 src/org/joni/ScanEnvironment.java |  9 +++++----
 src/org/joni/UnsetAddrList.java   | 18 +++++++-----------
 src/org/joni/ast/CallNode.java    |  6 +++---
 5 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/src/org/joni/Analyser.java b/src/org/joni/Analyser.java
index 0d50347..5715e14 100644
--- a/src/org/joni/Analyser.java
+++ b/src/org/joni/Analyser.java
@@ -258,7 +258,7 @@ final class Analyser extends Parser {
             if (en.type == EncloseType.CONDITION) {
                 en.regNum = map[en.regNum];
             }
-            renumberByMap(((EncloseNode)node).target, map);
+            renumberByMap(en.target, map);
             break;
 
         case NodeType.BREF:
@@ -433,7 +433,7 @@ final class Analyser extends Parser {
             if (Config.USE_SUBEXP_CALL) {
                 CallNode cn = (CallNode)node;
                 if (cn.isRecursion()) {
-                    EncloseNode en = (EncloseNode)cn.target;
+                    EncloseNode en = cn.target;
                     if (en.isMinFixed()) min = en.minLength;
                 } else {
                     min = getMinMatchLength(cn.target);
@@ -1272,7 +1272,7 @@ final class Analyser extends Parser {
         cn.target = env.memNodes[cn.groupNum]; // no setTarget in call nodes!
         if (cn.target == null) newValueException(ERR_UNDEFINED_NAME_REFERENCE, cn.nameP, cn.nameEnd);
 
-        ((EncloseNode)cn.target).setCalled();
+        cn.target.setCalled();
         env.btMemStart = BitStatus.bsOnAt(env.btMemStart, cn.groupNum);
         cn.unsetAddrList = env.unsetAddrList;
     }
@@ -1858,7 +1858,7 @@ final class Analyser extends Parser {
                             env.btMemEnd = bsOnAt(env.btMemEnd, br.back[i]);
                         }
                     } // USE_BACKREF_AT_LEVEL
-                    ((EncloseNode)env.memNodes[br.back[i]]).setMemBackrefed();
+                    env.memNodes[br.back[i]].setMemBackrefed();
                 }
             }
             break;
@@ -2197,7 +2197,7 @@ final class Analyser extends Parser {
                     opt.length.set(0, MinMaxLen.INFINITE_DISTANCE);
                 } else {
                     int safe = oenv.options;
-                    oenv.options = ((EncloseNode)cn.target).option;
+                    oenv.options = cn.target.option;
                     optimizeNodeLeft(cn.target, opt, oenv);
                     oenv.options = safe;
                 }
diff --git a/src/org/joni/Parser.java b/src/org/joni/Parser.java
index 6163b09..1bcf6f8 100644
--- a/src/org/joni/Parser.java
+++ b/src/org/joni/Parser.java
@@ -709,7 +709,7 @@ class Parser extends Lexer {
                     en.containingAnchor = env.currentPrecReadNotNode();
                 }
                 /* Don't move this to previous of parse_subexp() */
-                env.setMemNode(en.regNum, node);
+                env.setMemNode(en.regNum, en);
             } else if (en.type == EncloseType.CONDITION) {
                 if (target.getType() != NodeType.ALT) { /* convert (?(cond)yes) to (?(cond)yes|empty) */
                     en.setTarget(ConsAltNode.newAltNode(target, ConsAltNode.newAltNode(StringNode.EMPTY, null)));
@@ -1500,7 +1500,7 @@ class Parser extends Lexer {
     private Node parseBackref() {
         final Node node;
         if (syntax.op3OptionECMAScript() && token.getBackrefNum() == 1 && env.memNodes != null) {
-            EncloseNode encloseNode = (EncloseNode) env.memNodes[token.getBackrefRef1()];
+            EncloseNode encloseNode = env.memNodes[token.getBackrefRef1()];
             boolean shouldIgnore = false;
             if (encloseNode != null && encloseNode.containingAnchor != null) {
                 shouldIgnore = true;
@@ -1612,7 +1612,7 @@ class Parser extends Lexer {
                 EncloseNode np = EncloseNode.newMemory(env.option, false);
                 np.regNum = 0;
                 np.setTarget(top);
-                if (env.memNodes ==  null) env.memNodes = new Node[Config.SCANENV_MEMNODES_SIZE];
+                if (env.memNodes ==  null) env.memNodes = new EncloseNode[Config.SCANENV_MEMNODES_SIZE];
                 env.memNodes[0] = np;
                 top = np;
             }
diff --git a/src/org/joni/ScanEnvironment.java b/src/org/joni/ScanEnvironment.java
index 8c384a6..6262e8a 100644
--- a/src/org/joni/ScanEnvironment.java
+++ b/src/org/joni/ScanEnvironment.java
@@ -20,6 +20,7 @@
 package org.joni;
 
 import org.jcodings.Encoding;
+import org.joni.ast.EncloseNode;
 import org.joni.ast.Node;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
@@ -42,7 +43,7 @@ public final class ScanEnvironment {
 
     int numNamed; // USE_NAMED_GROUP
 
-    public Node memNodes[];
+    public EncloseNode memNodes[];
 
     // USE_COMBINATION_EXPLOSION_CHECK
     int numCombExpCheck;
@@ -64,9 +65,9 @@ public final class ScanEnvironment {
     public int addMemEntry() {
         if (numMem >= Config.MAX_CAPTURE_GROUP_NUM) throw new InternalException(ErrorMessages.ERR_TOO_MANY_CAPTURE_GROUPS);
         if (numMem++ == 0) {
-            memNodes = new Node[Config.SCANENV_MEMNODES_SIZE];
+            memNodes = new EncloseNode[Config.SCANENV_MEMNODES_SIZE];
         } else if (numMem >= memNodes.length) {
-            Node[]tmp = new Node[memNodes.length << 1];
+            EncloseNode[]tmp = new EncloseNode[memNodes.length << 1];
             System.arraycopy(memNodes, 0, tmp, 0, memNodes.length);
             memNodes = tmp;
         }
@@ -74,7 +75,7 @@ public final class ScanEnvironment {
         return numMem;
     }
 
-    public void setMemNode(int num, Node node) {
+    public void setMemNode(int num, EncloseNode node) {
         if (numMem >= num) {
             memNodes[num] = node;
         } else {
diff --git a/src/org/joni/UnsetAddrList.java b/src/org/joni/UnsetAddrList.java
index 34e472d..84c9acc 100644
--- a/src/org/joni/UnsetAddrList.java
+++ b/src/org/joni/UnsetAddrList.java
@@ -20,23 +20,22 @@
 package org.joni;
 
 import org.joni.ast.EncloseNode;
-import org.joni.ast.Node;
 import org.joni.exception.ErrorMessages;
 import org.joni.exception.InternalException;
 
 public final class UnsetAddrList {
-    int num;
-    Node[]targets;
+    EncloseNode[]targets;
     int[]offsets;
+    int num;
 
     public UnsetAddrList(int size) {
-        targets = new Node[size];
+        targets = new EncloseNode[size];
         offsets = new int[size];
     }
 
-    public void add(int offset, Node node) {
+    public void add(int offset, EncloseNode node) {
         if (num >= offsets.length) {
-            Node []ttmp = new Node[targets.length << 1];
+            EncloseNode []ttmp = new EncloseNode[targets.length << 1];
             System.arraycopy(targets, 0, ttmp, 0, num);
             targets = ttmp;
             int[]otmp = new int[offsets.length << 1];
@@ -45,13 +44,12 @@ public final class UnsetAddrList {
         }
         targets[num] = node;
         offsets[num] = offset;
-
         num++;
     }
 
     public void fix(Regex regex) {
         for (int i=0; i<num; i++) {
-            EncloseNode en = (EncloseNode)targets[i];
+            EncloseNode en = targets[i];
             if (!en.isAddrFixed()) new InternalException(ErrorMessages.ERR_PARSER_BUG);
             regex.code[offsets[i]] = en.callAddr; // is this safe ?
         }
@@ -60,9 +58,7 @@ public final class UnsetAddrList {
     public String toString() {
         StringBuilder value = new StringBuilder();
         if (num > 0) {
-            for (int i=0; i<num; i++) {
-                value.append("offset + " + offsets[i] + " target: " + targets[i].getAddressName());
-            }
+            for (int i = 0; i < num; i++) value.append("offset + " + offsets[i] + " target: " + targets[i].getAddressName());
         }
         return value.toString();
     }
diff --git a/src/org/joni/ast/CallNode.java b/src/org/joni/ast/CallNode.java
index 19ffc80..ff450f0 100644
--- a/src/org/joni/ast/CallNode.java
+++ b/src/org/joni/ast/CallNode.java
@@ -30,7 +30,7 @@ public final class CallNode extends StateNode {
     public final int nameEnd;
 
     public int groupNum;
-    public Node target;             // is it an EncloseNode always ?
+    public EncloseNode target;
     public UnsetAddrList unsetAddrList;
 
     public CallNode(byte[]name, int nameP, int nameEnd, int gnum) {
@@ -43,7 +43,7 @@ public final class CallNode extends StateNode {
 
     @Override
     protected void setChild(Node newChild) {
-        target = newChild;
+        target = (EncloseNode)newChild;
     }
 
     @Override
@@ -51,7 +51,7 @@ public final class CallNode extends StateNode {
         return target;
     }
 
-    public void setTarget(Node tgt) {
+    public void setTarget(EncloseNode tgt) {
         target = tgt;
         tgt.parent = this;
     }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git



More information about the pkg-java-commits mailing list