class Sass::CSS

def parent_ref_rules(root)


color: blue
& baz
color: red
& bar
color: green
foo

becomes

color: blue
foo baz
color: red
foo bar
color: green
foo

so that
This has the side effect of nesting rules,

color: blue
&.bar
color: green
foo

becomes

color: blue
foo.bar
color: green
foo

Make rules use parent refs so that
def parent_ref_rules(root)
  rules = OrderedHash.new
  root.children.select { |c| Tree::RuleNode === c }.each do |child|
    root.children.delete child
    first, rest = child.rule.scan(/^(&?(?: .|[^ ])[^.#: \[]*)([.#: \[].*)?$/).first
    rules[first] ||= Tree::RuleNode.new(first, nil)
    if rest
      child.rule = "&" + rest
      rules[first] << child
    else
      rules[first].children += child.children
    end
  end
  rules.values.each { |v| parent_ref_rules(v) }
  root.children += rules.values
end