mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 05:00:16 +03:00
68 lines
1.6 KiB
D
68 lines
1.6 KiB
D
// https://issues.dlang.org/show_bug.cgi?id=19482
|
|
|
|
alias AliasSeq(T...) = T;
|
|
|
|
extern (C++, "cppns")
|
|
@("asd", 123)
|
|
private
|
|
deprecated
|
|
immutable
|
|
static foreach (i; 0 .. 1)
|
|
{
|
|
static assert(is(typeof(i) == int));
|
|
static assert(__traits(getLinkage, i) == "D");
|
|
static assert(__traits(isDeprecated, i) == false);
|
|
static assert(__traits(getAttributes, i).length == 0);
|
|
static assert(__traits(getCppNamespaces, i).length == 0);
|
|
static assert(__traits(getVisibility, i) == "public");
|
|
|
|
extern int x;
|
|
static assert(is(typeof(x) == immutable int));
|
|
static assert(__traits(getLinkage, x) == "C++");
|
|
static assert(__traits(isDeprecated, x) == true);
|
|
static assert(__traits(getAttributes, x) == AliasSeq!("asd", 123));
|
|
static assert(__traits(getCppNamespaces, x) == AliasSeq!("cppns"));
|
|
static assert(__traits(getVisibility, x) == "private");
|
|
}
|
|
|
|
struct S
|
|
{
|
|
@disable static foreach (j; 0 .. 1)
|
|
{
|
|
int y;
|
|
static assert(__traits(isDisabled, j) == false);
|
|
static assert(__traits(isDisabled, S.y) == true);
|
|
}
|
|
}
|
|
|
|
const
|
|
static foreach (i, v; ['a'])
|
|
{
|
|
static assert(is(typeof(i) == size_t));
|
|
static assert(is(typeof(v) == char));
|
|
}
|
|
|
|
const
|
|
static foreach (i, s, f; Range())
|
|
{
|
|
static assert(is(typeof(i) == int));
|
|
static assert(is(typeof(s) == string));
|
|
static assert(is(typeof(f) == float));
|
|
}
|
|
|
|
struct Range
|
|
{
|
|
int i;
|
|
auto front()
|
|
{
|
|
return Tup!(int, string, float)(123, "asd", 3.14f);
|
|
}
|
|
bool empty() { return i > 0; }
|
|
void popFront() { ++i; }
|
|
}
|
|
|
|
struct Tup(T...)
|
|
{
|
|
T fields;
|
|
alias fields this;
|
|
}
|