Question

I'm compiling my LESS with SimpLESS but running in to what I think is a bug with how the & combinator is used. Here's the markup:

<div class="parent">
  <div class="child-1 child-2">
    Hello
  </div>
</div>

And the basic LESS code:

.child-1 {
  color: red;
    .parent & {
    color: yellow;
    &.child-2 {
      color: blue;
    }
  }
}

Expected CSS output:

.child-1 {
  color: red;
}
.parent .child-1 {
  color: yellow;
}
.parent .child-1.child-2 {
  color: blue;
}

Actual output from SimpLESS:

.child-1 {
  color: red;
}
.parent .child-1 {
  color: yellow;
}
.parent .child-1 .child-2 { // extra space between .child-1 and .child-2
  color: blue;
}

As you can see, it's the difference between "Hello" being yellow or blue. Which is the correct LESS compilation? Why would SimpLESS get this wrong?

Was it helpful?

Solution

The correct output is

.child-1 {
  color: red;
}
.parent .child-1 {
  color: yellow;
}
.parent .child-1.child-2 {
  color: blue;
}

So you are right with what you expect. You can double check if you visit http://less2css.org/, it is the site linked under "Try it now" on http://lesscss.org/.

So you have probably found a bug in the SimpLESS parser.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top