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 633bd60d7..f3b063dc4 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java +++ b/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java @@ -57,6 +57,8 @@ public class IntervalSet implements IntSet { /** The list of sorted, disjoint intervals. */ protected List intervals; + protected boolean readonly; + /** Create a set with no elements */ public IntervalSet() { intervals = new ArrayList(2); // most sets are 1 or 2 elements @@ -87,6 +89,7 @@ public class IntervalSet implements IntSet { } public void clear() { + if ( readonly ) throw new IllegalStateException("can't alter readonly IntervalSet"); intervals.clear(); } @@ -95,6 +98,7 @@ public class IntervalSet implements IntSet { */ @Override public void add(int el) { + if ( readonly ) throw new IllegalStateException("can't alter readonly IntervalSet"); add(el,el); } @@ -111,6 +115,7 @@ public class IntervalSet implements IntSet { // copy on write so we can cache a..a intervals and sets of that protected void add(Interval addition) { + if ( readonly ) throw new IllegalStateException("can't alter readonly IntervalSet"); //System.out.println("add "+addition+" to "+intervals.toString()); if ( addition.b