Trie$Match is mutable, fixes #277

This commit is contained in:
Tommi Reiman 2019-05-22 16:39:37 +03:00
parent 4933927fa9
commit 60ee39bd53

View file

@ -113,16 +113,19 @@ public class Trie {
} }
static final class DataMatcher implements Matcher { static final class DataMatcher implements Matcher {
private final Match match;
private final IPersistentMap params;
private final Object data;
DataMatcher(IPersistentMap params, Object data) { DataMatcher(IPersistentMap params, Object data) {
this.match = new Match(params, data); this.params = params;
this.data = data;
} }
@Override @Override
public Match match(int i, int max, char[] path) { public Match match(int i, int max, char[] path) {
if (i == max) { if (i == max) {
return match; return new Match(params, data);
} }
return null; return null;
} }
@ -139,7 +142,7 @@ public class Trie {
@Override @Override
public String toString() { public String toString() {
return (match.data != null ? match.data.toString() : "nil"); return (data != null ? data.toString() : "nil");
} }
} }