Take a look at this, y’all, and tell me if this is a bug – I’ll step up later this week to fix it and write some @test
s for it if so.
julia> versioninfo()
Julia Version 1.2.0
Commit c6da87ff4b (2019-08-20 00:03 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, skylake)
Environment:
JULIA_EDITOR = "C:\Users\Andre\AppData\Local\atom\app-1.40.1\atom.exe" -a
JULIA_NUM_THREADS = 4
julia>
julia>
julia>
julia> findnext("Kitten", "Kitten", 1)
1:6
julia> # As expected. But...
julia> findnext("Kitten", "Kitten", 0)
1:6
julia> # Weird, but not totally out of the box.
julia> findnext("Kitten", "Kitten", -1)
1:6
julia> # Wait. What?
julia> findnext("Kitten", "Kitten", -2)
1:6
julia> findnext("Kitten", "Kitten", -3)
1:6
julia> findnext("Kitten", "Kitten", -4)
1:6
julia> findnext("Kitten", "Kitten", -5)
ERROR: BoundsError: attempt to access 6-element Array{UInt8,1} at index [0]
Stacktrace:
[1] getindex at .\array.jl:728 [inlined]
[2] _nthbyte at .\strings\search.jl:148 [inlined]
[3] _searchindex(::Array{UInt8,1}, ::Array{UInt8,1}, ::Int64) at .\strings\search.jl:185
[4] _searchindex(::String, ::String, ::Int64) at .\strings\search.jl:153
[5] _search(::String, ::String, ::Int64) at .\strings\search.jl:220
[6] findnext(::String, ::String, ::Int64) at .\strings\search.jl:256
[7] top-level scope at none:0
julia> # WTF.
julia> findnext("supercalifragilisticexpialidocious", "supercalifragilisticexpialidocious", -5)
1:34
julia> findnext("supercalifragilisticexpialidocious", "supercalifragilisticexpialidocious", -10)
1:34
julia> findnext("supercalifragilisticexpialidocious", "supercalifragilisticexpialidocious", -15)
1:34
julia> findnext("supercalifragilisticexpialidocious", "supercalifragilisticexpialidocious", -20)
ERROR: BoundsError: attempt to access 34-element Array{UInt8,1} at index [-16]
Stacktrace:
[1] getindex at .\array.jl:728 [inlined]
[2] _nthbyte at .\strings\search.jl:148 [inlined]
[3] _searchindex(::Array{UInt8,1}, ::Array{UInt8,1}, ::Int64) at .\strings\search.jl:189
[4] _searchindex(::String, ::String, ::Int64) at .\strings\search.jl:153
[5] _search(::String, ::String, ::Int64) at .\strings\search.jl:220
[6] findnext(::String, ::String, ::Int64) at .\strings\search.jl:256
[7] top-level scope at none:0
julia> # Seems like we can index up to - floor(half(array)). But I thought we weren't using negative indices for strings?
Is this normal behavior?