diff options
author | Kevin Newton <kddnewton@gmail.com> | 2024-03-05 21:37:10 -0500 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2024-03-06 16:42:51 +0000 |
commit | 6539258dccc6e2fa2983ebe5f0381edd013306dd (patch) | |
tree | 62bca09d9ee9c0a2e38fbd7ab9472e04ad9dd8b7 /lib/prism/translation/ripper.rb | |
parent | debb5e01f1d387661e6e98642d5092d4c0450c53 (diff) |
[ruby/prism] Implement ternaries in ripper translation
https://github.com/ruby/prism/commit/8b14a85a4c
Diffstat (limited to 'lib/prism/translation/ripper.rb')
-rw-r--r-- | lib/prism/translation/ripper.rb | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/prism/translation/ripper.rb b/lib/prism/translation/ripper.rb index 822d8cdd74..dca4fb0da1 100644 --- a/lib/prism/translation/ripper.rb +++ b/lib/prism/translation/ripper.rb @@ -1409,7 +1409,14 @@ module Prism # foo ? bar : baz # ^^^^^^^^^^^^^^^ def visit_if_node(node) - if node.statements.nil? || (node.predicate.location.start_offset < node.statements.location.start_offset) + if node.then_keyword == "?" + predicate = visit(node.predicate) + truthy = visit(node.statements.body.first) + falsy = visit(node.consequent.statements.body.first) + + bounds(node.location) + on_ifop(predicate, truthy, falsy) + elsif node.statements.nil? || (node.predicate.location.start_offset < node.statements.location.start_offset) predicate = visit(node.predicate) statements = if node.statements.nil? |