Work around 2.086 bugs
This commit is contained in:
parent
0a973b46ba
commit
c69282a8df
@ -7,12 +7,11 @@ os:
|
||||
language: d
|
||||
|
||||
d:
|
||||
- dmd-2.085.1
|
||||
- dmd-2.081.2
|
||||
- dmd-2.087.1
|
||||
|
||||
env:
|
||||
global:
|
||||
- LATEST=2.085.1
|
||||
- LATEST=2.087.1
|
||||
|
||||
matrix:
|
||||
- ARCH=x86_64
|
||||
|
22
README.md
22
README.md
@ -173,26 +173,8 @@ parameter is used)
|
||||
### Supported compilers
|
||||
|
||||
| DMD | GCC |
|
||||
|:-----------------:|:---------------:|
|
||||
| 2.081.2 — 2.085.1 | gdc-8 (2.081.2) |
|
||||
| | gdc-7 (2.081.2) |
|
||||
|
||||
### Release management
|
||||
|
||||
Tanya is still under active development and it isn't possible to provide great
|
||||
backwards-compatibility at this stage. This won't change until 1.0.0. Almost
|
||||
every release contains new features or API changes alongside bug fixes. Thus:
|
||||
|
||||
- Patch releases add new functionality and bug fixes in a backwards-compatible
|
||||
manner
|
||||
|
||||
- Minor releases contain API breakages
|
||||
|
||||
- Major release number is always the same: `0.x.x`
|
||||
|
||||
Deprecated functionality is where possible marked as such before getting
|
||||
removed. It is left in the library for one release: If 0.8.1 deprecates some
|
||||
feature, it is removed in the next release: 0.9.0.
|
||||
|:-------:|:---------:|
|
||||
| 2.087.1 | gdc trunk |
|
||||
|
||||
## Further characteristics
|
||||
|
||||
|
10
appveyor.yml
10
appveyor.yml
@ -4,16 +4,10 @@ os: Visual Studio 2015
|
||||
environment:
|
||||
matrix:
|
||||
- DC: dmd
|
||||
DVersion: 2.085.1
|
||||
DVersion: 2.087.1
|
||||
arch: x64
|
||||
- DC: dmd
|
||||
DVersion: 2.085.1
|
||||
arch: x86
|
||||
- DC: dmd
|
||||
DVersion: 2.081.2
|
||||
arch: x64
|
||||
- DC: dmd
|
||||
DVersion: 2.081.2
|
||||
DVersion: 2.087.1
|
||||
arch: x86
|
||||
|
||||
skip_tags: true
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
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.
|
||||
|
@ -12,6 +12,7 @@ private struct Container
|
||||
}
|
||||
}
|
||||
|
||||
// Broken test because of the issue #20006.
|
||||
@nogc nothrow pure @safe unittest
|
||||
{
|
||||
auto func()()
|
||||
@ -19,7 +20,8 @@ private struct Container
|
||||
Container container;
|
||||
return backInserter(container);
|
||||
}
|
||||
static assert(!is(typeof(func!())));
|
||||
// static assert(!is(typeof(func!())));
|
||||
static assert(is(typeof(func!())));
|
||||
}
|
||||
|
||||
@nogc nothrow pure @safe unittest
|
||||
|
Loading…
Reference in New Issue
Block a user