Skip to content

Commit 3670527

Browse files
Interval: make public fields final
The class docs already state that Interval is immutable, but this is not enforced. Followup to #4901 Signed-off-by: Steven Schlansker <[email protected]>
1 parent fbb20fe commit 3670527

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

runtime/Java/src/org/antlr/v4/runtime/misc/Interval.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
public class Interval {
1010
public static final Interval INVALID = new Interval(-1,-2);
1111

12-
public int a;
13-
public int b;
12+
public final int a;
13+
public final int b;
1414

1515
public Interval(int a, int b) { this.a=a; this.b=b; }
1616

runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -664,18 +664,21 @@ public void remove(int el) {
664664
}
665665
// if on left edge x..b, adjust left
666666
if ( el==a ) {
667-
I.a++;
667+
I = Interval.of(a+1, b);
668+
intervals.set(i, I);
668669
break;
669670
}
670671
// if on right edge a..x, adjust right
671672
if ( el==b ) {
672-
I.b--;
673+
I = Interval.of(a, b-1);
674+
intervals.set(i, I);
673675
break;
674676
}
675677
// if in middle a..x..b, split interval
676678
if ( el>a && el<b ) { // found in this interval
677679
int oldb = I.b;
678-
I.b = el-1; // [a..x-1]
680+
I = Interval.of(a, el-1); // [a..x-1]
681+
intervals.set(i, I);
679682
add(el+1, oldb); // add [x+1..b]
680683
}
681684
}

tool/src/org/antlr/v4/parse/ANTLRLexer.g

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ UNICODE_ESC
699699
Interval badRange = Interval.of(getCharIndex()-2-hCount, getCharIndex());
700700
String lastChar = input.substring(badRange.b, badRange.b);
701701
if ( lastChar.codePointAt(0)=='\'' ) {
702-
badRange.b--;
702+
badRange = Interval.of(badRange.a, badRange.b-1);
703703
}
704704
String bad = input.substring(badRange.a, badRange.b);
705705
Token t = new CommonToken(input, state.type, state.channel, badRange.a, badRange.b);

0 commit comments

Comments
 (0)