class Sass::Tree::Visitors::Perform

def visit_mixin(node)

Runs a mixin.
def visit_mixin(node)
  @environment.stack.with_mixin(node.filename, node.line, node.name) do
    mixin = @environment.mixin(node.name)
    raise Sass::SyntaxError.new("Undefined mixin '#{node.name}'.") unless mixin
    if node.has_children && !mixin.has_content
      raise Sass::SyntaxError.new(%(Mixin "#{node.name}" does not accept a content block.))
    end
    args = node.args.map {|a| a.perform(@environment)}
    keywords = Sass::Util.map_vals(node.keywords) {|v| v.perform(@environment)}
    splat = self.class.perform_splat(node.splat, keywords, node.kwarg_splat, @environment)
    self.class.perform_arguments(mixin, args, splat, @environment) do |env|
      env.caller = Sass::Environment.new(@environment)
      env.content = [node.children, @environment] if node.has_children
      trace_node = Sass::Tree::TraceNode.from_node(node.name, node)
      with_environment(env) {trace_node.children = mixin.tree.map {|c| visit(c)}.flatten}
      trace_node
    end
  end
rescue Sass::SyntaxError => e
  e.modify_backtrace(:mixin => node.name, :line => node.line)
  e.add_backtrace(:line => node.line)
  raise e
end