summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cli/runtime/APersistentMap.cs2
-rw-r--r--src/cli/runtime/AnArray.cs4
-rw-r--r--src/cli/runtime/Associative.cs2
-rw-r--r--src/cli/runtime/MapEntry.cs4
-rw-r--r--src/cli/runtime/PersistentArrayMap.cs2
-rw-r--r--src/cli/runtime/PersistentHashtableMap.cs4
-rw-r--r--src/cli/runtime/PersistentListMap.cs8
-rw-r--r--src/cli/runtime/PersistentTreeMap.cs2
-rw-r--r--src/cli/runtime/TObj.cs2
-rw-r--r--src/cli/runtime/Var.cs2
-rw-r--r--src/jvm/clojure/lang/AnArray.java4
-rw-r--r--src/jvm/clojure/lang/Associative.java2
-rw-r--r--src/jvm/clojure/lang/IPersistentMap.java1
13 files changed, 20 insertions, 19 deletions
diff --git a/src/cli/runtime/APersistentMap.cs b/src/cli/runtime/APersistentMap.cs
index 5b560036..4e39acb7 100644
--- a/src/cli/runtime/APersistentMap.cs
+++ b/src/cli/runtime/APersistentMap.cs
@@ -45,7 +45,7 @@ public abstract class APersistentMap : Obj, IPersistentMap{
abstract public object get(object key);
- abstract public IPersistentMap assoc(object key, object val);
+ abstract public Associative assoc(object key, object val);
#endregion
diff --git a/src/cli/runtime/AnArray.cs b/src/cli/runtime/AnArray.cs
index 76640631..b586d6f5 100644
--- a/src/cli/runtime/AnArray.cs
+++ b/src/cli/runtime/AnArray.cs
@@ -67,9 +67,9 @@ public IMapEntry find(Object key) {
return null;
}
-public IPersistentMap assoc(Object key, Object val) {
+public Associative assoc(Object key, Object val) {
int i = Convert.ToInt32(key);
- return (IPersistentMap) assocN(i,val);
+ return (Associative)assocN(i, val);
}
public Object get(Object key) {
diff --git a/src/cli/runtime/Associative.cs b/src/cli/runtime/Associative.cs
index 062d9099..2711e993 100644
--- a/src/cli/runtime/Associative.cs
+++ b/src/cli/runtime/Associative.cs
@@ -16,6 +16,6 @@ namespace clojure.lang
bool contains(object key);
IMapEntry find(object key);
object get(object key);
- IPersistentMap assoc(object key, object val);
+ Associative assoc(object key, object val);
}
}
diff --git a/src/cli/runtime/MapEntry.cs b/src/cli/runtime/MapEntry.cs
index 13051107..606336d3 100644
--- a/src/cli/runtime/MapEntry.cs
+++ b/src/cli/runtime/MapEntry.cs
@@ -38,7 +38,7 @@ override public IMapEntry find(Object key) {
return RT.equal(_key, key)?this:null;
}
-override public IPersistentMap assoc(Object key, Object val) {
+override public Associative assoc(Object key, Object val) {
if(RT.equal(_key, key))
{
if(_val == val)
@@ -55,7 +55,7 @@ override public Object get(Object key) {
override public IPersistentMap assocEx(Object key, Object val) {
if(RT.equal(_key, key))
throw new Exception("Key already present");
- return assoc(key, val);
+ return (IPersistentMap)assoc(key, val);
}
override public IPersistentMap without(Object key) {
diff --git a/src/cli/runtime/PersistentArrayMap.cs b/src/cli/runtime/PersistentArrayMap.cs
index 4e27ad16..6c848685 100644
--- a/src/cli/runtime/PersistentArrayMap.cs
+++ b/src/cli/runtime/PersistentArrayMap.cs
@@ -98,7 +98,7 @@ public IPersistentMap assocEx(Object key, Object val) {
return create(newArray);
}
-public IPersistentMap assoc(Object key, Object val) {
+public Associative assoc(Object key, Object val) {
int i = indexOf(key);
Object[] newArray;
if(i >= 0) //already have key, same-sized replacement
diff --git a/src/cli/runtime/PersistentHashtableMap.cs b/src/cli/runtime/PersistentHashtableMap.cs
index a833fa4c..0bf8930b 100644
--- a/src/cli/runtime/PersistentHashtableMap.cs
+++ b/src/cli/runtime/PersistentHashtableMap.cs
@@ -98,7 +98,7 @@ public IPersistentMap assocEx(Object key, Object val) {
return create(_count + incr, newArray, growAtCount);
}
-public IPersistentMap assoc(Object key, Object val) {
+public Associative assoc(Object key, Object val) {
if(_count > growAtCount)
return grow().assoc(key, val);
int i = bucketFor(key,array);
@@ -116,7 +116,7 @@ PersistentArray doPut(int i,Object key,Object val,PersistentArray array){
IPersistentMap newEntries;
if (entries != null)
{
- newEntries = entries.assoc(key, val);
+ newEntries = (IPersistentMap)entries.assoc(key, val);
if(newEntries == entries) //already there with same value, no op
return array;
}
diff --git a/src/cli/runtime/PersistentListMap.cs b/src/cli/runtime/PersistentListMap.cs
index 948a70c4..714dfe38 100644
--- a/src/cli/runtime/PersistentListMap.cs
+++ b/src/cli/runtime/PersistentListMap.cs
@@ -68,10 +68,10 @@ public virtual IMapEntry find(Object key){
}
public virtual IPersistentMap assocEx(Object key, Object val){
- return assoc(key, val);
+ return (IPersistentMap)assoc(key, val);
}
-public virtual IPersistentMap assoc(Object key, Object val){
+public virtual Associative assoc(Object key, Object val){
return new Tail(key, val, _meta);
}
@@ -202,7 +202,7 @@ internal class Tail : PersistentListMap {
return new Link(key, val, this,_meta);
}
- override public IPersistentMap assoc(Object key, Object val)
+ override public Associative assoc(Object key, Object val)
{
if(equalKey(key,_key)) //replace
{
@@ -289,7 +289,7 @@ internal class Link : PersistentListMap {
return new Link(key,val,this,_meta);
}
- override public IPersistentMap assoc(Object key, Object val)
+ override public Associative assoc(Object key, Object val)
{
IMapEntry e = find(key);
if(e != null)
diff --git a/src/cli/runtime/PersistentTreeMap.cs b/src/cli/runtime/PersistentTreeMap.cs
index f82e59b2..b87e3754 100644
--- a/src/cli/runtime/PersistentTreeMap.cs
+++ b/src/cli/runtime/PersistentTreeMap.cs
@@ -69,7 +69,7 @@ public IPersistentMap assocEx(Object key,Object val){
return new PersistentTreeMap(comp, t.blacken(), _count + 1, _meta);
}
-public IPersistentMap assoc(Object key, Object val){
+public Associative assoc(Object key, Object val){
Box found = new Box(null);
Node t = add(tree, key, val, found);
if(t == null) //null == already contains key
diff --git a/src/cli/runtime/TObj.cs b/src/cli/runtime/TObj.cs
index a81fb4ef..0fe6b471 100644
--- a/src/cli/runtime/TObj.cs
+++ b/src/cli/runtime/TObj.cs
@@ -23,7 +23,7 @@ public TObj(){
public Object putAttr( Object key, Object val) {
IPersistentMap t = (IPersistentMap) Transaction.get( _attrs);
- t = t.assoc(key, val);
+ t = (IPersistentMap)t.assoc(key, val);
Transaction.set(_attrs,t);
return val;
}
diff --git a/src/cli/runtime/Var.cs b/src/cli/runtime/Var.cs
index 13d10034..cb0327e7 100644
--- a/src/cli/runtime/Var.cs
+++ b/src/cli/runtime/Var.cs
@@ -49,7 +49,7 @@ Binding getThreadBinding() {
if (b == null)
newtb = tb.without(thread);
else
- newtb = tb.assoc(thread, b);
+ newtb = (IPersistentMap)tb.assoc(thread, b);
} while (tb != Interlocked.CompareExchange(ref threadBindings, newtb, tb));
} public IFn fn(){ return (IFn)getValue(); } override public Object invoke(){
return fn().invoke();
diff --git a/src/jvm/clojure/lang/AnArray.java b/src/jvm/clojure/lang/AnArray.java
index 93ead181..f9eaa9f4 100644
--- a/src/jvm/clojure/lang/AnArray.java
+++ b/src/jvm/clojure/lang/AnArray.java
@@ -43,11 +43,11 @@ public IMapEntry find(Object key) {
return null;
}
-public IPersistentMap assoc(Object key, Object val) {
+public Associative assoc(Object key, Object val) {
if(key instanceof Number)
{
int i = ((Number)key).intValue();
- return (IPersistentMap) assocN(i,val);
+ return (Associative) assocN(i,val);
}
throw new IllegalAccessError("Key must be integer");
}
diff --git a/src/jvm/clojure/lang/Associative.java b/src/jvm/clojure/lang/Associative.java
index 160a357e..cab4f23a 100644
--- a/src/jvm/clojure/lang/Associative.java
+++ b/src/jvm/clojure/lang/Associative.java
@@ -14,7 +14,7 @@ boolean contains(Object key);
IMapEntry find(Object key);
-IPersistentMap assoc(Object key, Object val);
+Associative assoc(Object key, Object val);
Object get(Object key);
}
diff --git a/src/jvm/clojure/lang/IPersistentMap.java b/src/jvm/clojure/lang/IPersistentMap.java
index 0ada98dc..3a32b27a 100644
--- a/src/jvm/clojure/lang/IPersistentMap.java
+++ b/src/jvm/clojure/lang/IPersistentMap.java
@@ -14,6 +14,7 @@ package clojure.lang;
public interface IPersistentMap extends Iterable, IPersistentCollection, Associative {
+IPersistentMap assoc(Object key, Object val);
IPersistentMap assocEx(Object key, Object val) throws Exception;
IPersistentMap without(Object key);