summaryrefslogtreecommitdiff
path: root/src/cli/runtime/PersistentListIdentityMap.cs
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/cli/runtime/PersistentListIdentityMap.cs
parent86a8196bbba908bf6cf3f5d9ab3d3ebb7f94a646 (diff)
added val to add(), throws exception if key present
Diffstat (limited to 'src/cli/runtime/PersistentListIdentityMap.cs')
-rw-r--r--src/cli/runtime/PersistentListIdentityMap.cs23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/cli/runtime/PersistentListIdentityMap.cs b/src/cli/runtime/PersistentListIdentityMap.cs
index ce8242d8..0a60ebc6 100644
--- a/src/cli/runtime/PersistentListIdentityMap.cs
+++ b/src/cli/runtime/PersistentListIdentityMap.cs
@@ -71,9 +71,9 @@ namespace clojure.lang
return null;
}
- public virtual IPersistentMap add(Object key)
+ public virtual IPersistentMap add(Object key, Object val)
{
- return put(key, null);
+ return put(key, val);
}
public virtual IPersistentMap put(Object key, Object val)
@@ -205,6 +205,15 @@ namespace clojure.lang
return null;
}
+ override public IPersistentMap add(Object key, Object val)
+ {
+ if ((key == _key))
+ {
+ throw new Exception("Key already present");
+ }
+ return new Link(key, val, this);
+ }
+
override public IPersistentMap put(Object key, Object val)
{
if ((key == _key)) //replace
@@ -284,6 +293,16 @@ namespace clojure.lang
return _rest.find(key);
}
+ override public IPersistentMap add(Object key, Object val)
+ {
+ IMapEntry e = find(key);
+ if (e != null)
+ {
+ throw new Exception("Key already present");
+ }
+ return new Link(key, val, this);
+ }
+
override public IPersistentMap put(Object key, Object val)
{
IMapEntry e = find(key);