init checks and 'out' parameters (#14521)

* I don't care about observable stores
* enforce explicit initializations
* cleaner code for the stdlib
* stdlib: use explicit initializations
* make tests green
* algorithm.nim: set result explicitly
* remove out parameters and bring the PR into a mergable state
* updated the changelog
This commit is contained in:
Andreas Rumpf 2020-06-23 10:53:57 +02:00 • committed by GitHub
commit da29222f86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 355 additions and 257 deletions

View file

@ -482,7 +482,7 @@ nil`` annotation to exclude ``nil`` as a valid value:
.. code-block:: nim
{.experimental: "notnil"}
type
PObject = ref TObj not nil
TProc = (proc (x, y: int)) not nil
@ -1828,8 +1828,8 @@ Aliasing restrictions in parameter passing
implementation and need to be fleshed out further.
"Aliasing" here means that the underlying storage locations overlap in memory
at runtime. An "output parameter" is a parameter of type ``var T``, an input
parameter is any parameter that is not of type ``var``.
at runtime. An "output parameter" is a parameter of type ``var T``,
an input parameter is any parameter that is not of type ``var``.
1. Two output parameters should never be aliased.
2. An input and an output parameter should not be aliased.