diff options
Diffstat (limited to 'gcc/testsuite/gdc.test/runnable/nested.d')
-rw-r--r-- | gcc/testsuite/gdc.test/runnable/nested.d | 121 |
1 files changed, 91 insertions, 30 deletions
diff --git a/gcc/testsuite/gdc.test/runnable/nested.d b/gcc/testsuite/gdc.test/runnable/nested.d index 6b2fcb06ab2..4c99c59e8a9 100644 --- a/gcc/testsuite/gdc.test/runnable/nested.d +++ b/gcc/testsuite/gdc.test/runnable/nested.d @@ -863,8 +863,8 @@ class Foo35 //writefln("y = %s", y); assert(x == 42); assert(y == 43); - //static assert(is(typeof(this.outer) == void*)); // Bugzilla 14442 - static assert(is(typeof(this.outer) == Foo35)); // Bugzilla 15839 + //static assert(is(typeof(this.outer) == void*)); // https://issues.dlang.org/show_bug.cgi?id=14442 + static assert(is(typeof(this.outer) == Foo35)); // https://issues.dlang.org/show_bug.cgi?id=15839 } }; } @@ -1485,7 +1485,20 @@ void test55() } /*******************************************/ -// 4401 + +enum dg56 = delegate { return 5; }; + +void test56() +{ + auto inner() { + return dg56(); + } + + assert(inner() == 5); +} + +/*******************************************/ +// https://issues.dlang.org/show_bug.cgi?id=4401 void test4401() { @@ -1542,7 +1555,7 @@ void test7428(){ } /*******************************************/ -// 4612 +// https://issues.dlang.org/show_bug.cgi?id=4612 struct S4612a(alias x) { @@ -1604,7 +1617,7 @@ void test7199() } /*******************************************/ -// 7965 +// https://issues.dlang.org/show_bug.cgi?id=7965 void test7965() { @@ -1662,7 +1675,7 @@ void test7965a() } /*******************************************/ -// 8188 +// https://issues.dlang.org/show_bug.cgi?id=8188 mixin template Print8188(b...) { @@ -1687,7 +1700,7 @@ void test8188() } /*******************************************/ -// 5082 +// https://issues.dlang.org/show_bug.cgi?id=5082 struct S5082 { float x; } @@ -1714,7 +1727,7 @@ void test5082() /*******************************************/ -// 8194 +// https://issues.dlang.org/show_bug.cgi?id=8194 void test8194() { @@ -1727,7 +1740,7 @@ void test8194() } /*******************************************/ -// 8339 +// https://issues.dlang.org/show_bug.cgi?id=8339 template map8339a(fun...) { @@ -1822,7 +1835,7 @@ void test8339c() } /*******************************************/ -// 8704 +// https://issues.dlang.org/show_bug.cgi?id=8704 void check8704(T, int num)() { @@ -1849,7 +1862,7 @@ void test8704() } /*******************************************/ -// 8923 +// https://issues.dlang.org/show_bug.cgi?id=8923 void test8923a() { @@ -2029,7 +2042,7 @@ void test8923c() } /*******************************************/ -// 9003 +// https://issues.dlang.org/show_bug.cgi?id=9003 void test9003() { @@ -2072,7 +2085,7 @@ void test9003() } /*******************************************/ -// 9006 +// https://issues.dlang.org/show_bug.cgi?id=9006 void test9006() { @@ -2101,7 +2114,7 @@ void test9006() } /*******************************************/ -// 9035 +// https://issues.dlang.org/show_bug.cgi?id=9035 void test9035() { @@ -2144,7 +2157,7 @@ void test9035a() } /*******************************************/ -// 9036 +// https://issues.dlang.org/show_bug.cgi?id=9036 void test9036() { @@ -2201,7 +2214,7 @@ void test8863() +/ /*******************************************/ -// 8774 +// https://issues.dlang.org/show_bug.cgi?id=8774 void popFront8774() { @@ -2274,7 +2287,7 @@ void test8832() } /*******************************************/ -// 9315 +// https://issues.dlang.org/show_bug.cgi?id=9315 auto test9315() { @@ -2287,7 +2300,7 @@ auto test9315() } /*******************************************/ -// 9244 +// https://issues.dlang.org/show_bug.cgi?id=9244 void test9244() { @@ -2298,7 +2311,7 @@ void test9244() } /*******************************************/ -// 10495 +// https://issues.dlang.org/show_bug.cgi?id=10495 struct X10495 { @@ -2321,7 +2334,7 @@ class C10495 } /*******************************************/ -// 11385 +// https://issues.dlang.org/show_bug.cgi?id=11385 auto map11385(alias fun, R)(R range) { @@ -2354,6 +2367,12 @@ enum foo11297 = function (int x) xmap!(y => x)(7); }; +enum goo11297 = delegate (int x) + { + //int bar(int y) { return x; } xmap!bar(7); + xmap!(y => x)(7); + }; + void xreduce(alias f)() { f(4); @@ -2362,10 +2381,11 @@ void xreduce(alias f)() void test11297() { xreduce!foo11297(); + xreduce!goo11297(); } /*******************************************/ -// 11886 +// https://issues.dlang.org/show_bug.cgi?id=11886 struct Lambda11886(alias fun) { @@ -2388,7 +2408,7 @@ void test11886() } /*******************************************/ -// 12234 +// https://issues.dlang.org/show_bug.cgi?id=12234 void test12234() { @@ -2407,7 +2427,7 @@ void test12234() } /*******************************************/ -// 12981 +// https://issues.dlang.org/show_bug.cgi?id=12981 template Mix12981(T) { @@ -2425,7 +2445,7 @@ class B12981 } /*******************************************/ -// 13861 +// https://issues.dlang.org/show_bug.cgi?id=13861 struct Foo13861(alias f) { @@ -2444,7 +2464,7 @@ void test13861() } /*******************************************/ -// 14398 +// https://issues.dlang.org/show_bug.cgi?id=14398 void test14398() { @@ -2479,7 +2499,7 @@ void test14398() } /*******************************************/ -// 14846 +// https://issues.dlang.org/show_bug.cgi?id=14846 void foo14846(Dg)(scope Dg code) { @@ -2509,14 +2529,14 @@ void test14846() } /*******************************************/ -// 15422 +// https://issues.dlang.org/show_bug.cgi?id=15422 class App15422(T) { this() {} auto test1(T val) - in {} body // necessary to reproduce the crash + in {} do // necessary to reproduce the crash { struct Foo { @@ -2544,7 +2564,7 @@ class App15422(T) } auto test2(T val) - //in {} body + //in {} do { int closVar; struct Foo @@ -2662,7 +2682,7 @@ void test15422b() } /***************************************************/ -// 15757 +// https://issues.dlang.org/show_bug.cgi?id=15757 template map15757(fun...) { @@ -2703,6 +2723,45 @@ void test15757() @safe /***************************************************/ +// https://issues.dlang.org/show_bug.cgi?id=19384 + +struct Vec +{ + uint item; + + ref uint august() return + { + return item; + // commenting next line removes bug + foreach(ref val; range()) return val; + assert(false); + } + + uint* august2() return + { + return &item; + foreach(ref val; range()) return &val; + assert(false); + } +} + +struct range +{ + int opApply(scope int delegate(ref uint) dg) { return 0; } +} + +void test19384() +{ + Vec preds = Vec(0xDEAD); + void* ptr2 = &preds.august(); + void* ptr3 = preds.august2(); + assert(&preds == ptr2); + assert(&preds == ptr3); +} + + +/***************************************************/ + int main() { test1(); @@ -2760,6 +2819,7 @@ int main() test53(); test54(); test55(); + test56(); test4401(); test7428(); test4612(); @@ -2797,6 +2857,7 @@ int main() test15422a(); test15422b(); test15757(); + test19384(); printf("Success\n"); return 0; |