Hello community,

here is the log from the commit of package dmd for openSUSE:Factory checked in 
at 2018-08-20 16:19:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dmd (Old)
 and      /work/SRC/openSUSE:Factory/.dmd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dmd"

Mon Aug 20 16:19:44 2018 rev:18 rq:630330 version:2.081.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/dmd/dmd.changes  2018-07-18 22:52:35.783228216 
+0200
+++ /work/SRC/openSUSE:Factory/.dmd.new/dmd.changes     2018-08-20 
16:19:46.036851821 +0200
@@ -1,0 +2,18 @@
+Sat Aug 18 21:58:23 UTC 2018 - matthias.elias...@gmail.com
+
+- Update to 2.081.2
+  - DMD Compiler regressions
+    * [REG 2.080] SIGSEGV in el_ptr (s=0x15) at dmd/backend/el.c:1760
+    * dmd 2.081 crashed by getVirtualFunctions for a interface extended 
interface
+  - DMD Compiler bugs
+    * Associative array opIn with static array key fails with dynamic array
+  - Phobos bugs
+    * Cannot inline "...Slides.numberOfFullFrames", "...Slides.gap"
+  - Druntime bugs
+    * __delete doesn't work with immutable
+- Changes in 2.081.1
+  - DMD Compiler regressions
+    * [REG2.081] getOverloads traits returns empty tuples for void functions
+    * [REG 2.080.1] Error: const(Object) is used as a type with structs that 
have symbol named Object
+
+-------------------------------------------------------------------

Old:
----
  dmd-2.081.0.tar.gz
  druntime-2.081.0.tar.gz
  phobos-2.081.0.tar.gz

New:
----
  dmd-2.081.2.tar.gz
  druntime-2.081.2.tar.gz
  phobos-2.081.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ dmd.spec ++++++
--- /var/tmp/diff_new_pack.SDMCk7/_old  2018-08-20 16:19:47.788854295 +0200
+++ /var/tmp/diff_new_pack.SDMCk7/_new  2018-08-20 16:19:47.792854301 +0200
@@ -20,7 +20,7 @@
 %define sover  0_81
 %define auto_bootstrap 1
 Name:           dmd
-Version:        2.081.0
+Version:        2.081.2
 Release:        0
 Summary:        D Programming Language 2.0
 License:        BSL-1.0

