Prism::Translation::Parser raises NoMethodError for a method with a &nil parameter and a body
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 82/100
Rechercherichtung
Beginne in lib/prism/translation/parser/compiler.rb und prüfe find_forwarding, wo laut Issue node.block.name für Blockparameter aufgerufen wird. Vergleiche die Parametertypen der Knoten für &nil und benannte Blockparameter und führe dann die Parser-Übersetzungstests für Methodendefinitionen aus. Die Aufgabe ist erledigt, wenn das Parsen einer Methode mit nicht leerem Rumpf und einem &nil-Parameter keinen NoMethodError mehr auslöst und die bestehenden Fälle für Blöcke und Lambdas weiterhin funktionieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- C
- Sterne
- 1k
- Forks
- 202
- Ø Merge
- 5 Std. 55 Min.
- Gemergte PRs (30 T.)
- 85
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus ruby/prism
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag
-
Heredoc and outer-context recovery at recursion depth / stack budget limit causes location underflowOffen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 43/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 1/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
Memory leak: "Add to Playlist" (`CMD_EVENT_ADD_TO_PLAYLIST`) never frees the playlist it loadsOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
Signed/unsigned mix in the EOCD backward scan rejects valid archives with a 65535-byte commentOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
area: recompiler area: runtime kind: bug preview-effort: small priority: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100