On Mon Mar 16 13:13:35 2015, elizabeth wrote: > > On 16 Mar 2015, at 18:50, Christian Bartolomaeus via RT <bugs- > > comm...@bugs6.perl.org> wrote: > > $ perl6 -e 'say "abcd".index("xyz") == 0' > > Invocant requires an instance, but a type object was passed > > in method Bridge at src/gen/m-CORE.setting:5603 > > in sub infix:<==> at src/gen/m-CORE.setting:5521 > > in block <unit> at -e:1 > > .index is speculated to return a StrPos object: > > "The value returned is always a C<StrPos> object. If the substring > is found, then the C<StrPos> represents the position of the first > character of the substring. If the substring is not found, a bare > C<StrPos> containing no position is returned. This prototype > C<StrPos> > evaluates to false because it's really a kind of undefined value. Do > not evaluate > as a number, because instead of returning -1 it will return 0 and > issue > a warning.” > > This would imply it should not fail, but return True *and* give a > warning! > > > > $ perl6 -e 'say +Failure' > > Invocant requires an instance, but a type object was passed > > in method Numeric at src/gen/m-CORE.setting:15733 > > in block <unit> at -e:1 > > $ perl6 -e 'Failure == 0' > > Invocant requires an instance, but a type object was passed > > in method Numeric at src/gen/m-CORE.setting:15733 > > in sub infix:<==> at src/gen/m-CORE.setting:5323 > > in block <unit> at -e:1 > > My feeling is that these should fail. Failure’s are supposed not be > thrown only when being checked for definedness. Making it a number, > does not meet that criterion in my opinion. > > > > > Liz
StrPos is gone from the design docs, so this needs to be revisited. -- Will "Coke" Coleda