以下代码在通过Visual Studio 2013的Web Essentials进行编译时会产生错误。我认为该插件使用Winless,但它在其他编译器上也失败了。
.root {
#namespace {
.not-recursive(@x) {
.margin-@{x} { margin: (1px * @x); }
}
.recursive(@x; @i: 0) when (@i =< @x) {
.not-recursive(@i);
.recursive(@x; (@i + 1) );
}
}
/* This works */
.sub-class {
#namespace > .not-recursive(99);
#namespace > .recursive(5);
}
/* Recursion fails */
#namespace > .not-recursive(100);
#namespace > .recursive(5); // Why???
}
如果我用注释Why???
注释掉最后一行,它就会编译。
如果我把#namespace
放在.root
之外,并且仍然使用#namespace > .recursive()
,它就会编译。
如果非要我大胆猜测的话,我猜它试图在混音中调用.root .recursive()
而不是.root #namespace .recursive()
一次,但这只是一个基于四处玩耍的猜测,看看什么有效/无效。
这不是什么大不了的事,但它真的困扰着我,我想知道我是在文档中遗漏了什么,还是发现了新问题。
嗯,我确实认为这是一个bug。但经过一些测试("试错"),我找到了一个可行的解决方案:
.root {
(...)
// Problem solved.
& { #namespace > .recursive(5); }
}