diff options
Diffstat (limited to 'gcc/testsuite/gdc.test/compilable')
137 files changed, 447 insertions, 158 deletions
diff --git a/gcc/testsuite/gdc.test/compilable/Test16206.d b/gcc/testsuite/gdc.test/compilable/Test16206.d index 0b9ccf3..c52c710 100644 --- a/gcc/testsuite/gdc.test/compilable/Test16206.d +++ b/gcc/testsuite/gdc.test/compilable/Test16206.d @@ -25,4 +25,4 @@ static assert(S.foo!([]) == 0); alias fooFuns = AliasSeq!(__traits(getOverloads, S, "foo")); static assert(fooFuns.length == 1); -static assert(fooFuns[0]("") == 2);
\ No newline at end of file +static assert(fooFuns[0]("") == 2); diff --git a/gcc/testsuite/gdc.test/compilable/aliasassign.d b/gcc/testsuite/gdc.test/compilable/aliasassign.d index e355e49..a29836e 100644 --- a/gcc/testsuite/gdc.test/compilable/aliasassign.d +++ b/gcc/testsuite/gdc.test/compilable/aliasassign.d @@ -38,4 +38,3 @@ alias TK2 = reverse!(int, const uint, X2); static assert(TK2[0] == 3); static assert(is(TK2[1] == const(uint))); static assert(is(TK2[2] == int)); - diff --git a/gcc/testsuite/gdc.test/compilable/art4769.d b/gcc/testsuite/gdc.test/compilable/art4769.d index dfffe77..0629606 100644 --- a/gcc/testsuite/gdc.test/compilable/art4769.d +++ b/gcc/testsuite/gdc.test/compilable/art4769.d @@ -16,4 +16,3 @@ struct Vector(T) { } } - diff --git a/gcc/testsuite/gdc.test/compilable/b21285.d b/gcc/testsuite/gdc.test/compilable/b21285.d index 482faa7..fb14fee 100644 --- a/gcc/testsuite/gdc.test/compilable/b21285.d +++ b/gcc/testsuite/gdc.test/compilable/b21285.d @@ -1,4 +1,5 @@ // REQUIRED_ARGS: -unittest +// PERMUTE_ARGS: -preview=dip1000 // Issue 21285 - Delegate covariance broken between 2.092 and 2.094 (git master). unittest { @@ -25,3 +26,36 @@ unittest static assert(is(typeof(a[0]) == dg)); static assert(is(typeof(ab[0]) == fn)); } + +int f(string s) { throw new Exception(""); } +void main() +{ + string path; + int bank, preset; + void delegate(string value)[string] aa = [ + "path": (string arg) { + path = arg; + }, + "bank": (string arg) { + bank = f(arg); + }, + "preset": (string arg) { + preset = f(arg); + }, + ]; + + string delegate(string value)[string] aa2 = [ + "path": (string arg) { + path = arg; + return arg; + }, + "bank": (string arg) { + bank = f(arg); + return arg; + }, + "preset": (string arg) { + preset = f(arg); + return arg; + }, + ]; +} diff --git a/gcc/testsuite/gdc.test/compilable/b33.d b/gcc/testsuite/gdc.test/compilable/b33.d index cba6fe2..72452b6 100644 --- a/gcc/testsuite/gdc.test/compilable/b33.d +++ b/gcc/testsuite/gdc.test/compilable/b33.d @@ -9,4 +9,3 @@ size_t fn() { return find( "123" ); } - diff --git a/gcc/testsuite/gdc.test/compilable/b6395.d b/gcc/testsuite/gdc.test/compilable/b6395.d index 94f4bc3..3910ffa 100644 --- a/gcc/testsuite/gdc.test/compilable/b6395.d +++ b/gcc/testsuite/gdc.test/compilable/b6395.d @@ -22,4 +22,3 @@ void applyNoRemoveRegex() auto a = find!((a){return match(e);})(map!regex(noRemoveStr)); } } - diff --git a/gcc/testsuite/gdc.test/compilable/b9490.d b/gcc/testsuite/gdc.test/compilable/b9490.d index d0148b1..433163d 100644 --- a/gcc/testsuite/gdc.test/compilable/b9490.d +++ b/gcc/testsuite/gdc.test/compilable/b9490.d @@ -36,4 +36,3 @@ void main() f(s1.s.tupleof); // OK f((s1.s).tupleof); // Error: need 'this' to access member s } - diff --git a/gcc/testsuite/gdc.test/compilable/betterCarray.d b/gcc/testsuite/gdc.test/compilable/betterCarray.d index 3f48b04..3e9a881 100644 --- a/gcc/testsuite/gdc.test/compilable/betterCarray.d +++ b/gcc/testsuite/gdc.test/compilable/betterCarray.d @@ -4,7 +4,8 @@ import core.stdc.stdio; -extern (C) int main(char** argv, int argc) { +extern (C) int main() +{ printf("hello world\n"); int[3] a; foo(a[], 3); diff --git a/gcc/testsuite/gdc.test/compilable/betterCswitch.d b/gcc/testsuite/gdc.test/compilable/betterCswitch.d index ab0fb0a..a140ea9 100644 --- a/gcc/testsuite/gdc.test/compilable/betterCswitch.d +++ b/gcc/testsuite/gdc.test/compilable/betterCswitch.d @@ -1,6 +1,7 @@ import core.stdc.stdio; -extern (C) int main(char** argv, int argc) { +extern (C) int main() +{ printf("hello world\n"); foo(3); return 0; diff --git a/gcc/testsuite/gdc.test/compilable/ccompile.d b/gcc/testsuite/gdc.test/compilable/ccompile.d index 22c749c..cb6e3de 100644 --- a/gcc/testsuite/gdc.test/compilable/ccompile.d +++ b/gcc/testsuite/gdc.test/compilable/ccompile.d @@ -32,5 +32,3 @@ void funchds(char *p_adults) } } } - - diff --git a/gcc/testsuite/gdc.test/compilable/cdcmp.d b/gcc/testsuite/gdc.test/compilable/cdcmp.d index 4248818..305f097b 100644 --- a/gcc/testsuite/gdc.test/compilable/cdcmp.d +++ b/gcc/testsuite/gdc.test/compilable/cdcmp.d @@ -145,4 +145,3 @@ bool test_eq(double x, double y) { return x == y; } bool test_ne(double x, double y) { return x != y; } bool test_ge(double x, double y) { return x >= y; } bool test_gt(double x, double y) { return x > y; } - diff --git a/gcc/testsuite/gdc.test/compilable/const.d b/gcc/testsuite/gdc.test/compilable/const.d index 9b97037..dc3d471 100644 --- a/gcc/testsuite/gdc.test/compilable/const.d +++ b/gcc/testsuite/gdc.test/compilable/const.d @@ -37,5 +37,3 @@ static assert(6.0 % 4.0 == 2); static assert(6.0i % 2.0i == 0); static assert(6.0i % 3.0i == 0); static assert(6.0i % 4.0i == 2i); - - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc1.d b/gcc/testsuite/gdc.test/compilable/ddoc1.d index 23e721d..0a27eda 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc1.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc1.d @@ -47,7 +47,7 @@ wchar YY; /// ditto * argulid = the argument * u = the other argument */ -int foo(char c, int argulid, char u); +int foo(char c, int argulid, char u = '\'', wchar v = '\u7233', dchar y = '\U00017233'); int barr() { return 3; } /// doc for barr() diff --git a/gcc/testsuite/gdc.test/compilable/ddoc11.d b/gcc/testsuite/gdc.test/compilable/ddoc11.d index 0082455..683cd5f 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc11.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc11.d @@ -62,8 +62,3 @@ private: void test1() { } - - - - - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc12706.d b/gcc/testsuite/gdc.test/compilable/ddoc12706.d index a19ba21..a0c9b3f 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc12706.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc12706.d @@ -6,4 +6,3 @@ void test()(string[] args) if (args[$]) { } - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc12745.d b/gcc/testsuite/gdc.test/compilable/ddoc12745.d index a2cf74b..c4bd7fb 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc12745.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc12745.d @@ -22,4 +22,4 @@ $(BR) 1__a $(BR) 2__b */ -int i;
\ No newline at end of file +int i; diff --git a/gcc/testsuite/gdc.test/compilable/ddoc13.d b/gcc/testsuite/gdc.test/compilable/ddoc13.d index 9985bb0..cc69a25 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc13.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc13.d @@ -23,4 +23,3 @@ struct Bug4107b(T) { } } } - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc14.d b/gcc/testsuite/gdc.test/compilable/ddoc14.d index fae99d4..ed71d05 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc14.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc14.d @@ -92,6 +92,3 @@ pure nothrow auto mAutoPrefix(ref P p) { return p; } /// 7 auto mAutoTemplateSuffix(alias T)(ref T t) pure nothrow { return p; } /// 9 pure nothrow: V mColon(lazy P p) {} /// 10 - - - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc2.d b/gcc/testsuite/gdc.test/compilable/ddoc2.d index 2a7e457..5a56141 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc2.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc2.d @@ -39,4 +39,3 @@ class StreamException: Exception { /********** stars ***************/ int stars; } - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc2273.d b/gcc/testsuite/gdc.test/compilable/ddoc2273.d index ec3b74a..4a1b075 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc2273.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc2273.d @@ -34,4 +34,3 @@ template staticIndexOf(T, TList...) { alias int staticIndexOf; } alias staticIndexOf IndexOf; void main() { } - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc3.d b/gcc/testsuite/gdc.test/compilable/ddoc3.d index 3b47497..ad4c214 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc3.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc3.d @@ -68,4 +68,3 @@ class StreamException: Exception { /********** stars ***************/ int stars; } - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc5.d b/gcc/testsuite/gdc.test/compilable/ddoc5.d index 5a964f3..d0b5655 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc5.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc5.d @@ -28,4 +28,3 @@ class TestMembers(TemplateArg) void main() { } - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc6.d b/gcc/testsuite/gdc.test/compilable/ddoc6.d index 69bd64a..a229dc5 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc6.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc6.d @@ -22,4 +22,3 @@ void main() C:\code\d\bugs>dmd -D -o- 148_1.d 148_1.d(6): Error: static if conditional cannot be at global scope +/ - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc6491.d b/gcc/testsuite/gdc.test/compilable/ddoc6491.d index 5fe37a3..cf93399 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc6491.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc6491.d @@ -10,5 +10,3 @@ enum int c6491 = 4; /// test void bug6491a(int a = ddoc6491.c6491, string b = core.cpuid.vendor); - - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc7.d b/gcc/testsuite/gdc.test/compilable/ddoc7.d index 9c28d1b..eba3680 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc7.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc7.d @@ -56,4 +56,3 @@ class C /// Some doc abstract void foo(); } - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc9369.d b/gcc/testsuite/gdc.test/compilable/ddoc9369.d index ba44891..30b4c11 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc9369.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc9369.d @@ -13,6 +13,3 @@ writeln(&a); --- */ void foo() { } - - - diff --git a/gcc/testsuite/gdc.test/compilable/ddoc9475.d b/gcc/testsuite/gdc.test/compilable/ddoc9475.d index 262fa7d..396bdb1 100644 --- a/gcc/testsuite/gdc.test/compilable/ddoc9475.d +++ b/gcc/testsuite/gdc.test/compilable/ddoc9475.d @@ -26,4 +26,3 @@ unittest { // bar comment } - diff --git a/gcc/testsuite/gdc.test/compilable/dtoh_AnonDeclaration.d b/gcc/testsuite/gdc.test/compilable/dtoh_AnonDeclaration.d index bcf5558..9d68631 100644 --- a/gcc/testsuite/gdc.test/compilable/dtoh_AnonDeclaration.d +++ b/gcc/testsuite/gdc.test/compilable/dtoh_AnonDeclaration.d @@ -50,7 +50,6 @@ struct S final { int32_t y; double z; - extern "C" void foo(); void bar(); }; struct diff --git a/gcc/testsuite/gdc.test/compilable/dtoh_ClassDeclaration.d b/gcc/testsuite/gdc.test/compilable/dtoh_ClassDeclaration.d index 6274e9f..4f13d2b 100644 --- a/gcc/testsuite/gdc.test/compilable/dtoh_ClassDeclaration.d +++ b/gcc/testsuite/gdc.test/compilable/dtoh_ClassDeclaration.d @@ -82,7 +82,9 @@ public: int32_t a; C* c; virtual void foo(); - extern "C" virtual void bar(); +private: + virtual void __vtable_slot_0(); +public: virtual void baz(int32_t x = 42); struct { @@ -116,7 +118,7 @@ public: { public: int32_t x; - A* this; + A* outer; }; typedef Inner I; @@ -146,8 +148,8 @@ public: class Parent { - virtual void __vtable_slot_0(); virtual void __vtable_slot_1(); + virtual void __vtable_slot_2(); public: virtual void foo(); }; diff --git a/gcc/testsuite/gdc.test/compilable/dtoh_StructDeclaration.d b/gcc/testsuite/gdc.test/compilable/dtoh_StructDeclaration.d index 2d48999..4d56c7c 100644 --- a/gcc/testsuite/gdc.test/compilable/dtoh_StructDeclaration.d +++ b/gcc/testsuite/gdc.test/compilable/dtoh_StructDeclaration.d @@ -45,6 +45,9 @@ struct S final int32_t b; int64_t c; _d_dynamicArray< int32_t > arr; +private: + ~S(); +public: S() : a(), b(), @@ -81,7 +84,6 @@ struct S3 final int32_t a; int32_t b; int64_t c; - extern "C" S3(int32_t a); S3() : a(42), b(), @@ -143,7 +145,6 @@ struct A final { int32_t a; S s; - extern "C" void bar(); void baz(int32_t x = 42); struct { @@ -232,6 +233,7 @@ extern (C++) struct S int b; long c; int[] arr; + extern(D) ~this() {} } extern (C++) struct S2 diff --git a/gcc/testsuite/gdc.test/compilable/dtoh_VarDeclaration.d b/gcc/testsuite/gdc.test/compilable/dtoh_VarDeclaration.d index f9e57f9..7356ba3 100644 --- a/gcc/testsuite/gdc.test/compilable/dtoh_VarDeclaration.d +++ b/gcc/testsuite/gdc.test/compilable/dtoh_VarDeclaration.d @@ -39,7 +39,7 @@ struct _d_dynamicArray final }; #endif #if !defined(_d_real) -# define _d_real long double +#define _d_real long double #endif extern "C" int32_t z; diff --git a/gcc/testsuite/gdc.test/compilable/dtoh_extern_type.d b/gcc/testsuite/gdc.test/compilable/dtoh_extern_type.d index 91641a6..0426a5e 100644 --- a/gcc/testsuite/gdc.test/compilable/dtoh_extern_type.d +++ b/gcc/testsuite/gdc.test/compilable/dtoh_extern_type.d @@ -40,7 +40,7 @@ struct _d_dynamicArray final }; #endif #if !defined(_d_real) -# define _d_real long double +#define _d_real long double #endif class ClassFromStruct final diff --git a/gcc/testsuite/gdc.test/compilable/dtoh_ignored.d b/gcc/testsuite/gdc.test/compilable/dtoh_ignored.d index 1e1b887..d687673 100644 --- a/gcc/testsuite/gdc.test/compilable/dtoh_ignored.d +++ b/gcc/testsuite/gdc.test/compilable/dtoh_ignored.d @@ -39,7 +39,7 @@ struct _d_dynamicArray final }; #endif #if !defined(_d_real) -# define _d_real long double +#define _d_real long double #endif class WithImaginary diff --git a/gcc/testsuite/gdc.test/compilable/dtoh_mangling.d b/gcc/testsuite/gdc.test/compilable/dtoh_mangling.d new file mode 100644 index 0000000..44d0dd5 --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/dtoh_mangling.d @@ -0,0 +1,118 @@ +/++ +REQUIRED_ARGS: -HC=verbose +TEST_OUTPUT: +--- +// Automatically generated by Digital Mars D Compiler v$n$ + +#pragma once + +#include <assert.h> +#include <stddef.h> +#include <stdint.h> +#include <math.h> + +#ifdef CUSTOM_D_ARRAY_TYPE +#define _d_dynamicArray CUSTOM_D_ARRAY_TYPE +#else +/// Represents a D [] array +template<typename T> +struct _d_dynamicArray final +{ + size_t length; + T *ptr; + + _d_dynamicArray() : length(0), ptr(NULL) { } + + _d_dynamicArray(size_t length_in, T *ptr_in) + : length(length_in), ptr(ptr_in) { } + + T& operator[](const size_t idx) { + assert(idx < length); + return ptr[idx]; + } + + const T& operator[](const size_t idx) const { + assert(idx < length); + return ptr[idx]; + } +}; +#endif + +extern "C" int32_t freeC(); + +// Ignored function dtoh_mangling.bar because C++ doesn't support explicit mangling +struct Data final +{ + // Ignored function dtoh_mangling.Data.foo because of linkage + // Ignored function dtoh_mangling.Data.bar because C++ doesn't support explicit mangling + Data() + { + } +}; + +extern void accept(Data data); + +extern "C" void hasDefault(int32_t i = freeC()); + +extern "C" void hasDefaultMember(int32_t i = memberC()); + +extern "C" int32_t someVarC; + +// Ignored variable dtoh_mangling.var2 because C++ doesn't support explicit mangling +struct HasMangleMember final +{ + int32_t someAttrC; + int32_t someAttrCpp; + void hasDefaultVar(int32_t i = someAttrC); + HasMangleMember() + { + } +}; + +extern "C" void hasDefaultVar(int32_t i = someVarC); +--- +++/ + +extern(C): + +pragma(mangle, "freeC") +int foo() { return 0; } + +pragma(mangle, "freeCpp") +extern (C++) void bar() {} + +pragma(mangle, "Aggregate") +struct Data +{ + pragma(mangle, "memberC") + static int foo() { return 0; } + + pragma(mangle, "memberCpp") + extern (C++) void bar() {} +} + +extern(C++) +void accept(Data data) {} + +void hasDefault(int i = foo()) {} + +void hasDefaultMember(int i = Data.foo()) {} + +pragma(mangle, "someVarC") +__gshared int var; + +pragma(mangle, "someVarCpp") +extern(C++) __gshared int var2; + +struct HasMangleMember +{ + pragma(mangle, "someAttrC") + int var; + + pragma(mangle, "someAttrCpp") + extern(C++) int var2; + + extern(C++) void hasDefaultVar(int i = var) {} +} + +void hasDefaultVar(int i = var) {} diff --git a/gcc/testsuite/gdc.test/compilable/extra-files/header1.d b/gcc/testsuite/gdc.test/compilable/extra-files/header1.d index 01cf889..3c2e90a 100644 --- a/gcc/testsuite/gdc.test/compilable/extra-files/header1.d +++ b/gcc/testsuite/gdc.test/compilable/extra-files/header1.d @@ -577,7 +577,8 @@ struct SafeS ref SafeS foo3() return scope { - return this; + static SafeS s; + return s; } int* p; diff --git a/gcc/testsuite/gdc.test/compilable/fail137.d b/gcc/testsuite/gdc.test/compilable/fail137.d index c6876d1..1d49be6 100644 --- a/gcc/testsuite/gdc.test/compilable/fail137.d +++ b/gcc/testsuite/gdc.test/compilable/fail137.d @@ -23,4 +23,3 @@ void main() TypeTuple!(int, long) T; printf( "%u\n", cast(uint)IndexOf!(long, T) ); } - diff --git a/gcc/testsuite/gdc.test/compilable/fix17686.d b/gcc/testsuite/gdc.test/compilable/fix17686.d index db82252..76730ed 100644 --- a/gcc/testsuite/gdc.test/compilable/fix17686.d +++ b/gcc/testsuite/gdc.test/compilable/fix17686.d @@ -42,4 +42,3 @@ void main() { alias aaa = DOMImplementation!string; } - diff --git a/gcc/testsuite/gdc.test/compilable/fix20416.d b/gcc/testsuite/gdc.test/compilable/fix20416.d index 19ad74d..341eec3 100644 --- a/gcc/testsuite/gdc.test/compilable/fix20416.d +++ b/gcc/testsuite/gdc.test/compilable/fix20416.d @@ -33,4 +33,3 @@ S bar2() S result; return result.foo(); } - diff --git a/gcc/testsuite/gdc.test/compilable/fix21647.d b/gcc/testsuite/gdc.test/compilable/fix21647.d index c1e1c48..58f1440 100644 --- a/gcc/testsuite/gdc.test/compilable/fix21647.d +++ b/gcc/testsuite/gdc.test/compilable/fix21647.d @@ -35,4 +35,3 @@ pragma(msg, V); struct G {} struct F(T) { void f(ref T) {} } pragma(msg, F!G().f(G.init)); - diff --git a/gcc/testsuite/gdc.test/compilable/fix22291.d b/gcc/testsuite/gdc.test/compilable/fix22291.d index 4090c5e..36baef5 100644 --- a/gcc/testsuite/gdc.test/compilable/fix22291.d +++ b/gcc/testsuite/gdc.test/compilable/fix22291.d @@ -20,6 +20,33 @@ int echoPlusOne(int x) return x; } static assert(echoPlusOne(1) == 2); + +void nesting(double d, int i) +{ + alias EXP = AliasSeq!(d, i); + + if (d) + { + static assert(__traits(isSame, __traits(parameters), EXP)); + + while (d) + { + static assert(__traits(isSame, __traits(parameters), EXP)); + switch (i) + { + static assert(__traits(isSame, __traits(parameters), EXP)); + case 1: + static assert(__traits(isSame, __traits(parameters), EXP)); + break; + + default: + static assert(__traits(isSame, __traits(parameters), EXP)); + break; + } + } + } +} + class Tree { int opApply(int delegate(size_t, Tree) dg) { if (dg(0, this)) return 1; @@ -34,7 +61,22 @@ void useOpApply(Tree top, int x) } foreach(idx, elem; top) { - static assert(is(typeof(__traits(parameters)) == AliasSeq!(size_t, Tree))); + static assert(is(typeof(__traits(parameters)) == AliasSeq!(Tree, int))); + } + + foreach(idx, elem; top) + { + foreach (idx2, elem2; elem) + static assert(is(typeof(__traits(parameters)) == AliasSeq!(Tree, int))); + } + + foreach(idx, elem; top) + { + static void foo(char[] text) + { + foreach (const char c; text) + static assert(is(typeof(__traits(parameters)) == AliasSeq!(char[]))); + } } } class Test @@ -132,3 +174,64 @@ T testTemplate(T)(scope T input) static assert(testTemplate!long(420) == 0); +void qualifiers(immutable int a, const bool b) +{ + static assert(is(typeof(__traits(parameters)) == AliasSeq!(immutable int, const bool))); +} + +int makeAggregate(int a, bool b) +{ + struct S + { + typeof(__traits(parameters)) members; + } + + S s = S(__traits(parameters)); + assert(s.members[0] == a); + assert(s.members[1] == b); + return 1; +} + +static assert(makeAggregate(5, true)); + +int makeAlias(int a, bool b) +{ + alias Params = __traits(parameters); + assert(Params[0] == 3); + assert(Params[1] == true); + return 1; +} + +static assert(makeAlias(3, true)); + + +mixin template nestedCheckParameters(int unique) +{ + alias NestedNames = __traits(parameters); + version (Fixed) + alias Types = typeof(Names); +} + +mixin template checkParameters(int unique) +{ + mixin nestedCheckParameters!unique; + + alias Names = __traits(parameters); + alias Types = typeof(Names); +} + +int makeAggregateMixin(immutable int a, const bool b) +{ + mixin checkParameters!0; + + struct S + { + mixin checkParameters!1; + typeof(Names) members; + } + + S s = S(Names); + assert(s.members[0] == a); + assert(s.members[1] == b); + return 1; +} diff --git a/gcc/testsuite/gdc.test/compilable/ice20092.d b/gcc/testsuite/gdc.test/compilable/ice20092.d index ff2be37..5deef96 100644 --- a/gcc/testsuite/gdc.test/compilable/ice20092.d +++ b/gcc/testsuite/gdc.test/compilable/ice20092.d @@ -7,4 +7,3 @@ void front(T)(T[] a) { static assert(is(T == void)); } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/art4769a.d b/gcc/testsuite/gdc.test/compilable/imports/art4769a.d index 7c994e6..e7f59ec 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/art4769a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/art4769a.d @@ -12,4 +12,3 @@ template DataStreamability(T) printf("hallo\n"); } } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/art4769b.d b/gcc/testsuite/gdc.test/compilable/imports/art4769b.d index e43b2f2..a94f837 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/art4769b.d +++ b/gcc/testsuite/gdc.test/compilable/imports/art4769b.d @@ -6,4 +6,3 @@ int main(char [][] args) Vector!(wchar) str; return 0; } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/b33a.d b/gcc/testsuite/gdc.test/compilable/imports/b33a.d index bd8fd0c..dc5f094 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/b33a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/b33a.d @@ -23,6 +23,3 @@ template find() return find_!(char).fn( buf ); } } - - - diff --git a/gcc/testsuite/gdc.test/compilable/imports/b3682.d b/gcc/testsuite/gdc.test/compilable/imports/b3682.d index f554e12..ab0a09a 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/b3682.d +++ b/gcc/testsuite/gdc.test/compilable/imports/b3682.d @@ -2,4 +2,3 @@ module imports.b3682; import a3682; alias Tuple!(int) tint; - diff --git a/gcc/testsuite/gdc.test/compilable/imports/defaa.d b/gcc/testsuite/gdc.test/compilable/imports/defaa.d index c35167c..e0be575 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/defaa.d +++ b/gcc/testsuite/gdc.test/compilable/imports/defaa.d @@ -10,6 +10,3 @@ class Display this() { } } - - - diff --git a/gcc/testsuite/gdc.test/compilable/imports/defab.d b/gcc/testsuite/gdc.test/compilable/imports/defab.d index 84b9209..901dbd2 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/defab.d +++ b/gcc/testsuite/gdc.test/compilable/imports/defab.d @@ -12,4 +12,3 @@ public class B : A this() {} } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/imp16080.d b/gcc/testsuite/gdc.test/compilable/imports/imp16080.d index 1afd9b5..9a8ca47 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/imp16080.d +++ b/gcc/testsuite/gdc.test/compilable/imports/imp16080.d @@ -1,4 +1,3 @@ struct A() { static immutable A a; } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d b/gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d index 9e9933b..3befca4 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d +++ b/gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d @@ -1,4 +1,3 @@ /// Used to test is(x == module) module imports.plainpackage.plainmodule; - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test11563std_traits.d b/gcc/testsuite/gdc.test/compilable/imports/test11563std_traits.d index 0ee4643..807c6e7 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test11563std_traits.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test11563std_traits.d @@ -19,4 +19,3 @@ template moduleName(alias T) enum moduleName = "--error--"; } } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test16709c.d b/gcc/testsuite/gdc.test/compilable/imports/test16709c.d index 1b45163..c5599fd 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test16709c.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test16709c.d @@ -1,2 +1 @@ void to(string units, D)(D td) { } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test16709d.d b/gcc/testsuite/gdc.test/compilable/imports/test16709d.d index 9f928af..922f59e 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test16709d.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test16709d.d @@ -1,2 +1 @@ void to(T, D)(D td) { } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test4003a.d b/gcc/testsuite/gdc.test/compilable/imports/test4003a.d index a05a16d..827a56e7 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test4003a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test4003a.d @@ -3,4 +3,3 @@ module imports.test4003a; import imports.typecons4003; Tuple!(string) t; - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test50a.d b/gcc/testsuite/gdc.test/compilable/imports/test50a.d index da5bf36..9ec43dd 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test50a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test50a.d @@ -3,4 +3,3 @@ module imports.test50a; class Foo { protected int a; } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test55a.d b/gcc/testsuite/gdc.test/compilable/imports/test55a.d index e6fa224..399e850 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test55a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test55a.d @@ -11,4 +11,3 @@ class Arm2 { alias int ListHead; Queue2.ListHead mqueue; } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test62a.d b/gcc/testsuite/gdc.test/compilable/imports/test62a.d index 7179f3a..36c838d 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test62a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test62a.d @@ -11,5 +11,3 @@ struct T() } alias T!() instance; - - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test63a.d b/gcc/testsuite/gdc.test/compilable/imports/test63a.d index d53b034..c60d8b4 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test63a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test63a.d @@ -7,4 +7,3 @@ struct s { char[SIZE] a; } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test67a.d b/gcc/testsuite/gdc.test/compilable/imports/test67a.d index 796ab80..15fd644 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test67a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test67a.d @@ -15,5 +15,3 @@ class Derived : Base return null; } } - - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test68a.d b/gcc/testsuite/gdc.test/compilable/imports/test68a.d index 7e44f3e..c7176f0 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test68a.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test68a.d @@ -6,4 +6,3 @@ class OtherModuleClass { } } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test9276decl.d b/gcc/testsuite/gdc.test/compilable/imports/test9276decl.d index 0f507bc..c774616 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test9276decl.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test9276decl.d @@ -11,4 +11,3 @@ class TemplateDecl : OverloadableDecl { mixin Visitors; } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test9276expr.d b/gcc/testsuite/gdc.test/compilable/imports/test9276expr.d index 376d6a4..72e5e2e 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test9276expr.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test9276expr.d @@ -12,4 +12,3 @@ class Node class Expression : Node { } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test9276parser.d b/gcc/testsuite/gdc.test/compilable/imports/test9276parser.d index 5e307ee..8b9473e 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test9276parser.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test9276parser.d @@ -1,4 +1,3 @@ module imports.test9276parser; public import imports.test9276expr, imports.test9276decl; - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test9276sem.d b/gcc/testsuite/gdc.test/compilable/imports/test9276sem.d index 3b660f4..0631683 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test9276sem.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test9276sem.d @@ -22,4 +22,3 @@ import imports.test9276visitors; class OverloadableDecl : Declaration { } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test9276type.d b/gcc/testsuite/gdc.test/compilable/imports/test9276type.d index 8a2cb3c..ede9261 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test9276type.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test9276type.d @@ -9,4 +9,3 @@ class Type : Expression // <- note to Walter. class BasicType : Type { } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test9276util.d b/gcc/testsuite/gdc.test/compilable/imports/test9276util.d index f3a95d9..22acb3e 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test9276util.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test9276util.d @@ -10,4 +10,3 @@ template DownCastMethods(T...) { enum x = _dgliteral!T; } - diff --git a/gcc/testsuite/gdc.test/compilable/imports/test9276visitors.d b/gcc/testsuite/gdc.test/compilable/imports/test9276visitors.d index e2d507c..8165104 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/test9276visitors.d +++ b/gcc/testsuite/gdc.test/compilable/imports/test9276visitors.d @@ -13,4 +13,3 @@ template DeepDup(T) if (is(T : BasicType)) template DeepDup(T) {} - diff --git a/gcc/testsuite/gdc.test/compilable/imports/wax16798.d b/gcc/testsuite/gdc.test/compilable/imports/wax16798.d index af98706..268038c 100644 --- a/gcc/testsuite/gdc.test/compilable/imports/wax16798.d +++ b/gcc/testsuite/gdc.test/compilable/imports/wax16798.d @@ -1,4 +1,3 @@ module its.a.floorwax.wax16798; pragma(msg, "it's a floor wax"); - diff --git a/gcc/testsuite/gdc.test/compilable/isreturnonstack.d b/gcc/testsuite/gdc.test/compilable/isreturnonstack.d index 920f0ec..d41f123 100644 --- a/gcc/testsuite/gdc.test/compilable/isreturnonstack.d +++ b/gcc/testsuite/gdc.test/compilable/isreturnonstack.d @@ -5,4 +5,3 @@ S test2(); static assert(__traits(isReturnOnStack, test1) == false); static assert(__traits(isReturnOnStack, test2) == true); - diff --git a/gcc/testsuite/gdc.test/compilable/issue15478.d b/gcc/testsuite/gdc.test/compilable/issue15478.d index ad24e7f..7bc16c8 100644 --- a/gcc/testsuite/gdc.test/compilable/issue15478.d +++ b/gcc/testsuite/gdc.test/compilable/issue15478.d @@ -52,4 +52,3 @@ void test15478_3() enum foo_bug = foo.bug; Foo15478!int[foo_bug] baz; // OK } - diff --git a/gcc/testsuite/gdc.test/compilable/issue21813b.d b/gcc/testsuite/gdc.test/compilable/issue21813b.d index 0af986b..cdc9077 100644 --- a/gcc/testsuite/gdc.test/compilable/issue21813b.d +++ b/gcc/testsuite/gdc.test/compilable/issue21813b.d @@ -10,4 +10,3 @@ struct Target OS os = defaultTargetOS(); @property isPOSIX() scope @nogc { } } - diff --git a/gcc/testsuite/gdc.test/compilable/json.d b/gcc/testsuite/gdc.test/compilable/json.d index f79639d..73d3101 100644 --- a/gcc/testsuite/gdc.test/compilable/json.d +++ b/gcc/testsuite/gdc.test/compilable/json.d @@ -191,7 +191,7 @@ struct SafeS ref SafeS foo3() return scope { - return this; + static SafeS s; return s; } int* p; diff --git a/gcc/testsuite/gdc.test/compilable/line.d b/gcc/testsuite/gdc.test/compilable/line.d index 14e1789..419447d 100644 --- a/gcc/testsuite/gdc.test/compilable/line.d +++ b/gcc/testsuite/gdc.test/compilable/line.d @@ -26,5 +26,3 @@ static assert(__FILE_FULL_PATH__[$ - 9 .. $] == "newfile.d"); static assert(__LINE__ == 201); static assert(__FILE__ == "newfile.d"); static assert(__FILE_FULL_PATH__[$ - 9 .. $] == "newfile.d"); - - diff --git a/gcc/testsuite/gdc.test/compilable/mixintype.d b/gcc/testsuite/gdc.test/compilable/mixintype.d index abbf85a..a53805b 100644 --- a/gcc/testsuite/gdc.test/compilable/mixintype.d +++ b/gcc/testsuite/gdc.test/compilable/mixintype.d @@ -52,4 +52,3 @@ void test4() enum getStuff = q{ __traits(getMember,sb,"fieldb") }; auto b = Foo4!(mixin(getStuff)); } - diff --git a/gcc/testsuite/gdc.test/compilable/test10073.d b/gcc/testsuite/gdc.test/compilable/test10073.d index 1faf6bf..1e0c546 100644 --- a/gcc/testsuite/gdc.test/compilable/test10073.d +++ b/gcc/testsuite/gdc.test/compilable/test10073.d @@ -21,4 +21,3 @@ class Bar } class Foo {} // NG - diff --git a/gcc/testsuite/gdc.test/compilable/test1238.d b/gcc/testsuite/gdc.test/compilable/test1238.d index 0cbd84d..46a41b2 100644 --- a/gcc/testsuite/gdc.test/compilable/test1238.d +++ b/gcc/testsuite/gdc.test/compilable/test1238.d @@ -8,4 +8,3 @@ void foo() { int qwert = zuiop; } - diff --git a/gcc/testsuite/gdc.test/compilable/test12527.d b/gcc/testsuite/gdc.test/compilable/test12527.d index b476c17..d99c69b 100644 --- a/gcc/testsuite/gdc.test/compilable/test12527.d +++ b/gcc/testsuite/gdc.test/compilable/test12527.d @@ -5,4 +5,3 @@ static assert(Fun.stringof == "void function() @safe"); alias Del = void delegate() @safe; static assert(Del.stringof == "void delegate() @safe"); - diff --git a/gcc/testsuite/gdc.test/compilable/test13193.d b/gcc/testsuite/gdc.test/compilable/test13193.d index 58cb617..e4451b8 100644 --- a/gcc/testsuite/gdc.test/compilable/test13193.d +++ b/gcc/testsuite/gdc.test/compilable/test13193.d @@ -123,4 +123,3 @@ void bindFunc() {ssllib.getSymbol();} bindFunc(); bindFunc(); /* 100 */ } - diff --git a/gcc/testsuite/gdc.test/compilable/test13194.d b/gcc/testsuite/gdc.test/compilable/test13194.d index cefa7ba..47c8a83 100644 --- a/gcc/testsuite/gdc.test/compilable/test13194.d +++ b/gcc/testsuite/gdc.test/compilable/test13194.d @@ -14,4 +14,3 @@ union U13194 { static Object o = void; } - diff --git a/gcc/testsuite/gdc.test/compilable/test13600.d b/gcc/testsuite/gdc.test/compilable/test13600.d index a16b39c..9b09aac 100644 --- a/gcc/testsuite/gdc.test/compilable/test13600.d +++ b/gcc/testsuite/gdc.test/compilable/test13600.d @@ -10,4 +10,3 @@ class Retry { } } - diff --git a/gcc/testsuite/gdc.test/compilable/test13858.d b/gcc/testsuite/gdc.test/compilable/test13858.d index 98b0796..557cec8 100644 --- a/gcc/testsuite/gdc.test/compilable/test13858.d +++ b/gcc/testsuite/gdc.test/compilable/test13858.d @@ -17,4 +17,3 @@ void main() foo(); } - diff --git a/gcc/testsuite/gdc.test/compilable/test15019.d b/gcc/testsuite/gdc.test/compilable/test15019.d index 41444ce..d676d61 100644 --- a/gcc/testsuite/gdc.test/compilable/test15019.d +++ b/gcc/testsuite/gdc.test/compilable/test15019.d @@ -72,4 +72,3 @@ struct Vector(T, int N) assert(false); } } - diff --git a/gcc/testsuite/gdc.test/compilable/test15389_y.d b/gcc/testsuite/gdc.test/compilable/test15389_y.d index 78f4779..d546ad8 100644 --- a/gcc/testsuite/gdc.test/compilable/test15389_y.d +++ b/gcc/testsuite/gdc.test/compilable/test15389_y.d @@ -6,4 +6,3 @@ extern (C++, ns) { class Y { test15389_x.ns.X b; } } - diff --git a/gcc/testsuite/gdc.test/compilable/test15464.d b/gcc/testsuite/gdc.test/compilable/test15464.d index b8c3e9b..46d6e66 100644 --- a/gcc/testsuite/gdc.test/compilable/test15464.d +++ b/gcc/testsuite/gdc.test/compilable/test15464.d @@ -18,5 +18,3 @@ void main() { issue15464!C15464(); } - - diff --git a/gcc/testsuite/gdc.test/compilable/test15565.d b/gcc/testsuite/gdc.test/compilable/test15565.d index 4beb900..211a595 100644 --- a/gcc/testsuite/gdc.test/compilable/test15565.d +++ b/gcc/testsuite/gdc.test/compilable/test15565.d @@ -1,3 +1,2 @@ alias X2 = X; extern (C++, ns) struct X {} - diff --git a/gcc/testsuite/gdc.test/compilable/test15578.d b/gcc/testsuite/gdc.test/compilable/test15578.d index 81dd76a..78cb420 100644 --- a/gcc/testsuite/gdc.test/compilable/test15578.d +++ b/gcc/testsuite/gdc.test/compilable/test15578.d @@ -7,4 +7,3 @@ void f() j = 0; // works as expected k = 0; // Error: variable foo.ns.k is private } - diff --git a/gcc/testsuite/gdc.test/compilable/test15762.d b/gcc/testsuite/gdc.test/compilable/test15762.d index 0fb0293..0271c0f 100644 --- a/gcc/testsuite/gdc.test/compilable/test15762.d +++ b/gcc/testsuite/gdc.test/compilable/test15762.d @@ -10,4 +10,3 @@ void main() @safe { auto d = cast(const(ubyte)[]) c; auto e = cast(const(Windows1252Char)[]) c; } - diff --git a/gcc/testsuite/gdc.test/compilable/test15898.d b/gcc/testsuite/gdc.test/compilable/test15898.d index 01c325e..8649efa 100644 --- a/gcc/testsuite/gdc.test/compilable/test15898.d +++ b/gcc/testsuite/gdc.test/compilable/test15898.d @@ -24,4 +24,3 @@ void mulKaratsuba(int[] result, const(int)[] x, const(int)[] y, int[] ) addAssignSimple(resultHigh[1..$], newscratchbuff[0..y1.length]); } - diff --git a/gcc/testsuite/gdc.test/compilable/test16037.d b/gcc/testsuite/gdc.test/compilable/test16037.d index 12c672a..2b0ebc9 100644 --- a/gcc/testsuite/gdc.test/compilable/test16037.d +++ b/gcc/testsuite/gdc.test/compilable/test16037.d @@ -19,5 +19,3 @@ auto f() @nogc scope h=&g; h(); } - - diff --git a/gcc/testsuite/gdc.test/compilable/test16080.d b/gcc/testsuite/gdc.test/compilable/test16080.d index e9c6066..6520127 100644 --- a/gcc/testsuite/gdc.test/compilable/test16080.d +++ b/gcc/testsuite/gdc.test/compilable/test16080.d @@ -4,4 +4,3 @@ // https://issues.dlang.org/show_bug.cgi?id=16080 import imp16080; - diff --git a/gcc/testsuite/gdc.test/compilable/test16225.d b/gcc/testsuite/gdc.test/compilable/test16225.d index 6600842..777dcee 100644 --- a/gcc/testsuite/gdc.test/compilable/test16225.d +++ b/gcc/testsuite/gdc.test/compilable/test16225.d @@ -11,4 +11,3 @@ struct C return ((cast(ubyte*)&y)[1]); } } - diff --git a/gcc/testsuite/gdc.test/compilable/test16798.d b/gcc/testsuite/gdc.test/compilable/test16798.d index fe0f128..5d5d4da 100644 --- a/gcc/testsuite/gdc.test/compilable/test16798.d +++ b/gcc/testsuite/gdc.test/compilable/test16798.d @@ -11,4 +11,3 @@ it's a dessert topping import its.a.floorwax.wax16798; import its.a.dessert.topping; - diff --git a/gcc/testsuite/gdc.test/compilable/test17057.d b/gcc/testsuite/gdc.test/compilable/test17057.d index 677fe38..0e615c8 100644 --- a/gcc/testsuite/gdc.test/compilable/test17057.d +++ b/gcc/testsuite/gdc.test/compilable/test17057.d @@ -9,4 +9,3 @@ void main() { static assert([__traits(allMembers, LeClass)] == ["toString", "toHash", "opCmp", "opEquals", "Monitor", "factory"]); } - diff --git a/gcc/testsuite/gdc.test/compilable/test17421.d b/gcc/testsuite/gdc.test/compilable/test17421.d index e5075fb..8188422 100644 --- a/gcc/testsuite/gdc.test/compilable/test17421.d +++ b/gcc/testsuite/gdc.test/compilable/test17421.d @@ -16,4 +16,3 @@ static assert(__traits(getFunctionVariadicStyle, typesafe) == "typesafe"); static assert(__traits(getFunctionVariadicStyle, (int[] a...) {}) == "typesafe"); static assert(__traits(getFunctionVariadicStyle, typeof(cstyle)) == "stdarg"); - diff --git a/gcc/testsuite/gdc.test/compilable/test17468.d b/gcc/testsuite/gdc.test/compilable/test17468.d index 840de21..14aceaa 100644 --- a/gcc/testsuite/gdc.test/compilable/test17468.d +++ b/gcc/testsuite/gdc.test/compilable/test17468.d @@ -9,4 +9,3 @@ struct S } } const S CONST_S = S("/tmp".ptr); - diff --git a/gcc/testsuite/gdc.test/compilable/test17512.d b/gcc/testsuite/gdc.test/compilable/test17512.d index 4bf96b7..6419436 100644 --- a/gcc/testsuite/gdc.test/compilable/test17512.d +++ b/gcc/testsuite/gdc.test/compilable/test17512.d @@ -23,4 +23,3 @@ struct S0(T) } alias B = S0!int; - diff --git a/gcc/testsuite/gdc.test/compilable/test17942.d b/gcc/testsuite/gdc.test/compilable/test17942.d index 8fbc169..8d7ec39 100644 --- a/gcc/testsuite/gdc.test/compilable/test17942.d +++ b/gcc/testsuite/gdc.test/compilable/test17942.d @@ -12,4 +12,3 @@ void test() enum B = AliasSeq!(2); enum C = AliasSeq!(); - diff --git a/gcc/testsuite/gdc.test/compilable/test18020.d b/gcc/testsuite/gdc.test/compilable/test18020.d index d599920..6a7a36a 100644 --- a/gcc/testsuite/gdc.test/compilable/test18020.d +++ b/gcc/testsuite/gdc.test/compilable/test18020.d @@ -5,4 +5,4 @@ void bug(T)(T t) t.opCmp(t); } -alias bugi = bug!(typeof(new class{}));
\ No newline at end of file +alias bugi = bug!(typeof(new class{})); diff --git a/gcc/testsuite/gdc.test/compilable/test18584.d b/gcc/testsuite/gdc.test/compilable/test18584.d index e447cc2..2007c83 100644 --- a/gcc/testsuite/gdc.test/compilable/test18584.d +++ b/gcc/testsuite/gdc.test/compilable/test18584.d @@ -8,4 +8,3 @@ struct S { struct tmp(alias fns) { alias fun = fns!int; } - diff --git a/gcc/testsuite/gdc.test/compilable/test18936.d b/gcc/testsuite/gdc.test/compilable/test18936.d index 12f4b4b..82dff1b 100644 --- a/gcc/testsuite/gdc.test/compilable/test18936.d +++ b/gcc/testsuite/gdc.test/compilable/test18936.d @@ -28,4 +28,3 @@ struct S return c; } } - diff --git a/gcc/testsuite/gdc.test/compilable/test19203.d b/gcc/testsuite/gdc.test/compilable/test19203.d index 206d662..4cbe6b8 100644 --- a/gcc/testsuite/gdc.test/compilable/test19203.d +++ b/gcc/testsuite/gdc.test/compilable/test19203.d @@ -24,4 +24,3 @@ void test() static assert(!hasPopBack!Bar); static assert( hasPopBack!Foo && !hasPopBack!Bar); } - diff --git a/gcc/testsuite/gdc.test/compilable/test19227.d b/gcc/testsuite/gdc.test/compilable/test19227.d index 27dab9e..6ff5349 100644 --- a/gcc/testsuite/gdc.test/compilable/test19227.d +++ b/gcc/testsuite/gdc.test/compilable/test19227.d @@ -26,4 +26,3 @@ void main() static assert(T.init is T.init); static assert(T.init != T.init); } - diff --git a/gcc/testsuite/gdc.test/compilable/test20596.d b/gcc/testsuite/gdc.test/compilable/test20596.d index cd059c9..4d7854e 100644 --- a/gcc/testsuite/gdc.test/compilable/test20596.d +++ b/gcc/testsuite/gdc.test/compilable/test20596.d @@ -27,5 +27,3 @@ void test3032() @nogc scope fp = (){ n = 10; }; // no closure fp(); } - - diff --git a/gcc/testsuite/gdc.test/compilable/test20653.d b/gcc/testsuite/gdc.test/compilable/test20653.d index c7f329d..0e9b8f3 100644 --- a/gcc/testsuite/gdc.test/compilable/test20653.d +++ b/gcc/testsuite/gdc.test/compilable/test20653.d @@ -17,4 +17,3 @@ void main () { assert(myFunc!int() == 0); } - diff --git a/gcc/testsuite/gdc.test/compilable/test20717.d b/gcc/testsuite/gdc.test/compilable/test20717.d new file mode 100644 index 0000000..d45801e --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/test20717.d @@ -0,0 +1,17 @@ +// https://issues.dlang.org/show_bug.cgi?id=20717 + +/* +TEST_OUTPUT: +--- +false +--- +*/ + +pragma(msg, is(typeof({ + struct S + { + struct Foo {} + struct Bar() {} + alias Bar = Foo; + } +}))); diff --git a/gcc/testsuite/gdc.test/compilable/test20906.d b/gcc/testsuite/gdc.test/compilable/test20906.d index 86ffeda..e542631 100644 --- a/gcc/testsuite/gdc.test/compilable/test20906.d +++ b/gcc/testsuite/gdc.test/compilable/test20906.d @@ -12,4 +12,3 @@ int test12() int d = !x ? 1 : 1 / x; return a | b | c; } - diff --git a/gcc/testsuite/gdc.test/compilable/test20990.d b/gcc/testsuite/gdc.test/compilable/test20990.d index aeae11d..0036e14 100644 --- a/gcc/testsuite/gdc.test/compilable/test20990.d +++ b/gcc/testsuite/gdc.test/compilable/test20990.d @@ -16,4 +16,3 @@ void bar(int* ptr) assert(ptr); *ptr = 42; } - diff --git a/gcc/testsuite/gdc.test/compilable/test22639.d b/gcc/testsuite/gdc.test/compilable/test22639.d new file mode 100644 index 0000000..a889aa9 --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/test22639.d @@ -0,0 +1,26 @@ +// https://issues.dlang.org/show_bug.cgi?id=22639 + +struct A +{ + this(ref return scope A rhs) inout {} + this(ref return scope const A rhs, int b = 7) inout + { + if (b != 7) { + this.b = b; + } + } + + this(this) @disable; + + int a=4; + int b=3; +} + +void main() +{ + A a = A(); + A c = A(a, 10); + A d = void; + d.__ctor(a, 200); + A* b = new A(a, 10); +} diff --git a/gcc/testsuite/gdc.test/compilable/test22665.d b/gcc/testsuite/gdc.test/compilable/test22665.d index 9d55dbb..4da6fd1 100644 --- a/gcc/testsuite/gdc.test/compilable/test22665.d +++ b/gcc/testsuite/gdc.test/compilable/test22665.d @@ -18,5 +18,3 @@ E foo3(E e) { return E.A; // with qualification, it is an enum } - - diff --git a/gcc/testsuite/gdc.test/compilable/test22825.d b/gcc/testsuite/gdc.test/compilable/test22825.d new file mode 100644 index 0000000..7820eae --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/test22825.d @@ -0,0 +1,4 @@ +// https://issues.dlang.org/show_bug.cgi?id=22825 +#line /* + multi-line comment +*/ 42 diff --git a/gcc/testsuite/gdc.test/compilable/test22859.d b/gcc/testsuite/gdc.test/compilable/test22859.d new file mode 100644 index 0000000..b5b318c --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/test22859.d @@ -0,0 +1,40 @@ +// https://issues.dlang.org/show_bug.cgi?id=22859 +private struct __InoutWorkaroundStruct {} +@property T rvalueOf(T)(T val) { return val; } +@property T rvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); +@property ref T lvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); + +// taken from std.traits.isAssignable +template isAssignable(Lhs, Rhs = Lhs) +{ + enum isAssignable = __traits(compiles, lvalueOf!Lhs = rvalueOf!Rhs) && __traits(compiles, lvalueOf!Lhs = lvalueOf!Rhs); +} + +// taken from std.meta.allSatisfy +template allSatisfy(alias F, T...) +{ + static foreach (Ti; T) + { + static if (!is(typeof(allSatisfy) == bool) && // not yet defined + !F!(Ti)) + { + enum allSatisfy = false; + } + } + static if (!is(typeof(allSatisfy) == bool)) // if not yet defined + { + enum allSatisfy = true; + } +} + +struct None{} + +class C1 +{ + static if(allSatisfy!(isAssignable, None, C2)) {} +} + +class C2 +{ + static if(allSatisfy!(isAssignable, None, C1, C2)) {} +} diff --git a/gcc/testsuite/gdc.test/compilable/test22860.d b/gcc/testsuite/gdc.test/compilable/test22860.d new file mode 100644 index 0000000..543dd88 --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/test22860.d @@ -0,0 +1,62 @@ +// https://issues.dlang.org/show_bug.cgi?id=22860 +class C1 +{ + SumType!(C1, C2) field; +} + +class C2 +{ + SumType!(SumType!(C1, C2)) field; +} + +alias AliasSeq(TList...) = TList; + +template allSatisfy(alias F, T...) +{ + static foreach (Ti; T) + { + static if (!F!Ti) + enum allSatisfy = false; + } +} + +struct This {} + +enum isAssignableTo(T) = isAssignable!T; +enum isHashable(T) = __traits(compiles, { T.init; }); + +struct SumType(Types...) +{ + alias Types = AliasSeq!(ReplaceTypeUnless!(isSumTypeInstance, This, typeof(this), TemplateArgsOf!SumType)); + + static foreach (T; Types) + { + static if (isAssignableTo!T) + { + } + } + + static if (allSatisfy!(isAssignableTo, Types)) + { + } + + static if (allSatisfy!(isHashable, Types)) + size_t toHash; +} + +bool isSumTypeInstance; + +alias TemplateArgsOf(T : Base!Args, alias Base, Args...) = Args; +enum isAssignable(Lhs, Rhs = Lhs) = isRvalueAssignable!(Lhs, Rhs) ; +enum isRvalueAssignable(Lhs, Rhs ) = __traits(compiles, { lvalueOf!Lhs = Rhs; }); + +struct __InoutWorkaroundStruct{} +T lvalueOf(T)(__InoutWorkaroundStruct ); + +template ReplaceTypeUnless(alias pred, From, To, T...) +{ + static if (T.length == 1) + alias ReplaceTypeUnless = T; + static if (T.length > 1) + alias ReplaceTypeUnless = AliasSeq!(ReplaceTypeUnless!(pred, From, To, T[1 ])); +} diff --git a/gcc/testsuite/gdc.test/compilable/test22919.d b/gcc/testsuite/gdc.test/compilable/test22919.d new file mode 100644 index 0000000..8844ed0 --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/test22919.d @@ -0,0 +1,17 @@ +// REQUIRED_ARGS: -checkaction=context -preview=dip1000 + +// Issue 22919 - [dip1000] -checkaction=context gives "assigned to `__assertOp2` with longer lifetime" ( +// https://issues.dlang.org/show_bug.cgi?id=22919 + +@safe: +struct S +{ + int* p; + ref S get() scope return {return this;} +} + +void main() +{ + scope S arr = S(); + assert(arr == arr.get()); +} diff --git a/gcc/testsuite/gdc.test/compilable/test3775.d b/gcc/testsuite/gdc.test/compilable/test3775.d index a34b329..da05dc5 100644 --- a/gcc/testsuite/gdc.test/compilable/test3775.d +++ b/gcc/testsuite/gdc.test/compilable/test3775.d @@ -5,5 +5,3 @@ struct Bug3775 { } static assert(cast(int)Bug3775.byLine == 1); - - diff --git a/gcc/testsuite/gdc.test/compilable/test4003.d b/gcc/testsuite/gdc.test/compilable/test4003.d index f51310e..08bf7b3 100644 --- a/gcc/testsuite/gdc.test/compilable/test4003.d +++ b/gcc/testsuite/gdc.test/compilable/test4003.d @@ -4,4 +4,3 @@ import imports.stdio4003; void main(){} - diff --git a/gcc/testsuite/gdc.test/compilable/test4375.d b/gcc/testsuite/gdc.test/compilable/test4375.d index 1cc7a3a..2a132fb 100644 --- a/gcc/testsuite/gdc.test/compilable/test4375.d +++ b/gcc/testsuite/gdc.test/compilable/test4375.d @@ -471,4 +471,3 @@ void f() { else x = null; } - diff --git a/gcc/testsuite/gdc.test/compilable/test50.d b/gcc/testsuite/gdc.test/compilable/test50.d index a5dfac0..356b353 100644 --- a/gcc/testsuite/gdc.test/compilable/test50.d +++ b/gcc/testsuite/gdc.test/compilable/test50.d @@ -6,5 +6,3 @@ import imports.test50a; class Bar : Foo { alias typeof(Foo.tupleof) Bleh; } - - diff --git a/gcc/testsuite/gdc.test/compilable/test5227.d b/gcc/testsuite/gdc.test/compilable/test5227.d index b713191..befb947 100644 --- a/gcc/testsuite/gdc.test/compilable/test5227.d +++ b/gcc/testsuite/gdc.test/compilable/test5227.d @@ -128,5 +128,3 @@ pragma(msg, "fma()"); enum fmaf = fma(-3.2f, 5.2f, 3.8f); //pragma(msg, fmaf); enum fmad = fma(-3.2 , 5.2 , 3.8 ); //pragma(msg, fmad); enum fmar = fma(-3.2L, 5.2L, 3.8L); pragma(msg, fmar); - - diff --git a/gcc/testsuite/gdc.test/compilable/test602.d b/gcc/testsuite/gdc.test/compilable/test602.d index a17aa16..c87f883 100644 --- a/gcc/testsuite/gdc.test/compilable/test602.d +++ b/gcc/testsuite/gdc.test/compilable/test602.d @@ -409,4 +409,3 @@ void test13321(bool b) x = Foo(1); EXIT: } - diff --git a/gcc/testsuite/gdc.test/compilable/test6089.d b/gcc/testsuite/gdc.test/compilable/test6089.d index b1fa2cf..603348c 100644 --- a/gcc/testsuite/gdc.test/compilable/test6089.d +++ b/gcc/testsuite/gdc.test/compilable/test6089.d @@ -3,4 +3,3 @@ void main() { extern int[1][1] foo; } - diff --git a/gcc/testsuite/gdc.test/compilable/test63.d b/gcc/testsuite/gdc.test/compilable/test63.d index 9cf986d..55b2e47 100644 --- a/gcc/testsuite/gdc.test/compilable/test63.d +++ b/gcc/testsuite/gdc.test/compilable/test63.d @@ -4,4 +4,3 @@ private import imports.test63a; const int SIZE = 7; - diff --git a/gcc/testsuite/gdc.test/compilable/test6395.d b/gcc/testsuite/gdc.test/compilable/test6395.d index 3b80203..6504097 100644 --- a/gcc/testsuite/gdc.test/compilable/test6395.d +++ b/gcc/testsuite/gdc.test/compilable/test6395.d @@ -5,4 +5,3 @@ // https://issues.dlang.org/show_bug.cgi?id=6395 import c6395; - diff --git a/gcc/testsuite/gdc.test/compilable/test66.d b/gcc/testsuite/gdc.test/compilable/test66.d index 9db082e..bedbd26 100644 --- a/gcc/testsuite/gdc.test/compilable/test66.d +++ b/gcc/testsuite/gdc.test/compilable/test66.d @@ -18,4 +18,3 @@ class Lexer { Token token; } - diff --git a/gcc/testsuite/gdc.test/compilable/test67.d b/gcc/testsuite/gdc.test/compilable/test67.d index 9f45c64..bafc567 100644 --- a/gcc/testsuite/gdc.test/compilable/test67.d +++ b/gcc/testsuite/gdc.test/compilable/test67.d @@ -9,4 +9,3 @@ interface I interface SubI : I { } - diff --git a/gcc/testsuite/gdc.test/compilable/test68.d b/gcc/testsuite/gdc.test/compilable/test68.d index 55a7995..1631642 100644 --- a/gcc/testsuite/gdc.test/compilable/test68.d +++ b/gcc/testsuite/gdc.test/compilable/test68.d @@ -16,4 +16,3 @@ void main() { new Foo(); } - diff --git a/gcc/testsuite/gdc.test/compilable/test7399.d b/gcc/testsuite/gdc.test/compilable/test7399.d index dba0741..8961ba1 100644 --- a/gcc/testsuite/gdc.test/compilable/test7399.d +++ b/gcc/testsuite/gdc.test/compilable/test7399.d @@ -3,4 +3,3 @@ static assert(!__traits(compiles, { import non.existing.file; })); // https://issues.dlang.org/show_bug.cgi?id=7400 static assert(!is(typeof({import non_existing_file;}))); - diff --git a/gcc/testsuite/gdc.test/compilable/test8296.d b/gcc/testsuite/gdc.test/compilable/test8296.d index cd175b5..d29c9ed 100644 --- a/gcc/testsuite/gdc.test/compilable/test8296.d +++ b/gcc/testsuite/gdc.test/compilable/test8296.d @@ -30,4 +30,4 @@ class Foo void main(string[] args) { auto foo = new Foo(); -}
\ No newline at end of file +} diff --git a/gcc/testsuite/gdc.test/compilable/test8922b.d b/gcc/testsuite/gdc.test/compilable/test8922b.d index 007f9b6..408c6e9 100644 --- a/gcc/testsuite/gdc.test/compilable/test8922b.d +++ b/gcc/testsuite/gdc.test/compilable/test8922b.d @@ -7,4 +7,3 @@ void test() enum x = __traits(parent, imports.bug8922).stringof; static assert(x == "package imports"); } - diff --git a/gcc/testsuite/gdc.test/compilable/test8922d.d b/gcc/testsuite/gdc.test/compilable/test8922d.d index 4898cf6..87ec51a 100644 --- a/gcc/testsuite/gdc.test/compilable/test8922d.d +++ b/gcc/testsuite/gdc.test/compilable/test8922d.d @@ -8,4 +8,3 @@ void test() enum x = __traits(parent, imports.bug8922).stringof; static assert(x == "package imports"); } - diff --git a/gcc/testsuite/gdc.test/compilable/test9057.d b/gcc/testsuite/gdc.test/compilable/test9057.d index 3594a04..ca2acb6 100644 --- a/gcc/testsuite/gdc.test/compilable/test9057.d +++ b/gcc/testsuite/gdc.test/compilable/test9057.d @@ -16,5 +16,3 @@ void test9507_2() { import imp9057_2; Bug9057!(BugInt) xxx; } - - diff --git a/gcc/testsuite/gdc.test/compilable/test9436.d b/gcc/testsuite/gdc.test/compilable/test9436.d index 5b650bd..2b3f8dc 100644 --- a/gcc/testsuite/gdc.test/compilable/test9436.d +++ b/gcc/testsuite/gdc.test/compilable/test9436.d @@ -1,4 +1,3 @@ // EXTRA_SOURCES: imports/test9436interp.d // EXTRA_FILES: imports/test9436aggr.d imports/test9436node.d imports/test9436type.d // this is a dummy module for test 9436. - diff --git a/gcc/testsuite/gdc.test/compilable/testAliasLookup.d b/gcc/testsuite/gdc.test/compilable/testAliasLookup.d index 786c2f4..a7f698d 100644 --- a/gcc/testsuite/gdc.test/compilable/testAliasLookup.d +++ b/gcc/testsuite/gdc.test/compilable/testAliasLookup.d @@ -57,4 +57,3 @@ struct S16082 return aliasthis; // Line 20 } } - diff --git a/gcc/testsuite/gdc.test/compilable/testInference.d b/gcc/testsuite/gdc.test/compilable/testInference.d index 9ffecc1..31b1049 100644 --- a/gcc/testsuite/gdc.test/compilable/testInference.d +++ b/gcc/testsuite/gdc.test/compilable/testInference.d @@ -818,4 +818,3 @@ void test13840() nothrow } // Add more tests regarding inferences later. - diff --git a/gcc/testsuite/gdc.test/compilable/testprofile.d b/gcc/testsuite/gdc.test/compilable/testprofile.d index 2f7beeb..6b0f775 100644 --- a/gcc/testsuite/gdc.test/compilable/testprofile.d +++ b/gcc/testsuite/gdc.test/compilable/testprofile.d @@ -20,4 +20,3 @@ void main() { "lala", "lala", "lala", "lala"); } - diff --git a/gcc/testsuite/gdc.test/compilable/testsctreturn.d b/gcc/testsuite/gdc.test/compilable/testsctreturn.d index 7826cd4..0d0af2e 100644 --- a/gcc/testsuite/gdc.test/compilable/testsctreturn.d +++ b/gcc/testsuite/gdc.test/compilable/testsctreturn.d @@ -32,4 +32,3 @@ struct S return &i; } } - diff --git a/gcc/testsuite/gdc.test/compilable/typeid_name.d b/gcc/testsuite/gdc.test/compilable/typeid_name.d index b2292bf..a0aa052 100644 --- a/gcc/testsuite/gdc.test/compilable/typeid_name.d +++ b/gcc/testsuite/gdc.test/compilable/typeid_name.d @@ -11,4 +11,3 @@ class Tiger : Panzer {} static assert (() { Panzer p = new Tiger(); return classname(p); } () == "Tiger"); - diff --git a/gcc/testsuite/gdc.test/compilable/vcg-ast.d b/gcc/testsuite/gdc.test/compilable/vcg-ast.d index 61767cc..4673677 100644 --- a/gcc/testsuite/gdc.test/compilable/vcg-ast.d +++ b/gcc/testsuite/gdc.test/compilable/vcg-ast.d @@ -61,4 +61,3 @@ void main() { values!wchar_t; } - diff --git a/gcc/testsuite/gdc.test/compilable/version.d b/gcc/testsuite/gdc.test/compilable/version.d index 00c5c80..86d06cb 100644 --- a/gcc/testsuite/gdc.test/compilable/version.d +++ b/gcc/testsuite/gdc.test/compilable/version.d @@ -20,4 +20,4 @@ version (D_TypeInfo) else { static assert(0); -}
\ No newline at end of file +} |