Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 396a0ec

Browse files
authored
Merge pull request #2742 from TurkeyMan/move_some_trsits
Move some traits to druntime merged-on-behalf-of: Nicholas Wilson <thewilsonator@users.noreply.github.com>
2 parents 32207ba + 52894b5 commit 396a0ec

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/core/internal/traits.d

+14-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ template Unqual(T)
6666
}
6767

6868
// [For internal use]
69-
package template ModifyTypePreservingTQ(alias Modifier, T)
69+
template ModifyTypePreservingTQ(alias Modifier, T)
7070
{
7171
static if (is(T U == immutable U)) alias ModifyTypePreservingTQ = immutable Modifier!U;
7272
else static if (is(T U == shared inout const U)) alias ModifyTypePreservingTQ = shared inout const Modifier!U;
@@ -78,6 +78,19 @@ package template ModifyTypePreservingTQ(alias Modifier, T)
7878
else static if (is(T U == const U)) alias ModifyTypePreservingTQ = const Modifier!U;
7979
else alias ModifyTypePreservingTQ = Modifier!T;
8080
}
81+
@safe unittest
82+
{
83+
alias Intify(T) = int;
84+
static assert(is(ModifyTypePreservingTQ!(Intify, real) == int));
85+
static assert(is(ModifyTypePreservingTQ!(Intify, const real) == const int));
86+
static assert(is(ModifyTypePreservingTQ!(Intify, inout real) == inout int));
87+
static assert(is(ModifyTypePreservingTQ!(Intify, inout const real) == inout const int));
88+
static assert(is(ModifyTypePreservingTQ!(Intify, shared real) == shared int));
89+
static assert(is(ModifyTypePreservingTQ!(Intify, shared const real) == shared const int));
90+
static assert(is(ModifyTypePreservingTQ!(Intify, shared inout real) == shared inout int));
91+
static assert(is(ModifyTypePreservingTQ!(Intify, shared inout const real) == shared inout const int));
92+
static assert(is(ModifyTypePreservingTQ!(Intify, immutable real) == immutable int));
93+
}
8194

8295
// Substitute all `inout` qualifiers that appears in T to `const`
8396
template substInout(T)

0 commit comments

Comments
 (0)