++++++ dmd-2.081.0.tar.gz -> dmd-2.081.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/VERSION new/dmd-2.081.2/VERSION
--- old/dmd-2.081.0/VERSION     2018-07-03 20:08:37.000000000 +0200
+++ new/dmd-2.081.2/VERSION     2018-08-12 13:50:48.000000000 +0200
@@ -1 +1 @@
-v2.081.0
+v2.081.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dmd-2.081.0/changelog/deprecate_ctor_in_static_block.dd 
new/dmd-2.081.2/changelog/deprecate_ctor_in_static_block.dd
--- old/dmd-2.081.0/changelog/deprecate_ctor_in_static_block.dd 2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/deprecate_ctor_in_static_block.dd 1970-01-01 
01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-Deprecate allowing a constructor declaration in a static block
-
-Before patch:
-The language specification states that a static constructor is
-defined using the construction "static this()". Defining a
-constructor inside a static block does not have any effect
-on the constructor. The following code samples do not affect
-the constructor in any way:
-
----
-static:
-    this() {}
----
-
----
-static
-{
-    this() {}
-}
----
-
-The compiler does not issue any warning/error on the above code
-samples and generates a normal constructor which is not ran before
-the main() function. This leads to situations in which the
-compiler is not able to correctly indicate the problem:
-
----
-class A
-{
-    static
-    {
-        this() {}
-    }
-
-    this() {}
-}
-
-void main()
-{
-    new A();
-}
----
-
-This code will result in an error message indicating that
-there is a multiple definition of the constructor this()
-which is a misleading message.
-
-After patch:
-Whenever a constructor is encountered in a static context a
-deprecation message is issued stating that the `static`
-keyword does not have any effect on the constructor.
-The solution is to declare the constructor outside the
-static block either as a normal constructor or a static
-one (`static this()`).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dmd-2.081.0/changelog/deprecate_this_super_as_types.dd 
new/dmd-2.081.2/changelog/deprecate_this_super_as_types.dd
--- old/dmd-2.081.0/changelog/deprecate_this_super_as_types.dd  2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/deprecate_this_super_as_types.dd  1970-01-01 
01:00:00.000000000 +0100
@@ -1,33 +0,0 @@
-Deprecate usage of `this` and `super` as types
-
-Prior to this release, `this` and `super` could be used as both data or types
-depending on the context.  Starting with this release using `this` or `super`
-as a type will result in a compiler error.
-
----
-class C
-{
-    shared(this) x;    // Deprecation: Using `this` as a type is deprecated. 
Use `typeof(this)` instead
-}
-
-class D : C
-{
-    shared(super) a;   // Deprecation: Using `super` as a type is deprecated. 
Use `typeof(super)` instead
-    super b;           // Deprecation: Using `super` as a type is deprecated. 
Use `typeof(super)` instead
-}
----
-
-Use `typeof(super)` or `typeof(this)` instead.
-
----
-class C
-{
-    shared(typeof(this)) x;
-}
-
-class D : C
-{
-    shared(typeof(super)) a;
-    typeof(super) b;
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dmd-2.081.0/changelog/expression-based_contract_syntax.dd 
new/dmd-2.081.2/changelog/expression-based_contract_syntax.dd
--- old/dmd-2.081.0/changelog/expression-based_contract_syntax.dd       
2018-07-03 20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/expression-based_contract_syntax.dd       
1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-Implement DIP 1009 - Add Expression-Based Contract Syntax
-
-Expression-based contract syntax has been added: Contracts that consist of a 
single assertion can now be written more succinctly and multiple `in` or `out` 
contracts can be specified for the same function.
-
-Example:
-
----
-class C {
-    private int x;
-    invariant(x >= 0);
-    // ...
-}
-
-int fun(ref int a, int b)
-    in(a > 0)
-    in(b >= 0, "b cannot be negative")
-    out(r; r > 0, "return must be positive")
-    out(; a != 0)
-{
-    // ...
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/changelog/extern_cpp_overhaul.dd 
new/dmd-2.081.2/changelog/extern_cpp_overhaul.dd
--- old/dmd-2.081.0/changelog/extern_cpp_overhaul.dd    2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/extern_cpp_overhaul.dd    1970-01-01 
01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-`extern (C++)` construction, destruction, operators and other mangling 
improvements
-
-Many improvements have been made to the `extern(C++)` experience in this 
release cycle.
-
-Mangling improvements include:
-
-$(UL
-  $(LI  Constructor/destructor mangling matches C++)
-  $(LI  Compatible D style operators now mangle as C++ operators)
-  $(LI  `nullptr_t` mangles correctly)
-  $(LI  Various mangling bugs have been fixed)
-)
-
-`extern(C++)` APIs that use `nullptr_t` can use `typeof(null)` on the D side:
----
-alias nullptr_t = typeof(null);
-extern (C++) void fun(nullptr_t);
----
-
-`extern (C++)` mangling of operators is working for all operators that are 
semantically equivalent.
-This list includes all instantiations of `opUnary`, `opBinary`, `opAssign`, 
`opOpAssign`, `opCast`, `opEquals`, `opIndex`, `opCall`.
-Two notable exceptions are `opCmp`, and C++ `operator !`, which don't have 
compatible implementations.
-
-Mangling of `extern (C++) class` constructors and destructor are working.
-
-This release also includes ABI fixes where destructors are now correctly added 
to the virtual table, and constructor/destructor calling semantics now match 
C++.
-With this, mixed-language class hierarchies are working, with 
construction/destruction being supported in either language.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/changelog/fix16206.dd 
new/dmd-2.081.2/changelog/fix16206.dd
--- old/dmd-2.081.0/changelog/fix16206.dd       2018-07-03 20:08:37.000000000 
+0200
+++ new/dmd-2.081.2/changelog/fix16206.dd       1970-01-01 01:00:00.000000000 
+0100
@@ -1,25 +0,0 @@
-Support for iterating template overloads
-
-`__traits(getOverloads)` has been extended to return template overloads when 
passed an optional parameter with a true value.
-
----
-struct S
-{
-    static int foo()() { return 0; }
-    static int foo()(int n) { return 1; }
-    static int foo(string s) { return 2; }
-    enum foo(int[] arr) = arr.length;
-}
-
-alias AliasSeq(T...) = T;
-
-alias allFoos = AliasSeq!(__traits(getOverloads, S, "foo", true));
-
-static assert(allFoos.length == 4);
-
-static assert(allFoos[0]("") == 2);
-static assert(allFoos[1]() == 0);
-static assert(allFoos[2](1) == 1);
-alias foo3 = allFoos[3];
-static assert(foo3!([]) == 0);
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/changelog/getlinkage_for_classes.dd 
new/dmd-2.081.2/changelog/getlinkage_for_classes.dd
--- old/dmd-2.081.0/changelog/getlinkage_for_classes.dd 2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/getlinkage_for_classes.dd 1970-01-01 
01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-__traits(getLinkage, ...) now works on structs, classes, and interfaces.
-
-It is now possible to detect the language ABI specified for a struct, class, 
or interface.
-
----
-class MyClass {}
-extern (C++) struct MyCPPStruct {}
-extern (C++) interface MyCPPInterface {}
-extern (Objective-C) interface MyObjcInterface {}
-static assert(__traits(getLinkage, MyClass) == "D");
-static assert(__traits(getLinkage, MyCPPStruct) == "C++");
-static assert(__traits(getLinkage, MyCPPInterface) == "C++");
-static assert(__traits(getLinkage, MyObjcInterface) == "Objective-C");
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/changelog/implicit_catch_error.dd 
new/dmd-2.081.2/changelog/implicit_catch_error.dd
--- old/dmd-2.081.0/changelog/implicit_catch_error.dd   2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/implicit_catch_error.dd   1970-01-01 
01:00:00.000000000 +0100
@@ -1,23 +0,0 @@
-Implicit `catch` statements will now result in an error
-
-See the $(LINK2 $(ROOT_DIR)deprecate.html#Implicit catch statement, Deprecated 
Features)
-for more information.
-
-Implicit `catch` statements were deprecated in 2.072.  Starting with this 
release, implicit
-`catch` statements will cause the compiler to emit an error.
-
----
-import std.stdio;
-
-void main()
-{
-    int[] arr = new int[](10);
-    // This will throw a RangeError
-    try { arr[42]++; }
-    catch  // Error: `catch` statement without an exception specification is 
deprecated;
-           // use `catch(Throwable)` for old behavior
-    {
-        writeln("An error was caught and ignored");
-    }
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dmd-2.081.0/changelog/implicit_enum_comparison_error.dd 
new/dmd-2.081.2/changelog/implicit_enum_comparison_error.dd
--- old/dmd-2.081.0/changelog/implicit_enum_comparison_error.dd 2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/implicit_enum_comparison_error.dd 1970-01-01 
01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-Implicit comparison of different enums will now result in an error
-
-See the $(LINK2 $(ROOT_DIR)deprecate.html#Implicit comparison of different 
enums, Deprecated Features) for more information.
-
-Implicit comparison of different enums was deprecated in 2.075.  Starting with 
this release, implicit comparison of different
-enums will cause the compiler to emit an error.
-
----
-enum Status
-{
-    good,
-    bad
-}
-enum OtherStatus
-{
-    ok,
-    no
-}
-static assert(Status.good == OtherStatus.ok); // Error: Comparison between 
different enumeration types `Status` and `OtherStatus`;
-                                              // If this behavior is intended 
consider using `std.conv.asOriginalType`
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dmd-2.081.0/changelog/implicit_string_concatenation_error.dd 
new/dmd-2.081.2/changelog/implicit_string_concatenation_error.dd
--- old/dmd-2.081.0/changelog/implicit_string_concatenation_error.dd    
2018-07-03 20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/implicit_string_concatenation_error.dd    
1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-Implicit string concatenation will now result in an error
-
-See the $(LINK2 $(ROOT_DIR)deprecate.html#Implicit%20string%20concatenation, 
Deprecated Features) for more information.
-
-Implicit string concatenation was deprecated in 2.072.  Starting with this 
release, implicit string concatenation will cause the compiler
-to emit an error.
-
----
-void main()
-{
-    string s = "Hello" ", World!";  // Error: Implicit string concatenation is 
deprecated, use "" ~ "" instead
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/changelog/iretq.dd 
new/dmd-2.081.2/changelog/iretq.dd
--- old/dmd-2.081.0/changelog/iretq.dd  2018-07-03 20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/iretq.dd  1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-`IRETQ` is now supported in inline assembler.
-
-`IRETQ` is the 64-bit version of the already supported `IRET` instruction. With
-its inclusion, it is now possible to write 64-bit interrupt service routines
-in pure D.
-
----
-void isr()
-{
-    asm
-    {
-        naked;
-        // ...
-        iretq;
-    }
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/changelog/min_runtime_classes.dd 
new/dmd-2.081.2/changelog/min_runtime_classes.dd
--- old/dmd-2.081.0/changelog/min_runtime_classes.dd    2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/min_runtime_classes.dd    1970-01-01 
01:00:00.000000000 +0100
@@ -1,100 +0,0 @@
-Interfaces and classes can be used without the runtime if only static fields 
are utilized
-
-Prior to this release any attempt to use interfaces and/or classes without the 
runtime would result
-in compile-time errors due to the lack of `TypeInfo`.  However, as long as 
classes are not instantiated
-there is no need for `TypeInfo`.
-
-Beginning with this release the compiler will no longer emit errors about 
missing `TypeInfo` when
-using interfaces and/or classes as long as they are not instantiated and only 
`shared static` members are
-utilized.
-
-$(B Example 1)
----
-module object
-
-private alias extern(C) int function(char[][] args) MainFunc;
-private extern (C) int _d_run_main(int argc, char** argv, MainFunc mainFunc)
-{
-    return mainFunc(null);  // assumes `void main()` for simplicity
-}
----
-
----
-interface I
-{
-    shared static int i;
-}
-
-class A : I
-{
-    shared static int a;
-}
-
-class B : A
-{
-    shared static int b;
-}
-
-void main()
-{
-    B.b = B.a + B.i;
-}
----
-
-$(CONSOLE
-dmd -conf= -defaultlib= main.d object.d -of=main
-size main
-   text    data     bss     dec     hex filename
-   1867    1208      32    3107     c23 main
-)
-
-Non-shared static members can also be used, but will require a thread-local 
storage (TLS) implementation.
-For example, on Linux the TLS implementation is already supplied by the C 
runtime and C
-standard library, so, since dmd automatically calls gcc to link the final 
executable, it will automatically
-bring in the TLS implementation.
-
-$(B Example 2)
----
-module object
-
-private alias extern(C) int function(char[][] args) MainFunc;
-private extern (C) int _d_run_main(int argc, char** argv, MainFunc mainFunc)
-{
-    return mainFunc(null);  // assumes `void main()` for simplicity
-}
----
-
----
-interface I
-{
-    static int i;
-}
-
-class A : I
-{
-    static int a;
-}
-
-class B : A
-{
-    static int b;
-}
-
-void main()
-{
-    B.b = B.a + B.i;
-}
----
-
-$(CONSOLE
-dmd -conf= -defaultlib= main.d object.d -of=main
-size main
-   text    data     bss     dec     hex filename
-   2123    1296      28    3447     d77 main
-)
-
-Some platforms may require some TLS implementation code or some specialized 
build procedures to link
-in a TLS implementation.
-
-This will hopefully reduce friction for those using D without the runtime, 
porting D to new platforms,
-or using D from other langauges, while enabling more features and idioms of D 
to be used in those use cases.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/changelog/redundant_stc_error.dd 
new/dmd-2.081.2/changelog/redundant_stc_error.dd
--- old/dmd-2.081.0/changelog/redundant_stc_error.dd    2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/changelog/redundant_stc_error.dd    1970-01-01 
01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-Specifying redundant storage classes will now result in a compiler error
-
-Specifying redundant storage classes was deprecated long ago and was 
originally scheduled to emit a compiler error beginning with the 2.068 release.
-That promise has been fulfilled with this release.
-
----
-@safe void f() @safe {}   // Error: redundant attribute `@safe`
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/src/dmd/clone.d 
new/dmd-2.081.2/src/dmd/clone.d
--- old/dmd-2.081.0/src/dmd/clone.d     2018-07-03 20:08:37.000000000 +0200
+++ new/dmd-2.081.2/src/dmd/clone.d     2018-08-12 13:50:48.000000000 +0200
@@ -772,8 +772,8 @@
         "size_t h = 0;" ~
         "foreach (i, T; typeof(p.tupleof))" ~
         // workaround https://issues.dlang.org/show_bug.cgi?id=17968
-        "    static if(is(T* : const(Object)*)) " ~
-        "        h = h * 33 + typeid(const(Object)).getHash(cast(const 
void*)&p.tupleof[i]);" ~
+        "    static if(is(T* : const(.object.Object)*)) " ~
+        "        h = h * 33 + typeid(const(.object.Object)).getHash(cast(const 
void*)&p.tupleof[i]);" ~
         "    else " ~
         "        h = h * 33 + typeid(T).getHash(cast(const 
void*)&p.tupleof[i]);" ~
         "return h;";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/src/dmd/dinterpret.d 
