Skip to content

Commit

Permalink
fixes nim-lang#3339 by documenting the limitations of case-statement
Browse files Browse the repository at this point in the history
  • Loading branch information
narimiran committed Feb 8, 2020
1 parent e441542 commit c9a6189
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions doc/manual.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2843,6 +2843,35 @@ expanded into a list of its elements:
of '0'..'9': echo "a number"
else: echo "other"
The ``case`` statement doesn't produce an l-value, so the following example
won't work:

.. code-block:: nim
type
Foo = ref object
x: seq[string]
proc get_x(x: Foo): var seq[string] =
# doesn't work
case true
of true:
x.x
else:
x.x
var foo = Foo(x: @[])
foo.get_x().add("asd")
This can be fixed by explicitly using ``return``:

.. code-block:: nim
proc get_x(x: Foo): var seq[string] =
case true
of true:
return x.x
else:
return x.x
When statement
--------------
Expand Down

0 comments on commit c9a6189

Please sign in to comment.