diff --git a/lib/less/tree/operation.js b/lib/less/tree/operation.js index 24c64a6..b89a843 100644 --- a/lib/less/tree/operation.js +++ b/lib/less/tree/operation.js @@ -5,13 +5,18 @@ tree.Operation = function Operation(op, operands) { this.operands = operands; }; tree.Operation.prototype.eval = function (env) { - var a = this.operands[0], - b = this.operands[1], + var a = this.operands[0].eval(env), + b = this.operands[1].eval(env), temp; - if (a instanceof tree.Dimension) { - temp = b, b = a, a = temp; + if (a instanceof tree.Dimension && b instanceof tree.Color) { + if (this.op === '*' || this.op === '+') { + temp = b, b = a, a = temp; + } else { + throw { name: "OperationError", + message: "Can't substract or divide a color from a number" }; + } } - return a.eval(env).operate(this.op, b.eval(env)); + return a.operate(this.op, b); }; diff --git a/test/css/operations.css b/test/css/operations.css index f419357..930a758 100644 --- a/test/css/operations.css +++ b/test/css/operations.css @@ -16,9 +16,11 @@ height: 0px; width: 4px; } -.shorthands { padding: -1px 2px 0 -4px; } +.shorthands { + padding: -1px 2px 0 -4px; +} .colors { - color: #112233; + color: #123; border-color: #334455; background-color: #000000; }