[perl #128710] combining :D, a where clause and Nil results in empty type object

[email protected] ("Zoffix Znet via RT")
Newsgroups perl.perl6.compiler
Message-ID <[email protected]>
On Sat, 23 Jul 2016 15:57:33 -0700, gfldex wrote:
> sub niler{Nil}; my Int:D $i where .defined = niler(); say $i; say $i.WHAT;
> # OUTPUT«(<anon>)␤(<anon>)␤»
> # expected: well, I don't know since I explicitely asked for a defined 
> # value _twice_ but Nil is supposed to revert a container to it's default.
> # That default is undefined, what can't work with $_.defined and should 
> # work (by design, not my opinion) with :D.
> # Either way, I would like to get a type object when asking for WHAT.
> # may be related to RT#127958

Thanks for the report.

It's not empty. In both cases it says "<anon>", because you've used a `where` clause, thus creating an anonymous (nameless) subset.

If you prefer it to have a name, you can define a named subset instead:

    <Zoffix__> m: my Int $i where 42; say $i;
    <camelia> rakudo-moar bfb5279aa: OUTPUT: «(<anon>)␤»
    <Zoffix__> m: subset Foo of Int where 42; my Foo $i ; say $i;
    <camelia> rakudo-moar bfb5279aa: OUTPUT: «(Foo)␤»

I made a patch that makes it say "<Int-based anon subset>" instead, but in the end decided against it,
because we use '<anon>' in many other places and this breaks that consistency, without adding much of extra information.

[1] https://gist.github.com/zoffixznet/198403153020a20b427bb2088b118ecc

Closing this as wontfix.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.