diff --git a/runtime/Java/src/org/antlr/v4/runtime/misc/Interval.java b/runtime/Java/src/org/antlr/v4/runtime/misc/Interval.java index 557ca7e11a..69f549ba53 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/misc/Interval.java +++ b/runtime/Java/src/org/antlr/v4/runtime/misc/Interval.java @@ -9,8 +9,8 @@ public class Interval { public static final Interval INVALID = new Interval(-1,-2); - public int a; - public int b; + public final int a; + public final int b; public Interval(int a, int b) { this.a=a; this.b=b; } diff --git a/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java b/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java index 3dcb0f3bae..e44d123fb5 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java +++ b/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java @@ -664,18 +664,21 @@ public void remove(int el) { } // if on left edge x..b, adjust left if ( el==a ) { - I.a++; + I = Interval.of(a+1, b); + intervals.set(i, I); break; } // if on right edge a..x, adjust right if ( el==b ) { - I.b--; + I = Interval.of(a, b-1); + intervals.set(i, I); break; } // if in middle a..x..b, split interval if ( el>a && el