summaryrefslogtreecommitdiff
path: root/src/jvm/clojure/lang/PersistentTree.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jvm/clojure/lang/PersistentTree.java')
-rw-r--r--src/jvm/clojure/lang/PersistentTree.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/PersistentTree.java b/src/jvm/clojure/lang/PersistentTree.java
index 1403ce0c..1616fa20 100644
--- a/src/jvm/clojure/lang/PersistentTree.java
+++ b/src/jvm/clojure/lang/PersistentTree.java
@@ -42,8 +42,14 @@ public boolean contains(Object key){
return find(key) != null;
}
-public PersistentTree add(Object key){
- return put(key, null);
+public PersistentTree add(Object key, Object val) throws Exception {
+ Box found = new Box(null);
+ Node t = add(tree, key, val, found);
+ if(t == null) //null == already contains key
+ {
+ throw new Exception("Key already present");
+ }
+ return new PersistentTree(comp, t.blacken(), _count + 1);
}
public PersistentTree put(Object key, Object val){
@@ -726,8 +732,13 @@ static public void main(String args[]){
}
Collections.shuffle(Arrays.asList(ints));
//force the ListMap class loading now
- PersistentListMap.EMPTY.add(1).add(2).add(3);
- System.out.println("Building set");
+ try {
+ PersistentListMap.EMPTY.add(1, null).add(2,null).add(3,null);
+ } catch (Exception e)
+ {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ System.out.println("Building set");
//IPersistentMap set = new PersistentHybridMap(1001);
IPersistentMap set = new PersistentHashtableMap(1001);
//IPersistentMap set = new ListMap();