d: Merge upstream dmd 609c3ce2d, phobos 3dd5df686
authorIain Buclaw <ibuclaw@gdcproject.org>
Mon, 25 Jan 2021 12:50:55 +0000 (13:50 +0100)
committerIain Buclaw <ibuclaw@gdcproject.org>
Tue, 26 Jan 2021 08:54:57 +0000 (09:54 +0100)
commit5a36cae275ad84cc7e623f2f5829bdad767e3f6a
treece6b996b6cfcb1b1aa73bcc7786c07ef8df504b1
parenteb77a934eec8fe52e4c5612f5264127290bc517d
d: Merge upstream dmd 609c3ce2d, phobos 3dd5df686

D front-end changes:

 - Contracts for pre- and postconditions are now implicitly "this"
   const, so that state can no longer be altered in these functions.

 - Inside a constructor scope, assigning to aggregate declaration
   members is done by considering the first assignment as initialization
   and subsequent assignments as modifications of the constructed
   object.  For const/immutable fields the initialization is accepted in
   the constructor but subsequent modifications are not.  However this
   rule did not apply when inside a constructor scope there is a call to
   a different constructor.  This been changed so it is now an error
   when there's a double initialization of immutable fields inside a
   constructor.

Phobos changes:

 - Don't run unit-tests for unsupported clocks in std.datetime.  The
   phobos and phobos_shared tests now add -fversion=Linux_Pre_2639 if
   required.

 - Deprecate public extern(C) bindings for getline and getdelim in
   std.stdio.  The correct module for bindings is core.sys.posix.stdio.

Reviewed-on: https://github.com/dlang/dmd/pull/12153
     https://github.com/dlang/phobos/pull/7768

gcc/d/ChangeLog:

* dmd/MERGE: Merge upstream dmd 609c3ce2d.
* d-compiler.cc (Compiler::loadModule): Rename to ...
(Compiler::onParseModule): ... this.
(Compiler::onImport): New function.
* d-lang.cc (d_parse_file): Remove call to Compiler::loadModule.

libphobos/ChangeLog:

* src/MERGE: Merge upstream phobos 3dd5df686.
* testsuite/libphobos.phobos/phobos.exp: Add compiler flag
-fversion=Linux_Pre_2639 if target is linux_pre_2639.
* testsuite/libphobos.phobos_shared/phobos_shared.exp: Likewise.
17 files changed:
gcc/d/d-compiler.cc
gcc/d/d-lang.cc
gcc/d/dmd/MERGE
gcc/d/dmd/compiler.h
gcc/d/dmd/declaration.c
gcc/d/dmd/dmodule.c
gcc/d/dmd/expressionsem.c
gcc/d/dmd/func.c
gcc/d/dmd/root/array.h
gcc/testsuite/gdc.test/fail_compilation/fail18143.d [new file with mode: 0644]
gcc/testsuite/gdc.test/fail_compilation/fail18719.d [new file with mode: 0644]
libphobos/src/MERGE
libphobos/src/std/datetime/systime.d
libphobos/src/std/file.d
libphobos/src/std/stdio.d
libphobos/testsuite/libphobos.phobos/phobos.exp
libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp