anchor.diff:    String _performInterpolation(Interpolation interpolation) {
       return interpolation.contents.map((value) {
         if (value is String) return value;
  -      var result = (value as Expression).accept(this);
  -      return result.toCssString(quote: false);
  +      var expression = value as Expression;
  +      var result = expression.accept(this);
  +      return _toCss(result, expression.span, quote: false);
       }).join();
     }
   
     /// Evaluates [expression] and wraps the result in a [CssValue].
     CssValue<Value> _performExpression(Expression expression) =>
         new CssValue(expression.accept(this), expression.span);
  +
  +  /// Evaluates [expression] and calls `toCssString()` and wraps a
  +  /// [SassScriptException] to associate it with [span].
  +  String _evaluateToCss(Expression expression, {bool quote: true}) =>
  +      _toCss(expression.accept(this), expression.span, quote: quote);
  +
  +  /// Calls `value.toCssString()` and wraps a [SassScriptException] to associate
  +  /// it with [span].
  +  String _toCss(Value value, FileSpan span, {bool quote: true}) =>
  +      _addExceptionSpan(span, () => value.toCssString(quote: quote));
   
     /// Adds [node] as a child of the current parent, then runs [callback] with
     /// [node] as the current parent.
  
positive.code:             "Plain CSS functions don't support keyword arguments.", span);
        }
  
        var argumentValues = arguments.positional
            .map((expression) => expression.accept(this))
            .toList();
        // TODO: if rest is an arglist that has keywords, error out.
        var rest = arguments.rest?.accept(this);
        if (rest != null) argumentValues.add(rest);
        return new SassString("${callable.name}(" +
            argumentValues.map((argument) => argument.toCssString()).join(', ') +
            ")");
      } else {
        return null;
      }
  
negative.code:     } else if (condition is SupportsNegation) {
        return "not ${_parenthesize(condition.condition)}";
      } else if (condition is SupportsInterpolation) {
        return _evaluateToCss(condition.expression, quote: false);
      } else if (condition is SupportsDeclaration) {
        return "(${_evaluateToCss(condition.name)}: "
            "${_evaluateToCss(condition.value)})";
      } else {
        return null;
      }
  