authorgravatar for gordoncassie@gmail.comGordon Cassie <gordoncassie@gmail.com> 2023-12-07 13:51:03-08:00
committergravatar for gordoncassie@gmail.comGordon Cassie <gordoncassie@gmail.com> 2023-12-07 13:51:03-08:00
logef93a36cd5b783d50b595f5f7eea7422649081a7
tree5c47c4991f433a36f94eb074ed89f996827d20e0
parentcce820f93d0648d39f862a5784850580cb2cf4bb

Add comment. Split up if docs for optionals.


1 files changed, 48 insertions(+), 40 deletions(-)

doc/langref.html.in+48-40
......@@ -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
4926test "if optional" {
4927 // If expressions test for null.
4928test "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
4966test "if error union" {
4967 // If expressions test for errors.
4968 // Note the |err| capture on the else.
4975 {#code_begin|test|test_if_optionals#}
4976const expect = @import("std").testing.expect;
49694977
4970 const a: anyerror!u32 = 0;
4978test "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>