new/dmd-2.081.2/src/dmd/dinterpret.d
--- old/dmd-2.081.0/src/dmd/dinterpret.d        2018-07-03 20:08:37.000000000 
+0200
+++ new/dmd-2.081.2/src/dmd/dinterpret.d        2018-08-12 13:50:48.000000000 
+0200
@@ -2906,6 +2906,7 @@
             auto sle = cast(StructLiteralExp)pue.exp();
             sle.type = e.type;
             sle.ownedByCtfe = OwnedBy.ctfe;
+            sle.origin = e.origin;
             result = sle;
         }
         else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/src/dmd/expressionsem.d 
new/dmd-2.081.2/src/dmd/expressionsem.d
--- old/dmd-2.081.0/src/dmd/expressionsem.d     2018-07-03 20:08:37.000000000 
+0200
+++ new/dmd-2.081.2/src/dmd/expressionsem.d     2018-08-12 13:50:48.000000000 
+0200
@@ -8923,7 +8923,7 @@
                 TypeAArray ta = cast(TypeAArray)t2b;
 
                 // Special handling for array keys
-                if (!arrayTypeCompatible(exp.e1.loc, exp.e1.type, ta.index))
+                if (!arrayTypeCompatibleWithoutCasting(exp.e1.type, ta.index))
                 {
                     // Convert key to type of key
                     exp.e1 = exp.e1.implicitCastTo(sc, ta.index);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/src/dmd/mars.d 
new/dmd-2.081.2/src/dmd/mars.d
--- old/dmd-2.081.0/src/dmd/mars.d      2018-07-03 20:08:37.000000000 +0200
+++ new/dmd-2.081.2/src/dmd/mars.d      2018-08-12 13:50:48.000000000 +0200
@@ -1412,7 +1412,7 @@
             buf.writeByte(' ');
             buf.writestring(str.toChars());
         }
