diff options
| -rw-r--r-- | doc/langref.html.in | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/doc/langref.html.in b/doc/langref.html.in index 03afa1cf09..34cae7282d 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -2377,7 +2377,36 @@ test "labeled break from labeled block expression" { {#code_end#} <p>Here, {#syntax#}blk{#endsyntax#} can be any name.</p> {#see_also|Labeled while|Labeled for#} + + {#header_open|Shadowing#} + <p>It is never allowed for an identifier to "hide" another one by using the same name:</p> + {#code_begin|test_err|redefinition#} +const pi = 3.14; + +test "inside test block" { + // Let's even go inside another block + { + var pi: i32 = 1234; + } +} + {#code_end#} + <p> + Because of this, when you read Zig code you can rely on an identifier always meaning the same thing, + within the scope it is defined. Note that you can, however use the same name if the scopes are separate: + </p> + {#code_begin|test#} +test "separate scopes" { + { + const pi = 3.14; + } + { + var pi: bool = true; + } +} + {#code_end#} {#header_close#} + {#header_close#} + {#header_open|switch#} {#code_begin|test|switch#} const assert = @import("std").debug.assert; |
