| /* |
| RUN_OUTPUT: |
| --- |
| Success |
| --- |
| */ |
| |
| //import core.stdc.stdio; |
| extern(C) int printf(const char*, ...); |
| |
| template Tuple(A...) |
| { |
| alias A Tuple; |
| } |
| |
| template eval(A...) |
| { |
| const typeof(A[0]) eval = A[0]; |
| } |
| |
| /************************************************/ |
| |
| int foo1() |
| { |
| int x; |
| foreach (i; 0 .. 10) |
| x += i; |
| return x; |
| } |
| |
| int bar1() |
| { |
| int x; |
| foreach_reverse (i; 0 .. 10) |
| { |
| x <<= 1; |
| x += i; |
| } |
| return x; |
| } |
| |
| void test1() |
| { |
| const y = foo1(); |
| //writeln(y); |
| assert(y == 45); |
| |
| auto y1 = foo1(); |
| //writeln(y1); |
| assert(y1 == 45); |
| |
| const z = bar1(); |
| //writeln(z); |
| assert(z == 8194); |
| |
| auto z1 = bar1(); |
| //writeln(z1); |
| assert(z1 == 8194); |
| } |
| |
| /***** https://issues.dlang.org/show_bug.cgi?id=2850 *****/ |
| |
| /* These tests are not passing, and shouldn't pass. A non-first field in a union |
| being initialized cannot be converted to an expression, at least not until there are |
| improvements to StructLiterals. |
| */ |
| |
| version (none) |
| { |
| struct Bug2850 |
| { |
| union |
| { |
| int c; |
| double d; |
| } |
| int b; |
| int a; |
| } |
| |
| static assert(is(typeof( |
| () { enum Bug2850 w = {b:47, 714, d:4}; return w; } |
| ))); |
| static assert(is(typeof( |
| () { enum Bug2850 w = {b:47, d:4}; return w; } |
| ))); |
| // union not initialized |
| static assert(!is(typeof( |
| () { enum Bug2850 w = {b:47, 4}; return w; } |
| ))); |
| // initializers for two fields in same union |
| static assert(!is(typeof( |
| () { enum Bug2850 w = {b:47, 4, c:5, 9}; return w; } |
| ))); |
| |
| enum Bug2850 test2850 = {b:47, 714, d:23.1e-17}; |
| |
| struct Horrid2850 |
| { |
| union |
| { |
| int a; |
| int b; |
| struct |
| { |
| int c; |
| int d; |
| } |
| } |
| int f; |
| double q; |
| } |
| |
| enum Horrid2850 horrid2850 = {c:5,6}; |
| Horrid2850 m2850 = {47, f:6}; |
| Horrid2850 z2850 = {q:5, c:4, d:5}; |
| |
| static assert(!is(typeof( |
| () { enum Horrid2850 w = {c:47, d:5, a:7}; return w; } |
| ))); |
| |
| void test2() |
| { |
| assert(test2850.a == 714); |
| assert(test2850.b == 47); |
| assert(test2850.d == 23.1e-17); |
| assert(test2850.c != 0); |
| } |
| } |
| |
| /***** https://issues.dlang.org/show_bug.cgi?id=3779 *****/ |
| |
| static const bug3779 = ["123"][0][$-1]; |
| |
| /***** https://issues.dlang.org/show_bug.cgi?id=1880 *****/ |
| |
| |
| enum Property1880 {First=1,Second=2} |
| |
| struct CompileTimeCheck1880(Property1880 Prop) |
| { |
| alias Prop prop; |
| } |
| Property1880 junkprop1880; |
| static assert(!is(CompileTimeCheck1880!(junkprop1880))); |
| |
| int main() |
| { |
| test1(); |
| // test2(); |
| |
| printf("Success\n"); |
| return 0; |
| } |