summaryrefslogtreecommitdiff
path: root/src/jvm/clojure/lang/PersistentListIdentityMap.java
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-07-04 18:02:35 +0000
committerRich Hickey <richhickey@gmail.com>2006-07-04 18:02:35 +0000
commit45928ffe7f2b9e59633fb7931f2a3c75c9d6589f (patch)
treecdade057178a2795ee134ea946cefff882c7c035 /src/jvm/clojure/lang/PersistentListIdentityMap.java
parent86a8196bbba908bf6cf3f5d9ab3d3ebb7f94a646 (diff)
added val to add(), throws exception if key present
Diffstat (limited to 'src/jvm/clojure/lang/PersistentListIdentityMap.java')
-rw-r--r--src/jvm/clojure/lang/PersistentListIdentityMap.java25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/PersistentListIdentityMap.java b/src/jvm/clojure/lang/PersistentListIdentityMap.java
index 1945ca42..1eea34f3 100644
--- a/src/jvm/clojure/lang/PersistentListIdentityMap.java
+++ b/src/jvm/clojure/lang/PersistentListIdentityMap.java
@@ -61,8 +61,8 @@ public IMapEntry find(Object key){
return null;
}
-public IPersistentMap add(Object key){
- return put(key, null);
+public IPersistentMap add(Object key, Object val) throws Exception {
+ return put(key, val);
}
public PersistentListIdentityMap put(Object key, Object val){
@@ -166,7 +166,15 @@ static class Tail extends PersistentListIdentityMap {
return null;
}
- public PersistentListIdentityMap put(Object key, Object val){
+ public PersistentListIdentityMap add(Object key, Object val) throws Exception{
+ if(key == _key)
+ {
+ throw new Exception("Key already present");
+ }
+ return new Link(key,val,this);
+ }
+
+ public PersistentListIdentityMap put(Object key, Object val){
if(key == _key) //replace
{
if(val == _val)
@@ -232,7 +240,16 @@ static class Link extends PersistentListIdentityMap {
return _rest.find(key);
}
- public PersistentListIdentityMap put(Object key, Object val){
+ public PersistentListIdentityMap add(Object key, Object val) throws Exception{
+ IMapEntry e = find(key);
+ if(e != null)
+ {
+ throw new Exception("Key already present");
+ }
+ return new Link(key,val,this);
+ }
+
+ public PersistentListIdentityMap put(Object key, Object val){
IMapEntry e = find(key);
if(e != null)
{