From 939702a001fa1299e5403d2d0a536a484e837bee Mon Sep 17 00:00:00 2001 From: Code Hz Date: Fri, 18 Dec 2020 17:40:43 +0800 Subject: [PATCH] removing `out T` from docs since it no longer working (#16378) [backport] * remove `out T` from docs see https://github.com/nim-lang/Nim/issues/16131 * remove `out T` in title * remove entire paragraph (cherry picked from commit 90dbb6f3fbab684afad729903ff322a9792e1706) --- doc/manual.rst | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/doc/manual.rst b/doc/manual.rst index 5dc8f9d4da..078d0352a7 100644 --- a/doc/manual.rst +++ b/doc/manual.rst @@ -2487,13 +2487,13 @@ matches) is preferred: gen(ri) # "ref T" -Overloading based on 'var T' / 'out T' +Overloading based on 'var T' -------------------------------------- -If the formal parameter ``f`` is of type ``var T`` (or ``out T``) -in addition to the ordinary -type checking, the argument is checked to be an `l-value`:idx:. -``var T`` (or ``out T``) matches better than just ``T`` then. +If the formal parameter ``f`` is of type ``var T`` +in addition to the ordinary type checking, +the argument is checked to be an `l-value`:idx:. +``var T`` matches better than just ``T`` then. .. code-block:: nim proc sayHi(x: int): string = @@ -2512,17 +2512,6 @@ type checking, the argument is checked to be an `l-value`:idx:. # 13 -An l-value matches ``var T`` and ``out T`` equally well, hence -the following is ambiguous: - -.. code-block:: nim - - proc p(x: out string) = x = "" - proc p(x: var string) = x = "" - var v: string - p(v) # ambiguous - - Lazy type resolution for untyped -------------------------------- @@ -4933,7 +4922,7 @@ of "typedesc"-ness is stripped off: Generic inference restrictions ------------------------------ -The types ``var T``, ``out T`` and ``typedesc[T]`` cannot be inferred in a generic +The types ``var T`` and ``typedesc[T]`` cannot be inferred in a generic instantiation. The following is not allowed: .. code-block:: nim @@ -6113,10 +6102,10 @@ noSideEffect pragma The ``noSideEffect`` pragma is used to mark a proc/iterator to have no side effects. This means that the proc/iterator only changes locations that are reachable from its parameters and the return value only depends on the -arguments. If none of its parameters have the type ``var T`` or ``out T`` -or ``ref T`` or ``ptr T`` this means no locations are modified. It is a static -error to mark a proc/iterator to have no side effect if the compiler cannot -verify this. +arguments. If none of its parameters have the type ``var T`` or ``ref T`` +or ``ptr T`` this means no locations are modified. It is a static error to +mark a proc/iterator to have no side effect if the compiler cannot verify +this. As a special semantic rule, the built-in `debugEcho `_ pretends to be free of side effects,