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

Reply via email to