Class: Opal::Nodes::InlineArgs
- Defined in:
- opal/lib/opal/nodes/inline_args.rb
Overview
def args list
Constant Summary
Constants included from Helpers
Helpers::BASIC_IDENTIFIER_RULES, Helpers::ES3_RESERVED_WORD_EXCLUSIVE, Helpers::ES51_RESERVED_WORD, Helpers::IMMUTABLE_PROPS, Helpers::PROTO_SPECIAL_METHODS, Helpers::PROTO_SPECIAL_PROPS, Helpers::RESERVED_FUNCTION_NAMES
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#add_arg(arg) ⇒ Object
If the argument has a name, we should mark it as an argument for current scope Otherwise, these args will be interpreted in the child scope as local variables.
- #arg_names ⇒ Object
- #compile ⇒ Object
Methods inherited from Base
#add_gvar, #add_ivar, #add_local, #add_temp, #children, children, #compile_to_fragments, #error, #expr, #expr?, #expr_or_nil, #fragment, handle, handlers, #has_rescue_else?, #helper, #in_ensure, #in_ensure?, #in_while?, #initialize, #process, #push, #recv, #recv?, #s, #scope, #stmt, #stmt?, truthy_optimize?, #unshift, #while_loop, #with_temp, #wrap
Methods included from Helpers
#current_indent, #empty_line, #indent, #ivar, #js_falsy, #js_truthy, #js_truthy_optimize, #line, #lvar_to_js, #mid_to_jsid, #property, #valid_ivar_name?, #valid_name?, #variable
Constructor Details
This class inherits a constructor from Opal::Nodes::Base
Instance Method Details
#add_arg(arg) ⇒ Object
If the argument has a name, we should mark it as an argument for current scope Otherwise, these args will be interpreted in the child scope as local variables
53 54 55 56 57 58 |
# File 'opal/lib/opal/nodes/inline_args.rb', line 53 def add_arg(arg) if arg[1] arg_name = variable(arg[1].to_sym) scope.add_arg(arg_name) end end |
#arg_names ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'opal/lib/opal/nodes/inline_args.rb', line 13 def arg_names done_kwargs = false children.inject([]) do |result, child| case child.type when :kwarg, :kwoptarg, :kwrestarg unless done_kwargs done_kwargs = true result << '$kwargs' end add_arg(child) when :mlhs tmp = scope.next_temp result << tmp scope.mlhs_mapping[child] = tmp when :arg, :optarg arg_name = variable(child[1]).to_s if !child.[:inline] && arg_name[0] != '$' arg_name = "$#{arg_name}" end result << arg_name add_arg(child) when :restarg # To make function.length working # in cases like def m(*rest) tmp_arg_name = scope.next_temp + "_rest" result << tmp_arg_name add_arg(child) else raise "Unknown argument type #{child.inspect}" end result end end |
#compile ⇒ Object
9 10 11 |
# File 'opal/lib/opal/nodes/inline_args.rb', line 9 def compile push(arg_names.join(', ')) end |