mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-05 11:24:08 +00:00
deviated -> derived (#12846) [backport]
(cherry picked from commit 0ebc709037)
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
Memory safety for returning by ``var T`` is ensured by a simple borrowing
|
||||
rule: If ``result`` does not refer to a location pointing to the heap
|
||||
(that is in ``result = X`` the ``X`` involves a ``ptr`` or ``ref`` access)
|
||||
then it has to be deviated by the routine's first parameter:
|
||||
then it has to be derived from the routine's first parameter:
|
||||
|
||||
.. code-block:: nim
|
||||
proc forward[T](x: var T): var T =
|
||||
result = x # ok, deviated from the first parameter.
|
||||
result = x # ok, derived from the first parameter.
|
||||
|
||||
proc p(param: var int): var int =
|
||||
var x: int
|
||||
# we know 'forward' provides a view into the location deviated by
|
||||
# we know 'forward' provides a view into the location derived from
|
||||
# its first argument 'x'.
|
||||
result = forward(x) # Error: location is derived from ``x``
|
||||
# which is not p's first parameter and lives
|
||||
|
||||
Reference in New Issue
Block a user