Checking for nil return
[email protected] (yary) Sat, 19 Dec 2020 21:16:19 -0500
| Newsgroups | perl.perl6.language |
|---|---|
| Message-ID | <CAG2CFAa8NR2qrAO8mcmjTxd-PVTDjgLT7eZ7shKXWuuLVNeNoQ@mail.gmail.com> |
--000000000000f592a305b6dbed7e
Content-Type: text/plain; charset="UTF-8"
Is this a known issue, or my misunderstanding?
> subset non-Nil where * !=== Nil;
(non-Nil)
> sub out-check($out) returns non-Nil { return $out }
&out-check
> out-check(44)
44
> out-check(Nil)
Nil
^ Huh, I expected an exception on "out-check(Nil)" saying the return value
failed the "returns" constraint.
The subtype works as I expect as an the argument check
> sub in-check (non-Nil $in) { $in }
&in-check
> in-check(33)
33
> in-check(Nil)
Constraint type check failed in binding to parameter '$in'; expected
non-Nil but got Nil (Nil)
in sub in-check at <unknown file> line 1
in block <unit> at <unknown file> line 1
$ raku --version
This is Rakudo version 2020.07 built on MoarVM version 2020.07
implementing Raku 6.d.
Is this my understanding of return type checking that's off, or a known
issue, or something I should add to an issue tracker?
-y
--000000000000f592a305b6dbed7e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div di=
r=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Is this a known issue, or my mi=
sunderstanding?</div><div dir=3D"ltr"><br></div><div dir=3D"ltr">> subse=
t non-Nil where * !=3D=3D=3D Nil;<br></div><div dir=3D"ltr">(non-Nil)</div>=
<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">> sub out-check($out)=
returns non-Nil { return $out }</div><div dir=3D"ltr">&out-check</div>=
<div dir=3D"ltr">> out-check(44)</div><div dir=3D"ltr">44</div><div dir=
=3D"ltr">> out-check(Nil)</div><div dir=3D"ltr">Nil</div><br>^ Huh, I ex=
pected an exception on "out-check(Nil)" saying the return value f=
ailed the "returns" constraint.</div><div dir=3D"ltr"><br></div><=
div>The subtype works as I expect as an the argument check</div><div dir=3D=
"ltr"><br></div><div dir=3D"ltr">> sub in-check (non-Nil $in) { $in }</d=
iv><div dir=3D"ltr">&in-check</div><div dir=3D"ltr">> in-check(33)</=
div><div dir=3D"ltr">33</div><div dir=3D"ltr">> in-check(Nil)</div><div =
dir=3D"ltr">Constraint type check failed in binding to parameter '$in&#=
39;; expected non-Nil but got Nil (Nil)</div><div dir=3D"ltr">=C2=A0 in sub=
in-check at <unknown file> line 1</div><div dir=3D"ltr">=C2=A0 in bl=
ock <unit> at <unknown file> line 1</div><div><br></div></div><=
div dir=3D"ltr"><div dir=3D"ltr">$ raku --version</div><div dir=3D"ltr">Thi=
s is Rakudo version 2020.07 built on MoarVM version 2020.07</div><div dir=
=3D"ltr">implementing Raku 6.d.</div></div><div dir=3D"ltr"><br></div><div>=
Is this my understanding=C2=A0of return type checking that's off, or a =
known issue, or something I should add to an issue tracker?</div><div><br><=
/div><div dir=3D"ltr"><div><div dir=3D"ltr" class=3D"gmail_signature">-y<br=
></div></div></div></div></div></div></div></div></div>
--000000000000f592a305b6dbed7e--