module SyntaxTree::ContainsAssignment

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.

Public Class Methods

call(parent) click to toggle source
# File lib/syntax_tree/node.rb, line 6233
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