Work around 2.086 bugs

This commit is contained in:
2019-08-28 20:50:15 +02:00
parent 0a973b46ba
commit c69282a8df
7 changed files with 25 additions and 41 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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.