From 9f68f4355282375866a74cc0e693a2abd40f8d5c Mon Sep 17 00:00:00 2001 From: seven-phases-max Date: Fri, 5 Sep 2014 14:11:03 +0400 Subject: [PATCH] Fix #1973 --- lib/less/tree/element.js | 13 +++++++++++-- test/css/selectors.css | 3 +++ test/less/selectors.less | 3 +++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/less/tree/element.js b/lib/less/tree/element.js index 8142d11f..cc1c83ec 100644 --- a/lib/less/tree/element.js +++ b/lib/less/tree/element.js @@ -1,4 +1,5 @@ var Node = require("./node.js"), + Paren = require("./paren.js"), Combinator = require("./combinator.js"); var Element = function (combinator, value, index, currentFileInfo) { @@ -34,11 +35,19 @@ Element.prototype.genCSS = function (env, output) { output.add(this.toCSS(env), this.currentFileInfo, this.index); }; Element.prototype.toCSS = function (env) { - var value = (this.value.toCSS ? this.value.toCSS(env) : this.value); + env = env || {}; + var value = this.value, firstSelector = env.firstSelector; + if (value instanceof Paren) { + // selector in parens should not be affected by outer selector + // flags (breaks only interpolated selectors - see #1973) + env.firstSelector = true; + } + value = value.toCSS ? value.toCSS(env) : value; + env.firstSelector = firstSelector; if (value === '' && this.combinator.value.charAt(0) === '&') { return ''; } else { - return this.combinator.toCSS(env || {}) + value; + return this.combinator.toCSS(env) + value; } }; module.exports = Element; diff --git a/test/css/selectors.css b/test/css/selectors.css index 11909fe5..85f95b56 100644 --- a/test/css/selectors.css +++ b/test/css/selectors.css @@ -125,6 +125,9 @@ p a span { :nth-child(3) { selector: interpolated; } +.test:nth-child(3) { + selector: interpolated; +} .test:nth-child(odd):not(:nth-child(3)) { color: #ff0000; } diff --git a/test/less/selectors.less b/test/less/selectors.less index e6418473..42aa29e7 100644 --- a/test/less/selectors.less +++ b/test/less/selectors.less @@ -126,6 +126,9 @@ a { selector: interpolated; } .test { + &:nth-child(@{num}) { + selector: interpolated; + } &:nth-child(odd):not(:nth-child(3)) { color: #ff0000; }