Sha256: d8f46b3f620b8700a99a5057ee440f0f2a9399be8c210332810e2e101aae0a77
Contents?: true
Size: 1.46 KB
Versions: 29
Compression:
Stored size: 1.46 KB
Contents
# frozen_string_literal: true module Opal module Rewriters class Arguments attr_reader :args, :optargs, :restarg, :postargs, :kwargs, :kwoptargs, :kwrestarg, :kwnilarg, :shadowargs, :blockarg def initialize(args) @args = [] @optargs = [] @restarg = nil @postargs = [] @kwargs = [] @kwoptargs = [] @kwrestarg = nil @kwnilarg = false @shadowargs = [] @blockarg = nil args.each do |arg| case arg.type when :arg, :mlhs (@restarg || @optargs.any? ? @postargs : @args) << arg when :optarg @optargs << arg when :restarg @restarg = arg when :kwarg @kwargs << arg when :kwoptarg @kwoptargs << arg when :kwnilarg @kwnilarg = true when :kwrestarg @kwrestarg = arg when :shadowarg @shadowargs << arg when :blockarg @blockarg = arg else raise "Unsupported arg type #{arg.type}" end end end def has_post_args? !@restarg.nil? || @postargs.any? || (has_any_kwargs? && !can_inline_kwargs?) end def has_any_kwargs? @kwargs.any? || @kwoptargs.any? || !@kwrestarg.nil? end def can_inline_kwargs? @optargs.empty? && @restarg.nil? && @postargs.empty? end end end end
Version data entries
29 entries across 29 versions & 1 rubygems