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



6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
# File 'lib/syntax_tree/node.rb', line 6248

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