summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/tanya/container/array.d11
-rw-r--r--source/tanya/container/entry.d2
-rw-r--r--source/tanya/container/list.d10
3 files changed, 15 insertions, 8 deletions
diff --git a/source/tanya/container/array.d b/source/tanya/container/array.d
index 872d55e..8e4a878 100644
--- a/source/tanya/container/array.d
+++ b/source/tanya/container/array.d
@@ -306,8 +306,13 @@ struct Array(T)
*/
~this()
{
- clear();
- (() @trusted => allocator.deallocate(slice(capacity)))();
+ destroyAll(slice(this.length_));
+ deallocate();
+ }
+
+ private void deallocate() @trusted
+ {
+ allocator.deallocate(slice(capacity));
}
static if (isCopyable!T)
@@ -456,7 +461,7 @@ struct Array(T)
destroy(*src);
}
}
- allocator.deallocate(this.data[0 .. this.capacity_]);
+ deallocate();
this.data = cast(T*) buf;
}
this.capacity_ = size;
diff --git a/source/tanya/container/entry.d b/source/tanya/container/entry.d
index cc434b8..6fd23de 100644
--- a/source/tanya/container/entry.d
+++ b/source/tanya/container/entry.d
@@ -116,7 +116,7 @@ package static immutable size_t[33] primes = [
805306457, 1610612741, 3221225473
];
-package struct HashArray(alias hasher, K, V = void)
+package(tanya.container) struct HashArray(alias hasher, K, V = void)
{
alias Key = K;
alias Value = V;
diff --git a/source/tanya/container/list.d b/source/tanya/container/list.d
index 31ddfd5..20da47e 100644
--- a/source/tanya/container/list.d
+++ b/source/tanya/container/list.d
@@ -978,10 +978,12 @@ struct DList(T)
// 0th and the last elements of the list.
private Entry* head, tail;
- invariant ((this.tail is null && this.head is null)
- || (this.tail !is null && this.head !is null));
- invariant (this.tail is null || this.tail.next is null);
- invariant (this.head is null || this.head.prev is null);
+ static if (__VERSION__ < 2086) // Bug #20171.
+ {
+ invariant ((this.tail is null) == (this.head is null));
+ invariant (this.tail is null || this.tail.next is null);
+ invariant (this.head is null || this.head.prev is null);
+ }
/**
* Creates a new $(D_PSYMBOL DList) with the elements from a static array.