Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gdc.dg/runnable2.d @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 2b5abeee2509 |
children |
line wrap: on
line source
// { dg-do run { target { hw && d_runtime_has_std_library } } } module runnable; import core.stdc.stdio; import gcc.attribute; /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=2 struct S { string toString() { return "foo"; } } void test2() { import std.string : format; assert(format("%s", S()) == "foo"); } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=15 class B { class A { } A a; } class C { void visit(B b) { import std.algorithm : map; auto as = [b.a]; as.map!(d => d); } } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=16 void test16() { import std.parallelism : taskPool; taskPool.reduce!"a+b"([0, 1, 2, 3]); } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=18 class C18 { struct Link { int x; int y; } void sort_links() { import std.algorithm : sort; import std.array : empty; import std.exception : enforce; enforce(!_link.empty); bool lt(Link a, Link b) { if(a.x > b.x) return false; if(a.x < b.x) return true; if(a.y >= b.y) return false; else return true; } sort!(lt)(_link); } this() { _link ~= Link(8, 3); _link ~= Link(4, 7); _link ~= Link(4, 6); _link ~= Link(3, 7); _link ~= Link(2, 7); _link ~= Link(2, 2); _link ~= Link(4, 1); } Link[] _link; } void test18() { C18 foo = new C18; foo.sort_links(); } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=29 void test29() { import std.string : format; import std.conv : text; string s; for (auto i = 0; i < 100000; i++) { s = format("%d", i); s = text(i); } } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=52 class C52 { C52 a; this() { printf("Construct: this=%p\n", cast(void*)this); a = this; } bool check() { printf("Check: this=%p a=%p\n", cast(void*)this, cast(void*)a); return this is a; } } auto test52a() { import std.conv, std.traits; struct Scoped { void[__traits (classInstanceSize, C52) ] Scoped_store = void; inout(C52) Scoped_payload() inout { void* alignedStore = cast(void*) Scoped_store.ptr; return cast(inout (C52)) alignedStore; } alias Scoped_payload this; } Scoped result; emplace!(Unqual!C52)(result.Scoped_store); assert(result.Scoped_payload().check); return result; } void test52() { auto a1 = test52a(); assert(a1.Scoped_payload().check); } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=71 struct Leaf { ubyte symbol; ubyte codeLen; } struct CanonicalHuffman { Leaf[] table; void print() { import std.algorithm; import std.range; auto list = zip(iota(table.length), table.dup).array .sort!((a, b) => a[1].symbol < b[1].symbol) .uniq!((a, b) => (a[0] & (1 << a[1].codeLen) - 1) == (b[0] & (1 << b[1].codeLen) - 1)); } } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=77 void fun(ubyte[3] buf) { import std.bitmanip : bigEndianToNative; bigEndianToNative!ushort(buf[0..2]); } void test77() { fun([1,2,3]); } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=108 @attribute("forceinline") void test108() { import std.stdio : writeln; writeln("Here"); } /******************************************/ // https://bugzilla.gdcproject.org/show_bug.cgi?id=122 void test122() { import std.algorithm : map; import std.parallelism : taskPool; import std.range : iota; immutable n = 10000; enum delta = 1.0 / n; // XBUG: was 'immutable delta' https://issues.dlang.org/show_bug.cgi?id=17092 immutable pi = 4.0 * delta * taskPool.reduce!"a + b"( map!((int i) { immutable x = (i - 0.5) * delta; return 1.0 / (1.0 + x * x); })(iota(n))); } /******************************************/ void main() { test2(); test16(); test18(); test52(); test77(); test108(); printf("Success!\n"); }