Sha256: 39d330436aaf7c4b0e21b2e116141a2e453c643d99d9ddf7b56e4f4c482dce8b

Contents?: true

Size: 1.03 KB

Versions: 18

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

require 'opal/nodes/scope'
require 'opal/nodes/args/parameters'

module Opal
  module Nodes
    class NodeWithArgs < ScopeNode
      attr_reader :used_kwargs
      attr_accessor :arity
      attr_reader :original_args

      def initialize(*)
        super

        @original_args = @sexp.meta[:original_args]
        @used_kwargs = []
        @arity = 0
      end

      def arity_check_node
        s(:arity_check, original_args)
      end

      # Returns code used in debug mode to check arity of method call
      def compile_arity_check
        push process(arity_check_node)
      end

      def compile_block_arg
        if scope.uses_block?
          scope_name  = scope.identity
          yielder     = scope.block_name || '$yield'

          add_temp "$iter = #{scope_name}.$$p"
          add_temp "#{yielder} = $iter || nil"

          line "if ($iter) #{scope_name}.$$p = null;"
        end
      end

      def parameters_code
        Args::Parameters.new(original_args).to_code
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
opal-1.3.2 lib/opal/nodes/node_with_args.rb
opal-1.3.1 lib/opal/nodes/node_with_args.rb
opal-1.3.0 lib/opal/nodes/node_with_args.rb
opal-1.3.0.rc1 lib/opal/nodes/node_with_args.rb
opal-1.3.0.alpha1 lib/opal/nodes/node_with_args.rb
opal-1.2.0 lib/opal/nodes/node_with_args.rb
opal-1.2.0.beta1 lib/opal/nodes/node_with_args.rb
opal-1.1.1 lib/opal/nodes/node_with_args.rb
opal-1.1.1.rc1 lib/opal/nodes/node_with_args.rb
opal-1.1.0 lib/opal/nodes/node_with_args.rb
opal-1.1.0.rc1 lib/opal/nodes/node_with_args.rb
opal-1.0.5 lib/opal/nodes/node_with_args.rb
opal-1.0.4 lib/opal/nodes/node_with_args.rb
opal-1.0.3 lib/opal/nodes/node_with_args.rb
opal-1.0.2 lib/opal/nodes/node_with_args.rb
opal-1.0.1 lib/opal/nodes/node_with_args.rb
opal-1.0.0 lib/opal/nodes/node_with_args.rb
opal-1.0.0.beta1 lib/opal/nodes/node_with_args.rb