Module: SyntaxTree::ContainsAssignment

Defined in:
lib/syntax_tree/node.rb

Overview

If the predicate of a conditional or loop contains an assignment (in which case we can’t know for certain that that assignment doesn’t impact the statements inside the conditional) then we can’t use the modifier form and we must use the block form.

Class Method Summary collapse

Class Method Details

.call(parent) ⇒ Object



5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
# File 'lib/syntax_tree/node.rb', line 5338

def self.call(parent)
  queue = [parent]

  while (node = queue.shift)
    case node
    when Assign, MAssign, OpAssign
      return true
    else
      node.child_nodes.each { |child| queue << child if child }
    end
  end

  false
end