From 63b334414a07c02ca6d4f6916ecf33d947fa90b9 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 2 Dec 2017 15:46:40 +0100 Subject: [PATCH 1/6] Make deprecation warnings compile errors --- posix.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posix.mak b/posix.mak index 99d57b2999..ca1ddb75fa 100644 --- a/posix.mak +++ b/posix.mak @@ -77,7 +77,7 @@ ifeq (solaris,$(OS)) endif # Set DFLAGS -UDFLAGS:=-conf= -Isrc -Iimport -w -dip1000 -preview=fieldwise $(MODEL_FLAG) $(PIC) $(OPTIONAL_COVERAGE) +UDFLAGS:=-conf= -Isrc -Iimport -w -de -dip1000 -preview=fieldwise $(MODEL_FLAG) $(PIC) $(OPTIONAL_COVERAGE) ifeq ($(BUILD),debug) UDFLAGS += -g -debug DFLAGS:=$(UDFLAGS) From 10a531ca505890cfe46490abd328f74b4183d72d Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 12 Mar 2018 14:33:11 +0100 Subject: [PATCH 2/6] Fix Issue 18530 - don't use the deprecated delete in the runtime --- src/rt/lifetime.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rt/lifetime.d b/src/rt/lifetime.d index 09b5c69e48..383afb5e84 100644 --- a/src/rt/lifetime.d +++ b/src/rt/lifetime.d @@ -1180,7 +1180,7 @@ extern (C) void _d_delarray_t(void[]* p, const TypeInfo_Struct ti) } } -unittest +deprecated unittest { __gshared size_t countDtor = 0; struct S @@ -2567,7 +2567,7 @@ unittest // test struct finalizers debug(SENTINEL) {} else -unittest +deprecated unittest { __gshared int dtorCount; static struct S1 From e552dbbf4eb4dc1c881c667f9293e7317b1d2f89 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 12 Mar 2018 15:09:47 +0100 Subject: [PATCH 3/6] Mark deprecated FracSec unittests --- src/core/time.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index d08bc0d916..10eca7e446 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -3615,7 +3615,7 @@ public: return FracSec(hnsecs); } - unittest + deprecated unittest { assert(FracSec.from!"msecs"(0) == FracSec(0)); assert(FracSec.from!"usecs"(0) == FracSec(0)); @@ -3623,18 +3623,18 @@ public: foreach (sign; [1, -1]) { - _assertThrown!TimeException(from!"msecs"(1000 * sign)); + //_assertThrown!TimeException(from!"msecs"(1000 * sign)); assert(FracSec.from!"msecs"(1 * sign) == FracSec(10_000 * sign)); assert(FracSec.from!"msecs"(999 * sign) == FracSec(9_990_000 * sign)); - _assertThrown!TimeException(from!"usecs"(1_000_000 * sign)); + //_assertThrown!TimeException(from!"usecs"(1_000_000 * sign)); assert(FracSec.from!"usecs"(1 * sign) == FracSec(10 * sign)); assert(FracSec.from!"usecs"(999 * sign) == FracSec(9990 * sign)); assert(FracSec.from!"usecs"(999_999 * sign) == FracSec(9999_990 * sign)); - _assertThrown!TimeException(from!"hnsecs"(10_000_000 * sign)); + //_assertThrown!TimeException(from!"hnsecs"(10_000_000 * sign)); assert(FracSec.from!"hnsecs"(1 * sign) == FracSec(1 * sign)); assert(FracSec.from!"hnsecs"(999 * sign) == FracSec(999 * sign)); From afb5af023bf3b1ea374d1fba8149d3ab337fba92 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 4 Apr 2019 12:54:21 +0200 Subject: [PATCH 4/6] Remove deprecated delete from core.sync.event --- src/core/sync/event.d | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/core/sync/event.d b/src/core/sync/event.d index 2fe5ea8a55..39b5431be2 100644 --- a/src/core/sync/event.d +++ b/src/core/sync/event.d @@ -302,7 +302,7 @@ unittest { import core.thread, core.atomic; - auto event = new Event(true, false); + scope event = new Event(true, false); int numThreads = 10; shared int numRunning = 0; @@ -326,6 +326,4 @@ unittest assert(numRunning == numThreads); assert(MonoTime.currTime - start < 5.dur!"seconds"); - - delete event; } From 9b706b935f5f234ffa7fb95334066ab47dc1527c Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 4 Apr 2019 13:17:18 +0200 Subject: [PATCH 5/6] Workaround Issue 19789: add a copy of _assertThrown --- src/core/time.d | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/core/time.d b/src/core/time.d index 10eca7e446..fcf8433230 100644 --- a/src/core/time.d +++ b/src/core/time.d @@ -3621,20 +3621,33 @@ public: assert(FracSec.from!"usecs"(0) == FracSec(0)); assert(FracSec.from!"hnsecs"(0) == FracSec(0)); + // workaround for https://issues.dlang.org/show_bug.cgi?id=19789 + void _assertThrown(T : Throwable = Exception, E) + (lazy E expression, + string msg = null) + { + bool thrown = false; + try + expression(); + catch (T t) + thrown = true; + assert(thrown, "No exception was thrown."); + } + foreach (sign; [1, -1]) { - //_assertThrown!TimeException(from!"msecs"(1000 * sign)); + _assertThrown!TimeException(from!"msecs"(1000 * sign)); assert(FracSec.from!"msecs"(1 * sign) == FracSec(10_000 * sign)); assert(FracSec.from!"msecs"(999 * sign) == FracSec(9_990_000 * sign)); - //_assertThrown!TimeException(from!"usecs"(1_000_000 * sign)); + _assertThrown!TimeException(from!"usecs"(1_000_000 * sign)); assert(FracSec.from!"usecs"(1 * sign) == FracSec(10 * sign)); assert(FracSec.from!"usecs"(999 * sign) == FracSec(9990 * sign)); assert(FracSec.from!"usecs"(999_999 * sign) == FracSec(9999_990 * sign)); - //_assertThrown!TimeException(from!"hnsecs"(10_000_000 * sign)); + _assertThrown!TimeException(from!"hnsecs"(10_000_000 * sign)); assert(FracSec.from!"hnsecs"(1 * sign) == FracSec(1 * sign)); assert(FracSec.from!"hnsecs"(999 * sign) == FracSec(999 * sign)); From b39d5d1ba1f2748443f0540078be8c8434e94c74 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 4 Apr 2019 12:59:40 +0200 Subject: [PATCH 6/6] Add cast(int) to arraop to retain the deprecated int promotion behavior --- src/core/internal/arrayop.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/internal/arrayop.d b/src/core/internal/arrayop.d index 620ce06e75..010a5d3351 100644 --- a/src/core/internal/arrayop.d +++ b/src/core/internal/arrayop.d @@ -141,7 +141,7 @@ template typeCheck(bool fail, T, Args...) { alias UT = Args[idx - 1]; enum op = Args[idx][1 .. $]; - static if (is(typeof((UT a) => mixin(op ~ " a")) RT == return)) + static if (is(typeof((UT a) => mixin(op ~ "cast(int) a")) RT == return)) alias typeCheck = typeCheck!(fail, T, Args[0 .. idx - 1], RT, Args[idx + 1 .. $]); else static if (fail) static assert(0, "Unary `" ~ op ~ "` not supported for type `" ~ UT.stringof ~ "`."); @@ -271,7 +271,7 @@ string scalarExp(Args...)() else static if (isUnaryOp(arg)) { auto op = arg[0] == 'u' ? arg[1 .. $] : arg; - stack[$ - 1] = op ~ stack[$ - 1]; + stack[$ - 1] = op ~ "cast(int)"~ stack[$ - 1]; } else static if (arg == "=") {