lib/delorean/base.rb in delorean_lang-0.2.2 vs lib/delorean/base.rb in delorean_lang-0.2.3

- old
+ new

@@ -66,11 +66,13 @@ } module BaseModule class NodeCall < Struct.new(:_e, :engine, :node, :params) def evaluate(attr) - engine.evaluate(node, attr, params) + # FIXME: evaluate() modifies params! => need to clone it. + # This is pretty awful. + engine.evaluate(node, attr, params.clone) end def %(args) raise "bad arg to %" unless args.is_a?(Array) @@ -144,9 +146,12 @@ raise str end def self._node_call(node, _e, params) context = _e[:_engine] + + # a node call is being called with amended args + return node + params if node.is_a?(NodeCall) engine = node.is_a?(Class) && context.module_name != node.module_name ? context.get_import_engine(node.module_name) : context