-        stream.fprintf("predefs  %s", buf.peekString());
+        stream.fprintf("predefs  %s\n", buf.peekString());
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/src/dmd/traits.d 
new/dmd-2.081.2/src/dmd/traits.d
--- old/dmd-2.081.0/src/dmd/traits.d    2018-07-03 20:08:37.000000000 +0200
+++ new/dmd-2.081.2/src/dmd/traits.d    2018-08-12 13:50:48.000000000 +0200
@@ -1009,7 +1009,8 @@
                 ifd = sym.isInterfaceDeclaration();
             // If the symbol passed as a parameter is an
             // interface that inherits other interfaces
-            if (ifd && ifd.interfaces)
+            overloadApply(f, &dg);
+            if (ifd && ifd.interfaces && f)
             {
                 // check the overloads of each inherited interface individually
                 foreach (bc; ifd.interfaces)
@@ -1018,8 +1019,6 @@
                         overloadApply(fd, &dg);
                 }
             }
-            else
-                overloadApply(f, &dg);
 
             auto tup = new TupleExp(e.loc, exps);
             return tup.expressionSemantic(scx);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/test/compilable/interpret3.d 
new/dmd-2.081.2/test/compilable/interpret3.d
--- old/dmd-2.081.0/test/compilable/interpret3.d        2018-07-03 
20:08:37.000000000 +0200
+++ new/dmd-2.081.2/test/compilable/interpret3.d        2018-08-12 
13:50:48.000000000 +0200
@@ -7742,3 +7742,20 @@
 
 static assert(!__traits(compiles, { alias bug18057 = RBNode!int; }));
 
