From 03b7b3a8db175a71b6917bf67689b4cb13661518 Mon Sep 17 00:00:00 2001 From: Matthew Dean Date: Mon, 2 Jul 2018 18:34:36 -0700 Subject: [PATCH] Tests and parser fixes for namespace values in MQ and mixin args --- lib/less/parser/parser.js | 6 +++--- test/css/edge/namespacing-2.css | 3 +++ test/css/edge/namespacing-media.css | 5 +++++ test/less/edge/namespacing-2.less | 10 ++++++++++ test/less/edge/namespacing-media.less | 26 ++++++++++++++++++++++++++ 5 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 test/css/edge/namespacing-media.css create mode 100644 test/less/edge/namespacing-media.less diff --git a/lib/less/parser/parser.js b/lib/less/parser/parser.js index c24864f13..0a5f14ade 100644 --- a/lib/less/parser/parser.js +++ b/lib/less/parser/parser.js @@ -950,7 +950,7 @@ var Parser = function Parser(context, imports, fileInfo) { .push({ variadic: true }); break; } - arg = entities.variable() || entities.property() || entities.literal() || entities.keyword(); + arg = entities.variable() || entities.property() || entities.literal() || entities.keyword() || this.call(true); } if (!arg) { @@ -1642,7 +1642,7 @@ var Parser = function Parser(context, imports, fileInfo) { var entities = this.entities, nodes = [], e, p; parserInput.save(); do { - e = entities.keyword() || entities.variable(); + e = entities.keyword() || entities.variable() || entities.mixinLookup(); if (e) { nodes.push(e); } else if (parserInput.$char('(')) { @@ -1676,7 +1676,7 @@ var Parser = function Parser(context, imports, fileInfo) { features.push(e); if (!parserInput.$char(',')) { break; } } else { - e = entities.variable(); + e = entities.variable() || entities.mixinLookup(); if (e) { features.push(e); if (!parserInput.$char(',')) { break; } diff --git a/test/css/edge/namespacing-2.css b/test/css/edge/namespacing-2.css index 619bf369c..83c509565 100644 --- a/test/css/edge/namespacing-2.css +++ b/test/css/edge/namespacing-2.css @@ -5,3 +5,6 @@ .foo { width: 800px; } +.lunch { + treat: ice cream; +} diff --git a/test/css/edge/namespacing-media.css b/test/css/edge/namespacing-media.css new file mode 100644 index 000000000..eca22b76b --- /dev/null +++ b/test/css/edge/namespacing-media.css @@ -0,0 +1,5 @@ +@media not all and (min-width: 480px) { + .selector { + prop: val; + } +} diff --git a/test/less/edge/namespacing-2.less b/test/less/edge/namespacing-2.less index 3b0c3293b..9e8211086 100644 --- a/test/less/edge/namespacing-2.less +++ b/test/less/edge/namespacing-2.less @@ -14,4 +14,14 @@ .foo { width: #library.sizes[@width]; +} + +.foods() { + @dessert: ice cream; +} + +@key-to-lookup: dessert; + +.lunch { + treat: .foods[@@key-to-lookup]; } \ No newline at end of file diff --git a/test/less/edge/namespacing-media.less b/test/less/edge/namespacing-media.less new file mode 100644 index 000000000..8cfe574cd --- /dev/null +++ b/test/less/edge/namespacing-media.less @@ -0,0 +1,26 @@ +#ns { + .sizes() { + @small: 600px; + } + .breakpoint(@size) { + @val: #ns.sizes[@@size]; + @min: (min-width: @val); + @max: not all and @min; + } +} + +#ns { + .sizes() { + @small: 480px; + } +} + +.valToGet() { + keyword: small; +} + +@media #ns.breakpoint(.valToGet[keyword])[@max] { + .selector { + prop: val; + } +} \ No newline at end of file