summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.test/compilable/noreturn1.d
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2022-07-26 18:13:54 +0200
committerIain Buclaw <ibuclaw@gdcproject.org>2022-07-26 23:43:13 +0200
commit81a0fa31ce96327618023b476ea121dbe2494b04 (patch)
tree7a92b40bb7124e7e2449fef9983e22db836a0f65 /gcc/testsuite/gdc.test/compilable/noreturn1.d
parent2009850b2b7042a678c385cd72e6ceb40caac8cd (diff)
d: Merge upstream dmd 76e3b41375, druntime 1462ebd1, phobos 5fef0d28f.
Updates D language version to v2.100.1. D front-end changes: - Fix delegate literal with inferred return value that requires following alias-this to not use class cast. - Fix internal error on variadic template type instantiated with two arrays of classes. - `scope(failure)' blocks that contain `return' statements are now deprecated. - Fix regression where wrong cast was inserted for ternary operator and non-int enums. - Fix internal error in code generation trying to reference _d_arraysetctor. - Fix memory corruption when array literal is passed to map in lambda, then returned from nested function. - Generate invariant id on the basis of location rather than a global counter. - Make `noreturn' conversions work. - Fix segfault when `.stringof' of template alias overloaded with function accessed by trait. - Empty array literal passed to scope param not 'falsey' anymore. Phobos changes: - Avoid copying ranges in std.algorithm.comparison.equal. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 76e3b41375. * dmd/VERSION: Bump version to v2.100.1. * decl.cc (DeclVisitor::visit (VarDeclaration *)): Evaluate RHS of noreturn declaration expressions first. * expr.cc (ExprVisitor::visit (AssignExp *)): Don't generate assignment for noreturn types. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime 1462ebd1. * src/MERGE: Merge upstream phobos 5fef0d28f.
Diffstat (limited to 'gcc/testsuite/gdc.test/compilable/noreturn1.d')
-rw-r--r--gcc/testsuite/gdc.test/compilable/noreturn1.d28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.test/compilable/noreturn1.d b/gcc/testsuite/gdc.test/compilable/noreturn1.d
index 5bba9baa72a..e648a56d896 100644
--- a/gcc/testsuite/gdc.test/compilable/noreturn1.d
+++ b/gcc/testsuite/gdc.test/compilable/noreturn1.d
@@ -122,3 +122,31 @@ noreturn testdg(noreturn delegate() dg)
{
dg();
}
+
+noreturn func()
+{
+ while(1)
+ {
+ }
+}
+alias AliasSeq(T...) = T;
+alias Types = AliasSeq!(bool, byte, ubyte, short, ushort, int, uint,
+ long, ulong, char, wchar, dchar, float, double,
+ real);
+void noreturnImplicit()
+{
+ /*
+ Testing both ways because, although the underlying table
+ is symmetrical the code that calls into it may be buggy.
+ */
+ {
+ int x = 2 + func();
+ int y = func() + 2;
+ }
+ foreach(T; Types)
+ {
+ T value;
+ auto x = value + throw new Exception("Hello");
+ auto y = (throw new Exception("wow")) + value;
+ }
+}