[bug] Type assert of filter fails for empty `CircularBuffer`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza con el dispatch que falla en Base ./array.jl:2492 e inspecciona el comportamiento de filter de CircularBuffer. Reproduce los casos de un buffer vacío para los tipos de elemento Any e Integer y compáralos después con el filtrado de un Vector vacío. Se considera terminado cuando filtrar un CircularBuffer vacío ya no provoca el error de aserción de tipo indicado y coincide con el comportamiento documentado de Vector.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Replicate
julia> cb = CircularBuffer(1)
> 0-element CircularBuffer{Any}
julia> filter(s -> s < 3, cb)
ERROR: TypeError: in typeassert, expected AbstractArray{Bool}, got a value of type Vector{Any}
Stacktrace:
[1] filter(f::var"#25#26", a::CircularBuffer{Any})
@ Base ./array.jl:2492
[2] top-level scope
@ REPL[27]:1
Specifying the eltype does not fix the issue
julia> cb = CircularBuffer{Integer}(1)
> 0-element CircularBuffer{Integer}
julia> filter(s -> s < 3, cb)
ERROR: TypeError: in typeassert, expected AbstractArray{Bool}, got a value of type Vector{Any}
Stacktrace:
[1] filter(f::var"#39#40", a::CircularBuffer{Integer})
@ Base ./array.jl:2492
[2] top-level scope
@ REPL[37]:1
Desired behaviour
It should behave the same way as with a Vector type.
julia> filter(s -> s < 3, [])
> Any[]
Possible solution
Since filter, returns a Vector type for CircularBuffer there are two solutions that both produce an ideologically different ouput:
- Specify the
filtermethod forCircularBufferto use the method withArrayon the underlining buffer and notAbstractArrayon the struct, - Overwrite the
filtermethod and make it return a newCircularBuffer.
I would think that the second option is the way to go since it would be easy for the user to use the method outputing Vector on demand.
Can you assign me?
- Lenguaje dominante
- Julia
- Estrellas
- 747
- Forks
- 261
- Merge medio
- 12 d 6 h
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaCollections/DataStructures.jl
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
append!(l1::MutableLinkedList, l2::MutableLinkedList) fails for empty l2Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
JuliaCollections/DataStructures.jl#997 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
-
several `mutable struct` type definitions do not require mutability, review and adjustPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Todos los issues de JuliaCollections/DataStructures.jl
Issues similares
-
TSDAE's docstring implies a theta argument it does not takePosiblemente ocupada @singhharsh1708 la tomó hoy. Abiertodocumentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 74/100
SciML/PETScDiffEq.jl#282 ·
Los mantenedores suelen responder en 1 día
-
Add more snippets to R and JuliaAbiertoenhancement good first issue help wanted
Dificultad 2/5 Medio día Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
SciML/SciMLBase.jl#1643 ·
Los mantenedores suelen responder en 2 días
-
authority-vechtstromen ready-for-agent
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
Deltares/Ribasim-NL#890 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día