+/**************************************************/
+// https://issues.dlang.org/show_bug.cgi?id=19074
+
+struct S19074a { }
+
+struct S19074b
+{
+    S19074a field;
+    this(S19074a) { }
+
+    static const S19074b* data = new S19074b(S19074a());
+}
+
+void test19074()
+{
+    auto var = S19074b.data;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/test/compilable/test17373.d 
new/dmd-2.081.2/test/compilable/test17373.d
--- old/dmd-2.081.0/test/compilable/test17373.d 1970-01-01 01:00:00.000000000 
+0100
+++ new/dmd-2.081.2/test/compilable/test17373.d 2018-08-12 13:50:48.000000000 
+0200
@@ -0,0 +1,32 @@
+// https://issues.dlang.org/show_bug.cgi?id=17373
+interface Foo { void visit (int); }
+interface Bar { void visit(double); }
+interface FooBar : Foo, Bar {}
+static assert(__traits(getOverloads, FooBar, "visit").length == 2);
+
+interface Fbar { void visit(char); void visit(double); }
+interface Triple : Foo, Bar, Fbar {}
+static assert(__traits(getOverloads, Triple, "visit").length == 3);
+
+interface InheritanceMadness : FooBar, Triple {}
+static assert(__traits(getOverloads, Triple, "visit").length == 3);
+
+interface Simple
+{
+    int square(int);
+    real square(real);
+}
+static assert(__traits(getOverloads, Simple, "square").length == 2);
+
+// https://issues.dlang.org/show_bug.cgi?id=19064
+interface InputStream {}
+interface OutputStream{}
+interface Stream : InputStream, OutputStream{}
+interface ConnectionStream : Stream
+{
+    @property bool connected() const;
+    void close();
+}
+
+static assert(__traits(getOverloads, ConnectionStream, "connected").stringof 
== "tuple(connected)");
+static assert(__traits(getOverloads, ConnectionStream, "close").stringof == 
"tuple(close)");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/test/compilable/test19066.d 
new/dmd-2.081.2/test/compilable/test19066.d
--- old/dmd-2.081.0/test/compilable/test19066.d 1970-01-01 01:00:00.000000000 
+0100
+++ new/dmd-2.081.2/test/compilable/test19066.d 2018-08-12 13:50:48.000000000 
+0200
@@ -0,0 +1,13 @@
+class C {}
+
+int Object;
+
+struct S
+{
+    int object;
+    C Object;
+}
+
+void main()
+{
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/test/fail_compilation/fail19076.d 
new/dmd-2.081.2/test/fail_compilation/fail19076.d
--- old/dmd-2.081.0/test/fail_compilation/fail19076.d   1970-01-01 
01:00:00.000000000 +0100
+++ new/dmd-2.081.2/test/fail_compilation/fail19076.d   2018-08-12 
13:50:48.000000000 +0200
@@ -0,0 +1,11 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail19076.d(11): Error: no property `V` for type `fail19076.I`
+fail_compilation/fail19076.d(11): Error: `(I).V` cannot be resolved
+---
+*/
+
+interface P { }
+interface I : P { }
+auto F = __traits(getVirtualFunctions, I, "V");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/test/fail_compilation/test19112.d 
new/dmd-2.081.2/test/fail_compilation/test19112.d
--- old/dmd-2.081.0/test/fail_compilation/test19112.d   1970-01-01 
01:00:00.000000000 +0100
+++ new/dmd-2.081.2/test/fail_compilation/test19112.d   2018-08-12 
13:50:48.000000000 +0200
@@ -0,0 +1,16 @@
+/* TEST_OUTPUT:
+---
+fail_compilation/test19112.d(13): Error: cannot implicitly convert expression 
`[123, 456]` of type `int[]` to `int[1]`
+fail_compilation/test19112.d(15): Error: cannot implicitly convert expression 
`a` of type `int[]` to `int[1]`
+---
+*/
+
+// https://issues.dlang.org/show_bug.cgi?id=19112
+
+void main()
+{
+    int[int[1]] aa;
+    int* p = [123, 456] in aa;
+    int[] a;
+    p = a in aa;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/test/runnable/test17373.d 
new/dmd-2.081.2/test/runnable/test17373.d
--- old/dmd-2.081.0/test/runnable/test17373.d   2018-07-03 20:08:37.000000000 
+0200
+++ new/dmd-2.081.2/test/runnable/test17373.d   1970-01-01 01:00:00.000000000 
+0100
@@ -1,20 +0,0 @@
-interface Foo { void visit (int); }
-interface Bar { void visit(double); }
-interface FooBar : Foo, Bar {}
-static assert(__traits(getOverloads, FooBar, "visit").length == 2);
-
-interface Fbar { void visit(char); void visit(double); }
-interface Triple : Foo, Bar, Fbar {}
-static assert(__traits(getOverloads, Triple, "visit").length == 3);
-
-interface InheritanceMadness : FooBar, Triple {}
-static assert(__traits(getOverloads, Triple, "visit").length == 3);
-
-interface Simple
-{
-    int square(int);
-    real square(real);
-}
-static assert(__traits(getOverloads, Simple, "square").length == 2);
-
-void main() {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.081.0/test/runnable/testaa.d 
new/dmd-2.081.2/test/runnable/testaa.d
--- old/dmd-2.081.0/test/runnable/testaa.d      2018-07-03 20:08:37.000000000 
+0200
+++ new/dmd-2.081.2/test/runnable/testaa.d      2018-08-12 13:50:48.000000000 
+0200
@@ -1329,6 +1329,20 @@
 }
 
 /************************************************/
+// 19112
+
+void test19112()
+{
+    int[int[1]] aa;
+    aa[[2]] = 1;
+    assert([2] in aa);
+
+    int[int[]] aa2 = [[1, 2, 3]: 4];
+    int[3] k = [1, 2, 3];
+    assert(*(k in aa2) == 4);
+}
+
+/************************************************/
 
 int main()
 {
@@ -1379,6 +1393,7 @@
     test11730();
     test14089();
     test14321();
+    test19112();
 
     printf("Success\n");
     return 0;

++++++ druntime-2.081.0.tar.gz -> druntime-2.081.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/druntime-2.081.0/changelog/backtrace_debug_info_macos.dd 
new/druntime-2.081.2/changelog/backtrace_debug_info_macos.dd
--- old/druntime-2.081.0/changelog/backtrace_debug_info_macos.dd        
2018-06-27 13:15:33.000000000 +0200
+++ new/druntime-2.081.2/changelog/backtrace_debug_info_macos.dd        
1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
-Filenames and line numbers have been added to stacktraces on macOS
-
-When an exception is throw and not caught, a stacktrace is printed. On Linux,
-FreeBSD and DragonFlyBSD this stacktrace includes the filenames and line 
numbers,
-if the application was built with debug info enabled. This feature has now been
-added to macOS.
-
-This requires support from the compiler since debug info is stripped by the
-linker on macOS.
-
-Example:
-
----
-void bar()
-{
-    throw new Exception("bar");
-}
-
-void foo()
-{
-    bar();
-}
-
-void main()
-{
-    foo();
-}
----
-
-Compiling the above code, with debug info enabled, by running: `dmd -g main.d`.
-When running the application it will produce an output similar to:
-
-$(CONSOLE
-object.Exception@main.d(3): bar
-main.d:3 void main.bar() [0x71afdfb]
-main.d:8 void main.foo() [0x71afe0c]
-main.d:13 _Dmain [0x71afd78]
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.081.0/changelog/cpp_destroy.dd 
new/druntime-2.081.2/changelog/cpp_destroy.dd
--- old/druntime-2.081.0/changelog/cpp_destroy.dd       2018-06-27 
13:15:33.000000000 +0200
+++ new/druntime-2.081.2/changelog/cpp_destroy.dd       1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-`object.destroy()` supports `extern(C++)` classes.
-
-`object.destroy()` was crashing when called with an `extern(C++)` class. It 
now correctly destructs and resets the object to `init`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.081.0/changelog/getsect.dd 
new/druntime-2.081.2/changelog/getsect.dd
--- old/druntime-2.081.0/changelog/getsect.dd   2018-06-27 13:15:33.000000000 
+0200
+++ new/druntime-2.081.2/changelog/getsect.dd   1970-01-01 01:00:00.000000000 
+0100
@@ -1,3 +0,0 @@
-Add missing declarations to `core.sys.darwin.mach.getsect`
-
-Declarations that were missing from $(LINK2 
https://opensource.apple.com/source/cctools/cctools-895/include/mach-o/getsect.h.auto.html,
 mach-o/getsect.h) has been added to `core.sys.darwin.mach.getsect`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.081.0/src/core/memory.d 
new/druntime-2.081.2/src/core/memory.d
--- old/druntime-2.081.0/src/core/memory.d      2018-06-27 13:15:33.000000000 
+0200
+++ new/druntime-2.081.2/src/core/memory.d      2018-07-18 16:18:49.000000000 
+0200
@@ -1019,7 +1019,7 @@
     }
     else static if (is(T : E2[], E2))
     {
-        GC.free(x.ptr);
+        GC.free(cast(void*) x.ptr);
         x = null;
     }
 }
@@ -1167,3 +1167,21 @@
     int* pint; __delete(pint);
     S* ps; __delete(ps);
 }
+
+// https://issues.dlang.org/show_bug.cgi?id=19092
+unittest
+{
+    const(int)[] x = [1, 2, 3];
+    assert(GC.addrOf(x.ptr) != null);
+    __delete(x);
+    assert(x is null);
+    assert(GC.addrOf(x.ptr) == null);
+
+    immutable(int)[] y = [1, 2, 3];
+    assert(GC.addrOf(y.ptr) != null);
+    __delete(y);
+    assert(y is null);
+    assert(GC.addrOf(y.ptr) == null);
+}
+
+

++++++ phobos-2.081.0.tar.gz -> phobos-2.081.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.081.0/changelog/remove_std_c.dd 
new/phobos-2.081.2/changelog/remove_std_c.dd
--- old/phobos-2.081.0/changelog/remove_std_c.dd        2018-07-03 
08:08:42.000000000 +0200
+++ new/phobos-2.081.2/changelog/remove_std_c.dd        1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-The deprecated `std.c` package has been removed.
-
-Use the `core.stdc` package instead.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/phobos-2.081.0/changelog/std-algorithm-iteration-joiner.dd 
new/phobos-2.081.2/changelog/std-algorithm-iteration-joiner.dd
--- old/phobos-2.081.0/changelog/std-algorithm-iteration-joiner.dd      
2018-07-03 08:08:42.000000000 +0200
+++ new/phobos-2.081.2/changelog/std-algorithm-iteration-joiner.dd      
1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-The performance of `std.algorithm.iteration.joiner` has been improved
-
-$(H4 DMD)
-
-$(CONSOLE
-> dmd -O -inline -release ./joiner.d && ./joiner
-before.joiner   = 57 secs, 834 ms, 289 μs, and 3 hnsecs
-new.joiner      = 44 secs, 936 ms, 706 μs, and 5 hnsecs
-)
-
-$(H4 LDC)
-
-$(CONSOLE
-> ldmd -O3 -release -inline joiner.d && ./joiner
-before.joiner   = 5 secs, 180 ms, 193 μs, and 7 hnsecs
-new.joiner      = 3 secs, 168 ms, 560 μs, and 6 hnsecs
-)
-
-The benchmark code can be found $(LINK2 
https://gist.github.com/wilzbach/ffd5d20639766a831fd4b1962572897a, here).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/phobos-2.081.0/changelog/std-algorithm-mutation-remove.dd 
new/phobos-2.081.2/changelog/std-algorithm-mutation-remove.dd
--- old/phobos-2.081.0/changelog/std-algorithm-mutation-remove.dd       
2018-07-03 08:08:42.000000000 +0200
+++ new/phobos-2.081.2/changelog/std-algorithm-mutation-remove.dd       
1970-01-01 01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-`std.algorithm.mutation.remove` now only accepts integral values or pair of 
integral values as offset
-
-Previously, without being stated in the documentation,
-$(REF remove, std,algorithm) used to accept any values as `offset`.
-This behavior was very error-prone:
-
----
-import std.algorithm, std.stdio;
-[0, 1, 2, 3, 4].remove(1, 3).writeln; // 0, 2, 4  -- correct
-[0, 1, 2, 3, 4].remove([1, 3]).writeln; // 0, 3, 4  -- incorrect
----
-
-With this release, using arrays as individual elements is no longer valid.
-$(REF tuple, std,typecons) can be used to explicitly indicate that a range
-from `start` to `stop` (non-enclosing) should be removed:
-
----
-import std.algorithm, std.stdio, std.typecons;
-[0, 1, 2, 3, 4].remove(tuple(1, 3)).writeln; // 0, 3, 4
----
-
-However, only 2-tuples are allowed to avoid this un-intuitive scenario:
-
----
-import std.algorithm, std.stdio, std.typecons;
-[0, 1, 2, 3, 4].remove(tuple(1, 3, 4)).writeln; // 0, 4?
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.081.0/changelog/std-math-fminmax.dd 
new/phobos-2.081.2/changelog/std-math-fminmax.dd
--- old/phobos-2.081.0/changelog/std-math-fminmax.dd    2018-07-03 
08:08:42.000000000 +0200
+++ new/phobos-2.081.2/changelog/std-math-fminmax.dd    1970-01-01 
01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-Changed semantics of std.math.{fmin,fmax} wrt. NaNs.
-
-The semantics of $(REF fmin, std, math) and $(REF fmax, std, math) have been
-streamlined with the C functions: if one of the arguments is a NaN, return the
-other. This involves an additional $(REF isNaN, std, math) check. Use
-$(REF min, std, algorithm, comparison) and $(REF max, std, algorithm, 
comparison)
-for the previous semantics performing a single comparison.
-
----
-import std.math;
-assert(fmin(real.nan, 2.0L) == 2.0L);
-assert(fmin(2.0L, real.nan) == 2.0L); // previously: NaN
-assert(isNaN(fmin(real.nan, real.nan)));
-
-import std.algorithm.comparison;
-assert(min(real.nan, 2.0L) == 2.0L);
-assert(isNaN(min(2.0L, real.nan)));
-assert(isNaN(min(real.nan, real.nan)));
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.081.0/std/conv.d 
new/phobos-2.081.2/std/conv.d
--- old/phobos-2.081.0/std/conv.d       2018-07-03 08:08:42.000000000 +0200
+++ new/phobos-2.081.2/std/conv.d       2018-08-08 15:44:52.000000000 +0200
@@ -2737,7 +2737,6 @@
 if (isInputRange!Source && isSomeChar!(ElementType!Source) && !is(Source == 
enum) &&
     isFloatingPoint!Target && !is(Target == enum))
 {
-    import core.stdc.math : HUGE_VAL;
     import std.ascii : isDigit, isAlpha, toLower, toUpper, isHexDigit;
     import std.exception : enforce;
 
@@ -3240,7 +3239,7 @@
         }
     }
   L6: // if overflow occurred
-    enforce(ldval != HUGE_VAL, new ConvException("Range error"));
+    enforce(ldval != real.infinity, new ConvException("Range error"));
 
   L1:
     static if (isNarrowString!Source)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.081.0/std/random.d 
new/phobos-2.081.2/std/random.d
--- old/phobos-2.081.0/std/random.d     2018-07-03 08:08:42.000000000 +0200
+++ new/phobos-2.081.2/std/random.d     2018-08-08 15:44:52.000000000 +0200
@@ -2182,8 +2182,7 @@
         immutable T u = (rng.front - rng.min) * factor;
         rng.popFront();
 
-        import core.stdc.limits : CHAR_BIT;  // CHAR_BIT is always 8
-        static if (isIntegral!R && T.mant_dig >= (CHAR_BIT * R.sizeof))
+        static if (isIntegral!R && T.mant_dig >= (8 * R.sizeof))
         {
             /* If RNG variates are integral and T has enough precision to hold
              * R without loss, we're guaranteed by the definition of factor
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.081.0/std/range/package.d 
new/phobos-2.081.2/std/range/package.d
--- old/phobos-2.081.0/std/range/package.d      2018-07-03 08:08:42.000000000 
+0200
+++ new/phobos-2.081.2/std/range/package.d      2018-08-08 15:44:52.000000000 
+0200
@@ -8587,13 +8587,11 @@
             *      gap: (7 - 4) % 2 = 3 % 2 = 1
             *      end: 7 - 1 = 6
             */
-            pragma(inline, true);
             return (source.length - windowSize)  % stepSize;
         }
 
         private size_t numberOfFullFrames()
         {
-            pragma(inline, true);
             /**
             5.iota.slides(2, 1) => [0, 1], [1, 2], [2, 3], [3, 4]       (4)
             7.iota.slides(2, 2) => [0, 1], [2, 3], [4, 5], [6]          (3)
@@ -8610,7 +8608,6 @@
         // Whether the last slide frame size is less than windowSize
         private bool hasPartialElements()
         {
-            pragma(inline, true);
             static if (withPartial)
                 return gap != 0 && source.length > numberOfFullFrames * 
stepSize;
             else
@@ -9387,6 +9384,14 @@
     }}
 }
 
+// https://issues.dlang.org/show_bug.cgi?id=19082
+@safe unittest
+{
+    import std.algorithm.comparison : equal;
+    import std.algorithm.iteration : map;
+    assert([1].map!(x => x).slide(2).equal!equal([[1]]));
+}
+
 private struct OnlyResult(T, size_t arity)
 {
     private this(Values...)(auto ref Values values)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.081.0/std/uni.d new/phobos-2.081.2/std/uni.d
--- old/phobos-2.081.0/std/uni.d        2018-07-03 08:08:42.000000000 +0200
+++ new/phobos-2.081.2/std/uni.d        2018-08-08 15:44:52.000000000 +0200
@@ -7167,7 +7167,7 @@
 }
 
 /++
-    $(P Iterate a string by grapheme.)
+    $(P Iterate a string by $(LREF Grapheme).)
 
     $(P Useful for doing string manipulation that needs to be aware
     of graphemes.)


Reply via email to