I have searched the internet and try multiple codes but can't figure this one out. Hopefully you can be the helping hand.
The problem: Guard is not triggered when mixin have multiple values.
Button.less
  /* CTA Box */
  &ctabox {
    .inline-box(@lightergrey);
    &__header {
      display: inline-block;
      margin: 5px 0;
      .font(@size: 18px, @weight: 700);
    }
    &__button {
      .button(@style: @orange);
      .button-icon-right();
    }
  }
As you can see I use button() mixin, @style: @orange works and triggers this guard:
.button(@style) when (@style = @orange) {
  /* Rendered mixin: Button @style when @orange */
  color: #FFF;
  &:hover, &:focus {
    background: @lightorange;
    color: #FFF;
  }
}
But when I use this:
&__button {
  .button(@style: @orange, @width: 100%);
  .button-icon-right();
}
The guard isn't triggered anymore, although the button @style is still @orange. Could anyone explain this behavior?
                        
Ok, after some digging, it seems that mentioning all arguments of a mixin function is the way to go. Instead of just .button(@style) I changed it to .button(@style, @width) and the guard is functioning correctly for now.