blob: 09485a3098af34acfa04f3517f1f8d1315013894 [file] [log] [blame]
// 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;
}