From 45928ffe7f2b9e59633fb7931f2a3c75c9d6589f Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Tue, 4 Jul 2006 18:02:35 +0000 Subject: added val to add(), throws exception if key present --- src/cli/runtime/PersistentListIdentityMap.cs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/cli/runtime/PersistentListIdentityMap.cs') 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); -- cgit v1.2.3-70-g09d2