diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/PersistentArrayMap.java | 8 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentHashMap.java | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentTreeMap.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentTreeSet.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentVector.java | 4 |
5 files changed, 11 insertions, 9 deletions
diff --git a/src/jvm/clojure/lang/PersistentArrayMap.java b/src/jvm/clojure/lang/PersistentArrayMap.java index 7b7eda58..75ebe964 100644 --- a/src/jvm/clojure/lang/PersistentArrayMap.java +++ b/src/jvm/clojure/lang/PersistentArrayMap.java @@ -269,7 +269,7 @@ public ITransientMap asTransient(){ static final class TransientArrayMap extends ATransientMap { int len; final Object[] array; - final Thread owner; + Thread owner; public TransientArrayMap(Object[] array){ this.owner = Thread.currentThread(); @@ -330,6 +330,8 @@ static final class TransientArrayMap extends ATransientMap { } IPersistentMap doPersistent(){ + ensureEditable(); + owner = null; Object[] a = new Object[len]; System.arraycopy(array,0,a,0,len); return new PersistentArrayMap(a); @@ -339,8 +341,8 @@ static final class TransientArrayMap extends ATransientMap { if(owner == Thread.currentThread()) return; if(owner != null) - throw new IllegalAccessError("Mutable used by non-owner thread"); - throw new IllegalAccessError("Mutable used after immutable call"); + throw new IllegalAccessError("Transient used by non-owner thread"); + throw new IllegalAccessError("Transient used after persistent! call"); } } } diff --git a/src/jvm/clojure/lang/PersistentHashMap.java b/src/jvm/clojure/lang/PersistentHashMap.java index 5f5f5404..1f223e61 100644 --- a/src/jvm/clojure/lang/PersistentHashMap.java +++ b/src/jvm/clojure/lang/PersistentHashMap.java @@ -270,8 +270,8 @@ static final class TransientHashMap extends ATransientMap { if(owner == Thread.currentThread()) return; if(owner != null) - throw new IllegalAccessError("Mutable used by non-owner thread"); - throw new IllegalAccessError("Mutable used after immutable call"); + throw new IllegalAccessError("Transient used by non-owner thread"); + throw new IllegalAccessError("Transient used after persistent! call"); } } diff --git a/src/jvm/clojure/lang/PersistentTreeMap.java b/src/jvm/clojure/lang/PersistentTreeMap.java index 5a5a9bee..d69952b9 100644 --- a/src/jvm/clojure/lang/PersistentTreeMap.java +++ b/src/jvm/clojure/lang/PersistentTreeMap.java @@ -137,7 +137,7 @@ public ISeq seq(){ } public IPersistentCollection empty(){ - return EMPTY.withMeta(meta()); + return new PersistentTreeMap(meta(), comp); } public ISeq rseq() throws Exception{ diff --git a/src/jvm/clojure/lang/PersistentTreeSet.java b/src/jvm/clojure/lang/PersistentTreeSet.java index d0f15d57..22979f11 100644 --- a/src/jvm/clojure/lang/PersistentTreeSet.java +++ b/src/jvm/clojure/lang/PersistentTreeSet.java @@ -53,7 +53,7 @@ public IPersistentSet cons(Object o){ } public IPersistentCollection empty(){ - return EMPTY.withMeta(meta()); + return new PersistentTreeSet(meta(),(PersistentTreeMap)impl.empty()); } public ISeq rseq() throws Exception{ diff --git a/src/jvm/clojure/lang/PersistentVector.java b/src/jvm/clojure/lang/PersistentVector.java index 2d55e2e8..392599c9 100644 --- a/src/jvm/clojure/lang/PersistentVector.java +++ b/src/jvm/clojure/lang/PersistentVector.java @@ -402,8 +402,8 @@ static final class TransientVector extends AFn implements ITransientVector, Coun if(owner == Thread.currentThread()) return; if(owner != null) - throw new IllegalAccessError("Mutable used by non-owner thread"); - throw new IllegalAccessError("Mutable used after immutable call"); + throw new IllegalAccessError("Transient used by non-owner thread"); + throw new IllegalAccessError("Transient used after persistent! call"); // root = editableRoot(root); // tail = editableTail(tail); |