From d24286699203a09aef9743e764df127446b960cf Mon Sep 17 00:00:00 2001 From: David Baker Effendi Date: Tue, 29 Oct 2024 10:22:40 +0200 Subject: [PATCH] Added key/value to `kwoptarg` --- lib/ruby_ast_gen/node_handling.rb | 7 +++++-- spec/ruby_ast_gen_spec.rb | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/ruby_ast_gen/node_handling.rb b/lib/ruby_ast_gen/node_handling.rb index 6e9bb9b..05a2790 100644 --- a/lib/ruby_ast_gen/node_handling.rb +++ b/lib/ruby_ast_gen/node_handling.rb @@ -9,7 +9,7 @@ module NodeHandling CALLS = [:send, :csend] DYNAMIC_LITERALS = [:dsym, :dstr] CONTROL_KW = [:break, :next] - ARGUMENTS = [:arg, :restarg, :kwoptarg, :blockarg, :kwrestarg, :kwarg, :shadowarg, :kwnilarg] + ARGUMENTS = [:arg, :restarg, :blockarg, :kwrestarg, :kwarg, :shadowarg, :kwnilarg] REFS = [:nth_ref, :back_ref] FORWARD_ARGUMENTS = [:forward_args, :forwarded_args, :forward_arg] ASSIGNMENTS = [:or_asgn, :and_asgn, :lvasgn, :ivasgn, :gvasgn, :cvasgn, :match_with_lvasgn] @@ -177,7 +177,10 @@ def self.add_node_properties(node_type, base_map, file_path) base_map[:lhs] = children[0] base_map[:rhs] = children[1] when *SINGLETONS - base_map[:value] = node_type + base_map[:value] = node_type + when :kwoptarg + base_map[:key] = children[0] + base_map[:value] = children[1] when *LITERALS, *ARGUMENTS, *ACCESS, :match_rest base_map[:value] = children[0] when :cbase diff --git a/spec/ruby_ast_gen_spec.rb b/spec/ruby_ast_gen_spec.rb index b152831..c5d493a 100644 --- a/spec/ruby_ast_gen_spec.rb +++ b/spec/ruby_ast_gen_spec.rb @@ -75,6 +75,16 @@ def f(x) code(<<-CODE) def foo(x) x += 1 +end + CODE + ast = RubyAstGen::parse_file(temp_file.path, temp_name) + expect(ast).not_to be_nil + end + + it "should create a function with a keyword option argument sucessfully" do + code(<<-CODE) +def foo(a, bar: "default") + puts(bar) end CODE ast = RubyAstGen::parse_file(temp_file.path, temp_name)