Add support for dmd 2.076.0
This commit is contained in:
parent
617eaab9a2
commit
515bf619e8
@ -7,6 +7,7 @@ os:
|
|||||||
language: d
|
language: d
|
||||||
|
|
||||||
d:
|
d:
|
||||||
|
- dmd-2.076.0
|
||||||
- dmd-2.075.1
|
- dmd-2.075.1
|
||||||
- dmd-2.074.1
|
- dmd-2.074.1
|
||||||
- dmd-2.073.2
|
- dmd-2.073.2
|
||||||
@ -22,7 +23,7 @@ addons:
|
|||||||
- gcc-multilib
|
- gcc-multilib
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- if [ "$PS1" = '(dmd-2.075.1)' ]; then
|
- if [ "$PS1" = '(dmd-2.076.0)' ]; then
|
||||||
export UNITTEST="unittest-cov";
|
export UNITTEST="unittest-cov";
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -3,6 +3,12 @@ os: Visual Studio 2015
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
matrix:
|
matrix:
|
||||||
|
- DC: dmd
|
||||||
|
DVersion: 2.076.0
|
||||||
|
arch: x64
|
||||||
|
- DC: dmd
|
||||||
|
DVersion: 2.076.0
|
||||||
|
arch: x86
|
||||||
- DC: dmd
|
- DC: dmd
|
||||||
DVersion: 2.075.1
|
DVersion: 2.075.1
|
||||||
arch: x64
|
arch: x64
|
||||||
|
@ -209,6 +209,23 @@ pure nothrow @safe @nogc unittest
|
|||||||
static assert(sizeOf!(void[16]) == 16);
|
static assert(sizeOf!(void[16]) == 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the alignment of the type $(D_PARAM T).
|
||||||
|
*
|
||||||
|
* Params:
|
||||||
|
* T = A type.
|
||||||
|
*
|
||||||
|
* Returns: Alignment of the type $(D_PARAM T).
|
||||||
|
*/
|
||||||
|
enum size_t alignOf(T) = T.alignof;
|
||||||
|
|
||||||
|
///
|
||||||
|
pure nothrow @safe @nogc unittest
|
||||||
|
{
|
||||||
|
static assert(alignOf!bool == bool.alignof);
|
||||||
|
static assert(is(typeof(alignOf!bool) == typeof(bool.alignof)));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests whether $(D_INLINECODE Args[0]) and $(D_INLINECODE Args[1]) are the
|
* Tests whether $(D_INLINECODE Args[0]) and $(D_INLINECODE Args[1]) are the
|
||||||
* same symbol.
|
* same symbol.
|
||||||
@ -396,7 +413,8 @@ version (TanyaPhobos)
|
|||||||
hasElaborateDestructor,
|
hasElaborateDestructor,
|
||||||
hasElaborateCopyConstructor,
|
hasElaborateCopyConstructor,
|
||||||
hasElaborateAssign,
|
hasElaborateAssign,
|
||||||
EnumMembers;
|
EnumMembers,
|
||||||
|
classInstanceAlignment;
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
|
|
||||||
@ -2627,3 +2645,43 @@ pure nothrow @nogc @safe unittest
|
|||||||
}
|
}
|
||||||
static assert([E.one, E.two, E.three] == [ EnumMembers!E ]);
|
static assert([E.one, E.two, E.three] == [ EnumMembers!E ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Different than $(D_INLINECODE T.alignof), which is the same for all class
|
||||||
|
* types, $(D_PSYMBOL classInstanceOf) determines the alignment of the class
|
||||||
|
* instance and not of its reference.
|
||||||
|
*
|
||||||
|
* Params:
|
||||||
|
* T = A class.
|
||||||
|
*
|
||||||
|
* Returns: Alignment of an instance of the class $(D_PARAM T).
|
||||||
|
*/
|
||||||
|
template classInstanceAlignment(T)
|
||||||
|
if (is(T == class))
|
||||||
|
{
|
||||||
|
private enum ptrdiff_t pred(U1, U2) = U1.alignof - U2.alignof;
|
||||||
|
private alias Fields = typeof(T.tupleof);
|
||||||
|
enum size_t classInstanceAlignment = Max!(pred, T, Fields).alignof;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
pure nothrow @safe @nogc unittest
|
||||||
|
{
|
||||||
|
class C1
|
||||||
|
{
|
||||||
|
}
|
||||||
|
static assert(classInstanceAlignment!C1 == C1.alignof);
|
||||||
|
|
||||||
|
struct S
|
||||||
|
{
|
||||||
|
align(8)
|
||||||
|
uint s;
|
||||||
|
|
||||||
|
int i;
|
||||||
|
}
|
||||||
|
class C2
|
||||||
|
{
|
||||||
|
S s;
|
||||||
|
}
|
||||||
|
static assert(classInstanceAlignment!C2 == S.alignof);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user