Skip to content

Commit ef93a36

Browse files
committed
Add comment. Split up if docs for optionals.
1 parent cce820f commit ef93a36

File tree

1 file changed

+48
-40
lines changed

1 file changed

+48
-40
lines changed

doc/langref.html.in

Lines changed: 48 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4628,6 +4628,7 @@ test "while null capture" {
46284628
}
46294629
try expect(sum1 == 3);
46304630

4631+
// null capture with an else block
46314632
var sum2: u32 = 0;
46324633
numbers_left = 3;
46334634
while (eventuallyNullSequence()) |value| {
@@ -4636,6 +4637,7 @@ test "while null capture" {
46364637
try expect(sum2 == 3);
46374638
}
46384639

4640+
// null capture with a continue expression
46394641
var i: u32 = 0;
46404642
var sum3: u32 = 0;
46414643
numbers_left = 3;
@@ -4923,87 +4925,92 @@ test "if boolean" {
49234925
}
49244926
}
49254927

4926-
test "if optional" {
4927-
// If expressions test for null.
4928+
test "if error union" {
4929+
// If expressions test for errors.
4930+
// Note the |err| capture on the else.
49284931

4929-
const a: ?u32 = 0;
4932+
const a: anyerror!u32 = 0;
49304933
if (a) |value| {
49314934
try expect(value == 0);
4932-
} else {
4935+
} else |err| {
4936+
_ = err;
49334937
unreachable;
49344938
}
49354939

4936-
const b: ?u32 = null;
4937-
if (b) |_| {
4940+
const b: anyerror!u32 = error.BadValue;
4941+
if (b) |value| {
4942+
_ = value;
49384943
unreachable;
4939-
} else {
4940-
try expect(true);
4944+
} else |err| {
4945+
try expect(err == error.BadValue);
49414946
}
49424947

4943-
// The else is not required.
4948+
// The else and |err| capture is strictly required.
49444949
if (a) |value| {
49454950
try expect(value == 0);
4946-
}
4951+
} else |_| {}
49474952

4948-
// To test against null only, use the binary equality operator.
4949-
if (b == null) {
4950-
try expect(true);
4953+
// To check only the error value, use an empty block expression.
4954+
if (b) |_| {} else |err| {
4955+
try expect(err == error.BadValue);
49514956
}
49524957

49534958
// Access the value by reference using a pointer capture.
4954-
var c: ?u32 = 3;
4959+
var c: anyerror!u32 = 3;
49554960
if (c) |*value| {
4956-
value.* = 2;
4961+
value.* = 9;
4962+
} else |_| {
4963+
unreachable;
49574964
}
49584965

49594966
if (c) |value| {
4960-
try expect(value == 2);
4961-
} else {
4967+
try expect(value == 9);
4968+
} else |_| {
49624969
unreachable;
49634970
}
49644971
}
4972+
{#code_end#}
4973+
{#header_open|if with Optionals#}
49654974

4966-
test "if error union" {
4967-
// If expressions test for errors.
4968-
// Note the |err| capture on the else.
4975+
{#code_begin|test|test_if_optionals#}
4976+
const expect = @import("std").testing.expect;
49694977

4970-
const a: anyerror!u32 = 0;
4978+
test "if optional" {
4979+
// If expressions test for null.
4980+
4981+
const a: ?u32 = 0;
49714982
if (a) |value| {
49724983
try expect(value == 0);
4973-
} else |err| {
4974-
_ = err;
4984+
} else {
49754985
unreachable;
49764986
}
49774987

4978-
const b: anyerror!u32 = error.BadValue;
4979-
if (b) |value| {
4980-
_ = value;
4988+
const b: ?u32 = null;
4989+
if (b) |_| {
49814990
unreachable;
4982-
} else |err| {
4983-
try expect(err == error.BadValue);
4991+
} else {
4992+
try expect(true);
49844993
}
49854994

4986-
// The else and |err| capture is strictly required.
4995+
// The else is not required.
49874996
if (a) |value| {
49884997
try expect(value == 0);
4989-
} else |_| {}
4998+
}
49904999

4991-
// To check only the error value, use an empty block expression.
4992-
if (b) |_| {} else |err| {
4993-
try expect(err == error.BadValue);
5000+
// To test against null only, use the binary equality operator.
5001+
if (b == null) {
5002+
try expect(true);
49945003
}
49955004

49965005
// Access the value by reference using a pointer capture.
4997-
var c: anyerror!u32 = 3;
5006+
var c: ?u32 = 3;
49985007
if (c) |*value| {
4999-
value.* = 9;
5000-
} else |_| {
5001-
unreachable;
5008+
value.* = 2;
50025009
}
50035010

50045011
if (c) |value| {
5005-
try expect(value == 9);
5006-
} else |_| {
5012+
try expect(value == 2);
5013+
} else {
50075014
unreachable;
50085015
}
50095016
}
@@ -5052,6 +5059,7 @@ test "if error union with optional" {
50525059
}
50535060
}
50545061
{#code_end#}
5062+
{#header_close#}
50555063
{#see_also|Optionals|Errors#}
50565064
{#header_close#}
50575065
{#header_open|defer#}
@@ -6338,7 +6346,7 @@ test "optional pointers" {
63386346
{#code_end#}
63396347
{#header_close#}
63406348

6341-
{#see_also|while with Optionals|if#}
6349+
{#see_also|while with Optionals|if with Optionals#}
63426350
{#header_close#}
63436351
{#header_open|Casting#}
63446352
<p>

0 commit comments

Comments
 (0)