From bbc15a413bb54251f23e00175a7e534cec896c58 Mon Sep 17 00:00:00 2001 From: seven-phases-max Date: Sun, 22 Dec 2013 18:54:39 +0400 Subject: [PATCH] `default` function: added error when used with css-guards. updated tests. --- lib/less/tree/ruleset.js | 8 +++++++- test/css/mixins-guards-default-func.css | 6 ++++++ test/less/errors/css-guard-default-func.less | 4 ++++ test/less/errors/css-guard-default-func.txt | 4 ++++ test/less/mixins-guards-default-func.less | 20 ++++++++++++++++++++ 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 test/less/errors/css-guard-default-func.less create mode 100644 test/less/errors/css-guard-default-func.txt diff --git a/lib/less/tree/ruleset.js b/lib/less/tree/ruleset.js index 0618c245..d224df8d 100644 --- a/lib/less/tree/ruleset.js +++ b/lib/less/tree/ruleset.js @@ -19,12 +19,18 @@ tree.Ruleset.prototype = { } }, eval: function (env) { - var thisSelectors = this.selectors, selectors, selCnt, i; + var thisSelectors = this.selectors, selectors, + selCnt, i, defaultFunc = tree.defaultFunc; if (thisSelectors && (selCnt = thisSelectors.length)) { selectors = []; + defaultFunc.error({ + type: "Syntax", + message: "it is currently only allowed in parametric mixin guards," + }); for (i = 0; i < selCnt; i++) { selectors.push(thisSelectors[i].eval(env)); } + defaultFunc.reset(); } var rules = this.rules ? this.rules.slice(0) : null, diff --git a/test/css/mixins-guards-default-func.css b/test/css/mixins-guards-default-func.css index efc99385..4b6910c3 100644 --- a/test/css/mixins-guards-default-func.css +++ b/test/css/mixins-guards-default-func.css @@ -112,3 +112,9 @@ guard-default-multi-4 { always: 2; case: 2; } +guard-default-scopes-3 { + 3: when default; +} +guard-default-scopes-1 { + 1: no condition; +} diff --git a/test/less/errors/css-guard-default-func.less b/test/less/errors/css-guard-default-func.less new file mode 100644 index 00000000..db6639e1 --- /dev/null +++ b/test/less/errors/css-guard-default-func.less @@ -0,0 +1,4 @@ + +selector when (default()) { + color: red; +} diff --git a/test/less/errors/css-guard-default-func.txt b/test/less/errors/css-guard-default-func.txt new file mode 100644 index 00000000..ea670295 --- /dev/null +++ b/test/less/errors/css-guard-default-func.txt @@ -0,0 +1,4 @@ +SyntaxError: error evaluating function `default`: it is currently only allowed in parametric mixin guards, in {path}css-guard-default-func.less on line 2, column 16: +1 +2 selector when (default()) { +3 color: red; diff --git a/test/less/mixins-guards-default-func.less b/test/less/mixins-guards-default-func.less index 7b75dd93..56a8e4b6 100644 --- a/test/less/mixins-guards-default-func.less +++ b/test/less/mixins-guards-default-func.less @@ -157,3 +157,23 @@ guard-default-multi-4 { .m(1); .m(2); } + +// default & scope + +guard-default-scopes { + .s1() {.m(@v) {1: no condition}} + .s2() {.m(@v) when (@v) {2: when true}} + .s3() {.m(@v) when (default()) {3: when default}} + + &-3 { + .s2(); + .s3(); + .m(false); + } + + &-1 { + .s1(); + .s3(); + .m(false); + } +}