[jruby-joni] 176/194: enable bitset duplication warnings

Hideki Yamane henrich at moszumanska.debian.org
Thu Feb 1 12:04:38 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 064fef01753696b555257a7b179297d69cbb3f01
Author: Marcin Mielzynski <lopx at gazeta.pl>
Date:   Wed Jan 17 20:24:59 2018 +0100

    enable bitset duplication warnings
---
 src/org/joni/BitSet.java         | 12 ++++++++++--
 src/org/joni/Parser.java         |  4 ++--
 src/org/joni/ast/CClassNode.java | 32 ++++++++++++++++----------------
 3 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/src/org/joni/BitSet.java b/src/org/joni/BitSet.java
index 96aea02..d3108f6 100644
--- a/src/org/joni/BitSet.java
+++ b/src/org/joni/BitSet.java
@@ -32,6 +32,11 @@ public final class BitSet {
         return (bits[pos >>> ROOM_SHIFT] & bit(pos)) != 0;
     }
 
+    public void set(ScanEnvironment env, int pos) {
+        if (at(pos)) env.ccDuplicateWarn();
+        set(pos);
+    }
+
     public void set(int pos) {
         bits[pos >>> ROOM_SHIFT] |= bit(pos);
     }
@@ -55,8 +60,11 @@ public final class BitSet {
         return true;
     }
 
