diff --git a/doc/langref.html.in b/doc/langref.html.in
index 5da2697187..7cf3631aa5 100644
--- a/doc/langref.html.in
+++ b/doc/langref.html.in
@@ -760,7 +760,7 @@ pub fn main() void {
{#syntax#}void{#endsyntax#}
(none)
- 0 bit type
+ Always the value {#syntax#}void{}{#endsyntax#}
{#syntax#}noreturn{#endsyntax#}
@@ -1061,7 +1061,7 @@ fn addOne(number: i32) i32 {
Test declarations contain the {#link|keyword|Keyword Reference#} {#syntax#}test{#endsyntax#}, followed by an
optional name written as a {#link|string literal|String Literals and Unicode Code Point Literals#}, followed
- by a {#link|block|blocks#} containing any valid Zig code that is allowed in a {#link|function|Functions#}.
+ by a {#link|block|Blocks#} containing any valid Zig code that is allowed in a {#link|function|Functions#}.
By convention, non-named tests should only be used to {#link|make other tests run|Nested Container Tests#}.
@@ -4024,7 +4024,7 @@ test "call foo" {
{#code_end#}
{#header_close#}
- {#header_open|blocks#}
+ {#header_open|Blocks#}
Blocks are used to limit the scope of variable declarations:
@@ -4088,6 +4088,22 @@ test "separate scopes" {
}
{#code_end#}
{#header_close#}
+
+ {#header_open|Empty Blocks#}
+ An empty block is equivalent to {#syntax#}void{}{#endsyntax#}:
+ {#code_begin|test|empty_block#}
+const std = @import("std");
+const expect = std.testing.expect;
+
+test {
+ const a = {};
+ const b = void{};
+ try expect(@TypeOf(a) == void);
+ try expect(@TypeOf(b) == void);
+ try expect(a == b);
+}
+ {#code_end#}
+ {#header_close#}
{#header_close#}
{#header_open|switch#}
@@ -11987,7 +12003,7 @@ fn readU32Be() u32 {}
{#syntax#}break{#endsyntax#} can be used with a block label to return a value from the block.
It can also be used to exit a loop before iteration completes naturally.
- See also {#link|blocks#}, {#link|while#}, {#link|for#}
+ See also {#link|Blocks#}, {#link|while#}, {#link|for#}