diff --git a/lib/less/parser.js b/lib/less/parser.js index 68c0d603..c6c993e6 100644 --- a/lib/less/parser.js +++ b/lib/less/parser.js @@ -517,7 +517,7 @@ less.Parser = function Parser(env) { // detect named color return new(tree.Color)(tree.colors[k].slice(1)); } else { - return new(tree.Keyword)(k) + return new(tree.Keyword)(k); } } }, @@ -1159,16 +1159,20 @@ less.Parser = function Parser(env) { } }, condition: function () { - var a, b, op, index = i; - if ($('(')) { - if (a = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { - if (op = $(/^(?:>=|=<|\!=|[<=>])/)) { - if (b = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { - if ($(')')) { - return new(tree.Condition)(op, a, b, index); - } - } + var a, b, op, index = i, negate = false; + expect('('); + if ($('!')) { negate = true } + if (a = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { + if (op = $(/^(?:>=|=<|\!=|[<=>])/)) { + if (b = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { + expect(')'); + return new(tree.Condition)(op, a, b, index); + } else { + error('expected expression'); } + } else { + expect(')'); + return new(tree.Condition)(negate ? '!=' : '=', a, new(tree.Keyword)('true'), index); } } }, diff --git a/test/css/mixins-guards.css b/test/css/mixins-guards.css index aaeff5d4..fa20a160 100644 --- a/test/css/mixins-guards.css +++ b/test/css/mixins-guards.css @@ -30,3 +30,9 @@ .default1 { content: default; } +.test1 { + content: "true."; +} +.test2 { + content: "false."; +} diff --git a/test/less/mixins-guards.less b/test/less/mixins-guards.less index d4640257..a99e14df 100644 --- a/test/less/mixins-guards.less +++ b/test/less/mixins-guards.less @@ -58,3 +58,14 @@ content: default; } .default1 { .default } + +// true & false keywords +.test (@a) when (@a) { + content: "true."; +} +.test (@a) when (!@a) { + content: "false."; +} + +.test1 { .test(true) } +.test2 { .test(false) }