-    public void setRange(int from, int to) {
-        for (int i=from; i<=to && i < SINGLE_BYTE_SIZE; i++) set(i);
+    public void setRange(ScanEnvironment env, int from, int to) {
+        for (int i=from; i<=to && i < SINGLE_BYTE_SIZE; i++) {
+            if (env != null && at(i)) env.ccDuplicateWarn();
+            set(i);
+        }
     }
 
     public void setAll() {
diff --git a/src/org/joni/Parser.java b/src/org/joni/Parser.java
index 6edf81a..f21ee3b 100644
--- a/src/org/joni/Parser.java
+++ b/src/org/joni/Parser.java
@@ -384,7 +384,7 @@ class Parser extends Lexer {
                 final int NEW_LINE = 0x0a;
                 if (enc.isNewLine(NEW_LINE)) {
                     if (enc.codeToMbcLength(NEW_LINE) == 1) {
-                        cc.bs.set(NEW_LINE);
+                        cc.bs.set(env, NEW_LINE);
                     } else {
                         cc.addCodeRange(env, NEW_LINE, NEW_LINE);
                     }
@@ -885,7 +885,7 @@ class Parser extends Lexer {
         if (enc.minLength() > 1) {
             right.addCodeRange(env, 0x0A, 0x0D);
         } else {
-            right.bs.setRange(0x0A, 0x0D);
+            right.bs.setRange(env, 0x0A, 0x0D);
         }
 
         if (enc.isUnicode()) {
diff --git a/src/org/joni/ast/CClassNode.java b/src/org/joni/ast/CClassNode.java
index 7061f0a..9c72449 100644
--- a/src/org/joni/ast/CClassNode.java
+++ b/src/org/joni/ast/CClassNode.java
@@ -246,7 +246,7 @@ public final class CClassNode extends Node {
                         }
                         return;
                     }
-                    bs.set(j);
+                    bs.set(env, j);
                 }
             }
             // !sb_end:!
@@ -269,13 +269,13 @@ public final class CClassNode extends Node {
                         if (prev < 0x7fffffff/*!!!*/) addCodeRangeToBuf(env, prev, 0x7fffffff);
                         return;
                     }
-                    bs.set(j);
+                    bs.set(env, j);
                 }
                 prev = CR_TO(mbr, i) + 1;
             }
 
             for (int j=prev; j<sbOut; j++) {
-                bs.set(j);
+                bs.set(env, j);
             }
 
             // !sb_end2:!
@@ -311,7 +311,7 @@ public final class CClassNode extends Node {
                     if (enc.minLength() > 1) {
                         ccAscii.addCodeRangeToBuf(env, 0x00, 0x7F);
                     } else {
-                        ccAscii.bs.setRange(0x00, 0x7F);
+                        ccAscii.bs.setRange(env, 0x00, 0x7F);
                     }
                     ccWork.and(ccAscii, env);
                 }
@@ -337,12 +337,12 @@ public final class CClassNode extends Node {
         case CharacterType.ALNUM:
             if (not) {
                 for (int c=0; c<BitSet.SINGLE_BYTE_SIZE; c++) {
-                    if (!enc.isCodeCType(c, ctype)) bs.set(c);
+                    if (!enc.isCodeCType(c, ctype)) bs.set(env, c);
                 }
                 addAllMultiByteRange(env);
             } else {
                 for (int c=0; c<BitSet.SINGLE_BYTE_SIZE; c++) {
-                    if (enc.isCodeCType(c, ctype)) bs.set(c);
+                    if (enc.isCodeCType(c, ctype)) bs.set(env, c);
                 }
             }
             break;
@@ -351,12 +351,12 @@ public final class CClassNode extends Node {
         case CharacterType.PRINT:
             if (not) {
                 for (int c=0; c<BitSet.SINGLE_BYTE_SIZE; c++) {
-                    if (!enc.isCodeCType(c, ctype) || c >= maxCode) bs.set(c);
+                    if (!enc.isCodeCType(c, ctype) || c >= maxCode) bs.set(env, c);
                 }
                 if (asciiRange) addAllMultiByteRange(env);
             } else {
                 for (int c=0; c<maxCode; c++) {
-                    if (enc.isCodeCType(c, ctype)) bs.set(c);
+                    if (enc.isCodeCType(c, ctype)) bs.set(env, c);
                 }
                 if (!asciiRange) addAllMultiByteRange(env);
             }
@@ -365,13 +365,13 @@ public final class CClassNode extends Node {
         case CharacterType.WORD:
             if (!not) {
                 for (int c=0; c<maxCode; c++) {
-                    if (enc.isSbWord(c)) bs.set(c);
+                    if (enc.isSbWord(c)) bs.set(env, c);
                 }
                 if (!asciiRange) addAllMultiByteRange(env);
             } else {
                 for (int c=0; c<BitSet.SINGLE_BYTE_SIZE; c++) {
                     if (enc.codeToMbcLength(c) > 0 && /* check invalid code point */
-                            !(enc.isWord(c) || c >= maxCode)) bs.set(c);
+                            !(enc.isWord(c) || c >= maxCode)) bs.set(env, c);
                 }
                 if (asciiRange) addAllMultiByteRange(env);
             }
@@ -410,7 +410,7 @@ public final class CClassNode extends Node {
 
         if (arg.state == CCSTATE.VALUE && arg.type != CCVALTYPE.CLASS) {
             if (arg.type == CCVALTYPE.SB) {
-                bs.set(arg.from);
+                bs.set(env, arg.from);
                 if (ascCC != null) ascCC.bs.set(arg.from);
             } else if (arg.type == CCVALTYPE.CODE_POINT) {
                 addCodeRange(env, arg.from, arg.from);
@@ -425,7 +425,7 @@ public final class CClassNode extends Node {
         switch(arg.state) {
         case VALUE:
             if (arg.type == CCVALTYPE.SB) {
-                bs.set(arg.from);
+                bs.set(env, arg.from);
                 if (ascCc != null) ascCc.bs.set(arg.from);
             } else if (arg.type == CCVALTYPE.CODE_POINT) {
                 addCodeRange(env, arg.from, arg.from);
@@ -447,8 +447,8 @@ public final class CClassNode extends Node {
                             throw new ValueException(ErrorMessages.ERR_EMPTY_RANGE_IN_CHAR_CLASS);
                         }
                     }
-                    bs.setRange(arg.from, arg.to);
-                    if (ascCc != null) ascCc.bs.setRange(arg.from, arg.to);
+                    bs.setRange(env, arg.from, arg.to);
+                    if (ascCc != null) ascCc.bs.setRange(null, arg.from, arg.to);
                 } else {
                     addCodeRange(env, arg.from, arg.to);
                     if (ascCc != null) ascCc.addCodeRange(env, arg.from, arg.to, false);
@@ -463,10 +463,10 @@ public final class CClassNode extends Node {
                         throw new ValueException(ErrorMessages.ERR_EMPTY_RANGE_IN_CHAR_CLASS);
                     }
                 }
-                bs.setRange(arg.from, arg.to < 0xff ? arg.to : 0xff);
+                bs.setRange(env, arg.from, arg.to < 0xff ? arg.to : 0xff);
                 addCodeRange(env, arg.from, arg.to);
                 if (ascCc != null) {
-                    ascCc.bs.setRange(arg.from, arg.to < 0xff ? arg.to : 0xff);
+                    ascCc.bs.setRange(null, arg.from, arg.to < 0xff ? arg.to : 0xff);
                     ascCc.addCodeRange(env, arg.from, arg.to, false);
                 }
             }

-- 
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