Prism::Translation::Parser raises NoMethodError for a method with a &nil parameter and a body
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Empieza en lib/prism/translation/parser/compiler.rb y revisa find_forwarding, donde, según indica el issue, se llama a node.block.name para los parámetros de bloque. Compara los tipos de nodo de parámetro para &nil y los parámetros de bloque con nombre; luego ejecuta las pruebas de traducción del parser que cubren las definiciones de métodos. El trabajo estará terminado cuando analizar un método con un cuerpo no vacío y un parámetro &nil ya no provoque NoMethodError, y los casos existentes de bloques y lambdas sigan funcionando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
With Prism 2.1.0 the parser translation fails on a method that has a &nil parameter and a non-empty body:
require "prism"
require "prism/translation/parser"
buffer = Parser::Source::Buffer.new("test.rb", source: "def foo(&nil); bar; end")
Prism::Translation::Parser41.new.parse(buffer)
# => undefined method 'name' for an instance of Prism::NoBlockParameterNode (NoMethodError)
It works when the body is empty, and for blocks and lambdas (foo { |&nil| bar }).
find_forwarding in lib/prism/translation/parser/compiler.rb calls node.block.name for any block parameter, and NoBlockParameterNode has no name. Checking for a BlockParameterNode there fixes it. Happy to send a PR.
- Lenguaje dominante
- C
- Estrellas
- 1k
- Forks
- 202
- Merge medio
- 5 h 55 min
- PR fusionados (30 d)
- 85
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 ruby/prism
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Heredoc and outer-context recovery at recursion depth / stack budget limit causes location underflowAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 43/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 1/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
Todos los issues de ruby/prism
Issues similares
-
Memory leak: "Add to Playlist" (`CMD_EVENT_ADD_TO_PLAYLIST`) never frees the playlist it loadsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Signed/unsigned mix in the EOCD backward scan rejects valid archives with a 65535-byte commentAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
area: recompiler area: runtime kind: bug preview-effort: small priority: low
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100