429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
|
# File 'lib/duby/transform.rb', line 429
def transform(transformer, parent)
actual_name = name
if name =~ /=$/
actual_name = name[0..-2] + '_set'
end
transformer.push_jump_scope(StaticMethodDefinition, parent,
position, actual_name) do |defn|
signature = {:return => nil}
if args_node && args_node.args
args_node.args.child_nodes.each do |arg|
if arg.respond_to? :type_node
signature[arg.name.intern] =
arg.type_node.type_reference(parent)
end
end
end
if body_node
for node in body_node.child_nodes
sig = node.signature(defn)
break unless sig
signature.update(sig) if sig.kind_of? ::Hash
end
end
[
signature,
args_node ? transformer.transform(args_node, defn) : nil,
body_node ? transformer.transform(body_node, defn) : nil
]
end
end
|