def append(list, val, separator = identifier("auto"))
      assert_type separator, :String, :separator
      unless %w(auto space comma).include?(separator.value)
        raise ArgumentError.new("Separator name must be space, comma, or auto")
      end
      list.with_contents(list.to_a + [val],
        separator:
          if separator.value == 'auto'
            list.separator || :space
          else
            separator.value.to_sym
          end)
    end
def append(list, val, separator = identifier("auto"))
      assert_type separator, :String, :separator
      unless %w(auto space comma).include?(separator.value)
        raise ArgumentError.new("Separator name must be space, comma, or auto")
      end
      list.with_contents(list.to_a + [val],
        separator:
          if separator.value == 'auto'
            list.separator || :space
          else
            separator.value.to_sym
          end)
    end
Appends a single value onto the end of a list.

 Unless the `$separator` argument is passed, if the list had only one item,
 the resulting list will be space-separated.

 Like all list functions, `append()` returns a new list rather than
 modifying its argument in place.

 @example
   append(10px 20px, 30px) => 10px 20px 30px
   append((blue, red), green) => blue, red, green
   append(10px 20px, 30px 40px) => 10px 20px (30px 40px)
   append(10px, 20px, comma) => 10px, 20px
   append((blue, red), green, space) => blue red green
 @overload append($list, $val, $separator: auto)
   @param $list [Sass::Script::Value::Base]
   @param $val [Sass::Script::Value::Base]
   @param $separator [Sass::Script::Value::String] The list separator to use.
     If this is `comma` or `space`, that separator will be used. If this is
     `auto` (the default), the separator is determined as explained above.
 @return [Sass::Script::Value::List]