@less/test-data 5.0.0-alpha.14 → 5.0.0-alpha.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/package.json +1 -1
  2. package/tests-config/3rd-party/bootstrap4.css +119 -101
  3. package/tests-config/math/parens-division/parens.css +1 -1
  4. package/tests-config/namespacing/namespacing-8.less +1 -1
  5. package/tests-config/rootpath-escape-interpolation/rootpath-escape-interpolation.css +8 -0
  6. package/tests-config/rootpath-escape-interpolation/rootpath-escape-interpolation.less +24 -0
  7. package/tests-config/rootpath-escape-interpolation/styles.config.cjs +8 -0
  8. package/tests-config/strict-imports/strict-imports.css +6 -0
  9. package/tests-error/eval/mixin-as-value.less +6 -0
  10. package/tests-error/eval/mixin-as-value.txt +4 -0
  11. package/tests-unit/calc/calc.css +7 -7
  12. package/tests-unit/container/container.css +1 -1
  13. package/tests-unit/extend/extend.css +4 -2
  14. package/tests-unit/extend-chaining/extend-chaining.css +2 -1
  15. package/tests-unit/extend-nest/extend-nest.css +3 -2
  16. package/tests-unit/extend-selector/extend-selector.css +4 -2
  17. package/tests-unit/functions/functions.css +1 -1
  18. package/tests-unit/import/import.css +3 -0
  19. package/tests-unit/lookup-interpolation/lookup-interpolation.css +60 -0
  20. package/tests-unit/lookup-interpolation/lookup-interpolation.less +127 -0
  21. package/tests-unit/media/media.css +2 -2
  22. package/tests-unit/parse-interpolation/parse-interpolation.css +3 -2
  23. package/tests-unit/parse-interpolation/parse-interpolation.less +8 -8
  24. package/tests-unit/selectors/selectors.css +5 -5
  25. package/tests-unit/styles.config.cjs +11 -6
  26. package/tests-unit/styles.config.ts +0 -8
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "5.0.0-alpha.14",
6
+ "version": "5.0.0-alpha.15",
7
7
  "description": "Less files and CSS results",
8
8
  "author": "Alexis Sellier <self@cloudhead.net>",
9
9
  "contributors": [
@@ -1315,8 +1315,7 @@ pre code {
1315
1315
  margin-bottom: 1rem;
1316
1316
  background-color: transparent;
1317
1317
  }
1318
- .table th,
1319
- .table td {
1318
+ .table :is(th, td) {
1320
1319
  padding: 0.75rem;
1321
1320
  vertical-align: top;
1322
1321
  border-top: 1px solid #dee2e6;
@@ -1331,23 +1330,19 @@ pre code {
1331
1330
  .table .table {
1332
1331
  background-color: #fff;
1333
1332
  }
1334
- .table-sm th,
1335
- .table-sm td {
1333
+ .table-sm :is(th, td) {
1336
1334
  padding: 0.3rem;
1337
1335
  }
1338
1336
  .table-bordered {
1339
1337
  border: 1px solid #dee2e6;
1340
1338
  }
1341
- .table-bordered th,
1342
- .table-bordered td {
1339
+ .table-bordered :is(th, td) {
1343
1340
  border: 1px solid #dee2e6;
1344
1341
  }
1345
- .table-bordered thead th,
1346
- .table-bordered thead td {
1342
+ .table-bordered thead :is(th, td) {
1347
1343
  border-bottom-width: 2px;
1348
1344
  }
1349
- .table-borderless th,
1350
- .table-borderless td,
1345
+ .table-borderless :is(th, td),
1351
1346
  .table-borderless thead th,
1352
1347
  .table-borderless tbody + tbody {
1353
1348
  border: 0;
@@ -1480,8 +1475,7 @@ pre code {
1480
1475
  color: #fff;
1481
1476
  background-color: #212529;
1482
1477
  }
1483
- .table-dark th,
1484
- .table-dark td,
1478
+ .table-dark :is(th, td),
1485
1479
  .table-dark thead th {
1486
1480
  border-color: #32383e;
1487
1481
  }
@@ -1634,7 +1628,17 @@ select.form-control:focus::-ms-value {
1634
1628
  border-width: 1px 0;
1635
1629
  }
1636
1630
  .form-control-plaintext.form-control-sm,
1637
- .form-control-plaintext.form-control-lg {
1631
+ .form-control-plaintext.form-control-lg,
1632
+ .input-group-sm > .form-control-plaintext.form-control,
1633
+ .input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,
1634
+ .input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,
1635
+ .input-group-sm > .input-group-prepend > .form-control-plaintext.btn,
1636
+ .input-group-sm > .input-group-append > .form-control-plaintext.btn,
1637
+ .input-group-lg > .form-control-plaintext.form-control,
1638
+ .input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,
1639
+ .input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,
1640
+ .input-group-lg > .input-group-prepend > .form-control-plaintext.btn,
1641
+ .input-group-lg > .input-group-append > .form-control-plaintext.btn {
1638
1642
  padding-right: 0;
1639
1643
  padding-left: 0;
1640
1644
  }
@@ -1649,7 +1653,12 @@ select.form-control:focus::-ms-value {
1649
1653
  line-height: 1.5;
1650
1654
  border-radius: 0.2rem;
1651
1655
  }
1652
- select.form-control-sm:not([size]):not([multiple]) {
1656
+ select.form-control-sm:not([size]):not([multiple]),
1657
+ .input-group-sm > select.form-control:not([size]):not([multiple]),
1658
+ .input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),
1659
+ .input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),
1660
+ .input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),
1661
+ .input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {
1653
1662
  height: calc(1.8125rem + 2px);
1654
1663
  }
1655
1664
  .form-control-lg,
@@ -1663,7 +1672,12 @@ select.form-control-sm:not([size]):not([multiple]) {
1663
1672
  line-height: 1.5;
1664
1673
  border-radius: 0.3rem;
1665
1674
  }
1666
- select.form-control-lg:not([size]):not([multiple]) {
1675
+ select.form-control-lg:not([size]):not([multiple]),
1676
+ .input-group-lg > select.form-control:not([size]):not([multiple]),
1677
+ .input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),
1678
+ .input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),
1679
+ .input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),
1680
+ .input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {
1667
1681
  height: calc(2.875rem + 2px);
1668
1682
  }
1669
1683
  .form-group {
@@ -1888,8 +1902,7 @@ select.form-control-lg:not([size]):not([multiple]) {
1888
1902
  .form-inline .form-control-plaintext {
1889
1903
  display: inline-block;
1890
1904
  }
1891
- .form-inline .input-group,
1892
- .form-inline .custom-select {
1905
+ .form-inline :is(.input-group, .custom-select) {
1893
1906
  width: auto;
1894
1907
  }
1895
1908
  .form-inline .form-check {
@@ -2082,7 +2095,7 @@ fieldset:disabled a.btn {
2082
2095
  border-color: #ffc107;
2083
2096
  }
2084
2097
  .btn-warning:hover {
2085
- color: #fff;
2098
+ color: #212529;
2086
2099
  background-color: #e0a800;
2087
2100
  border-color: #d39e00;
2088
2101
  }
@@ -2099,7 +2112,7 @@ fieldset:disabled a.btn {
2099
2112
  .btn-warning:not(:disabled):not(.disabled):active,
2100
2113
  .btn-warning:not(:disabled):not(.disabled).active,
2101
2114
  .show > .btn-warning.dropdown-toggle {
2102
- color: #fff;
2115
+ color: #212529;
2103
2116
  background-color: #d39e00;
2104
2117
  border-color: #c69500;
2105
2118
  }
@@ -2142,7 +2155,7 @@ fieldset:disabled a.btn {
2142
2155
  border-color: #f8f9fa;
2143
2156
  }
2144
2157
  .btn-light:hover {
2145
- color: #fff;
2158
+ color: #212529;
2146
2159
  background-color: #e2e6ea;
2147
2160
  border-color: #dae0e5;
2148
2161
  }
@@ -2159,7 +2172,7 @@ fieldset:disabled a.btn {
2159
2172
  .btn-light:not(:disabled):not(.disabled):active,
2160
2173
  .btn-light:not(:disabled):not(.disabled).active,
2161
2174
  .show > .btn-light.dropdown-toggle {
2162
- color: #fff;
2175
+ color: #212529;
2163
2176
  background-color: #dae0e5;
2164
2177
  border-color: #d3d9df;
2165
2178
  }
@@ -2745,11 +2758,13 @@ fieldset:disabled a.btn {
2745
2758
  .dropleft .dropdown-toggle-split::before {
2746
2759
  margin-right: 0;
2747
2760
  }
2748
- :is(.btn-sm, .btn-group-sm > .btn) + .dropdown-toggle-split {
2761
+ .btn-sm + .dropdown-toggle-split,
2762
+ .btn-group-sm > .btn + .dropdown-toggle-split {
2749
2763
  padding-right: 0.375rem;
2750
2764
  padding-left: 0.375rem;
2751
2765
  }
2752
- :is(.btn-lg, .btn-group-lg > .btn) + .dropdown-toggle-split {
2766
+ .btn-lg + .dropdown-toggle-split,
2767
+ .btn-group-lg > .btn + .dropdown-toggle-split {
2753
2768
  padding-right: 0.75rem;
2754
2769
  padding-left: 0.75rem;
2755
2770
  }
@@ -2758,8 +2773,7 @@ fieldset:disabled a.btn {
2758
2773
  align-items: flex-start;
2759
2774
  justify-content: center;
2760
2775
  }
2761
- .btn-group-vertical .btn,
2762
- .btn-group-vertical .btn-group {
2776
+ .btn-group-vertical :is(.btn, .btn-group) {
2763
2777
  width: 100%;
2764
2778
  }
2765
2779
  .btn-group-vertical > .btn + .btn,
@@ -2783,8 +2797,7 @@ fieldset:disabled a.btn {
2783
2797
  .btn-group-toggle > .btn-group > .btn {
2784
2798
  margin-bottom: 0;
2785
2799
  }
2786
- .btn-group-toggle > .btn input[type="radio"],
2787
- .btn-group-toggle > .btn input[type="checkbox"] {
2800
+ :is(.btn-group-toggle > .btn, .btn-group-toggle > .btn-group > .btn) :is(input[type="radio"], input[type="checkbox"]) {
2788
2801
  position: absolute;
2789
2802
  clip: rect(0, 0, 0, 0);
2790
2803
  pointer-events: none;
@@ -2807,9 +2820,9 @@ fieldset:disabled a.btn {
2807
2820
  :is(.input-group > .form-control, .input-group > .custom-select, .input-group > .custom-file):focus {
2808
2821
  z-index: 3;
2809
2822
  }
2810
- .input-group > .form-control + .form-control,
2811
- .input-group > .form-control + .custom-select,
2812
- .input-group > .form-control + .custom-file {
2823
+ :is(.input-group > .form-control, .input-group > .custom-select, .input-group > .custom-file) + .form-control,
2824
+ :is(.input-group > .form-control, .input-group > .custom-select, .input-group > .custom-file) + .custom-select,
2825
+ :is(.input-group > .form-control, .input-group > .custom-select, .input-group > .custom-file) + .custom-file {
2813
2826
  margin-left: -1px;
2814
2827
  }
2815
2828
  :is(.input-group > .form-control, .input-group > .custom-select):not(:last-child) {
@@ -2868,8 +2881,7 @@ fieldset:disabled a.btn {
2868
2881
  border: 1px solid #ced4da;
2869
2882
  border-radius: 0.25rem;
2870
2883
  }
2871
- .input-group-text input[type="radio"],
2872
- .input-group-text input[type="checkbox"] {
2884
+ .input-group-text :is(input[type="radio"], input[type="checkbox"]) {
2873
2885
  margin-top: 0;
2874
2886
  }
2875
2887
  .input-group > .input-group-prepend > .btn,
@@ -3514,8 +3526,7 @@ fieldset:disabled a.btn {
3514
3526
  }
3515
3527
  .navbar-light .navbar-nav .show > .nav-link,
3516
3528
  .navbar-light .navbar-nav .active > .nav-link,
3517
- .navbar-light .navbar-nav .nav-link.show,
3518
- .navbar-light .navbar-nav .nav-link.active {
3529
+ .navbar-light .navbar-nav :is(.nav-link.show, .nav-link.active) {
3519
3530
  color: rgba(0, 0, 0, 0.9);
3520
3531
  }
3521
3532
  .navbar-light .navbar-toggler {
@@ -3554,8 +3565,7 @@ fieldset:disabled a.btn {
3554
3565
  }
3555
3566
  .navbar-dark .navbar-nav .show > .nav-link,
3556
3567
  .navbar-dark .navbar-nav .active > .nav-link,
3557
- .navbar-dark .navbar-nav .nav-link.show,
3558
- .navbar-dark .navbar-nav .nav-link.active {
3568
+ .navbar-dark .navbar-nav :is(.nav-link.show, .nav-link.active) {
3559
3569
  color: #fff;
3560
3570
  }
3561
3571
  .navbar-dark .navbar-toggler {
@@ -3715,46 +3725,37 @@ fieldset:disabled a.btn {
3715
3725
  border-top-right-radius: 0;
3716
3726
  border-bottom-right-radius: 0;
3717
3727
  }
3718
- .card-group > .card:first-child .card-img-top,
3719
- .card-group > .card:first-child .card-header {
3728
+ .card-group > .card:first-child :is(.card-img-top, .card-header) {
3720
3729
  border-top-right-radius: 0;
3721
3730
  }
3722
- .card-group > .card:first-child .card-img-bottom,
3723
- .card-group > .card:first-child .card-footer {
3731
+ .card-group > .card:first-child :is(.card-img-bottom, .card-footer) {
3724
3732
  border-bottom-right-radius: 0;
3725
3733
  }
3726
3734
  .card-group > .card:last-child {
3727
3735
  border-top-left-radius: 0;
3728
3736
  border-bottom-left-radius: 0;
3729
3737
  }
3730
- .card-group > .card:last-child .card-img-top,
3731
- .card-group > .card:last-child .card-header {
3738
+ .card-group > .card:last-child :is(.card-img-top, .card-header) {
3732
3739
  border-top-left-radius: 0;
3733
3740
  }
3734
- .card-group > .card:last-child .card-img-bottom,
3735
- .card-group > .card:last-child .card-footer {
3741
+ .card-group > .card:last-child :is(.card-img-bottom, .card-footer) {
3736
3742
  border-bottom-left-radius: 0;
3737
3743
  }
3738
3744
  .card-group > .card:only-child {
3739
3745
  border-radius: 0.25rem;
3740
3746
  }
3741
- .card-group > .card:only-child .card-img-top,
3742
- .card-group > .card:only-child .card-header {
3747
+ .card-group > .card:only-child :is(.card-img-top, .card-header) {
3743
3748
  border-top-left-radius: 0.25rem;
3744
3749
  border-top-right-radius: 0.25rem;
3745
3750
  }
3746
- .card-group > .card:only-child .card-img-bottom,
3747
- .card-group > .card:only-child .card-footer {
3751
+ .card-group > .card:only-child :is(.card-img-bottom, .card-footer) {
3748
3752
  border-bottom-right-radius: 0.25rem;
3749
3753
  border-bottom-left-radius: 0.25rem;
3750
3754
  }
3751
3755
  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {
3752
3756
  border-radius: 0;
3753
3757
  }
3754
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,
3755
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,
3756
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,
3757
- .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {
3758
+ .card-group > .card:not(:first-child):not(:last-child):not(:only-child) :is(.card-img-top, .card-img-bottom, .card-header, .card-footer) {
3758
3759
  border-radius: 0;
3759
3760
  }
3760
3761
  }
@@ -4540,10 +4541,12 @@ button.close {
4540
4541
  .bs-tooltip-auto[x-placement^="top"] {
4541
4542
  padding: 0.4rem 0;
4542
4543
  }
4543
- :is(.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"]) .arrow {
4544
+ .bs-tooltip-top .arrow,
4545
+ .bs-tooltip-auto[x-placement^="top"] .arrow {
4544
4546
  bottom: 0;
4545
4547
  }
4546
- :is(:is(.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"]) .arrow)::before {
4548
+ .bs-tooltip-top .arrow::before,
4549
+ .bs-tooltip-auto[x-placement^="top"] .arrow::before {
4547
4550
  top: 0;
4548
4551
  border-width: 0.4rem 0.4rem 0;
4549
4552
  border-top-color: #000;
@@ -4552,12 +4555,14 @@ button.close {
4552
4555
  .bs-tooltip-auto[x-placement^="right"] {
4553
4556
  padding: 0 0.4rem;
4554
4557
  }
4555
- :is(.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"]) .arrow {
4558
+ .bs-tooltip-right .arrow,
4559
+ .bs-tooltip-auto[x-placement^="right"] .arrow {
4556
4560
  left: 0;
4557
4561
  width: 0.4rem;
4558
4562
  height: 0.8rem;
4559
4563
  }
4560
- :is(:is(.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"]) .arrow)::before {
4564
+ .bs-tooltip-right .arrow::before,
4565
+ .bs-tooltip-auto[x-placement^="right"] .arrow::before {
4561
4566
  right: 0;
4562
4567
  border-width: 0.4rem 0.4rem 0.4rem 0;
4563
4568
  border-right-color: #000;
@@ -4566,10 +4571,12 @@ button.close {
4566
4571
  .bs-tooltip-auto[x-placement^="bottom"] {
4567
4572
  padding: 0.4rem 0;
4568
4573
  }
4569
- :is(.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"]) .arrow {
4574
+ .bs-tooltip-bottom .arrow,
4575
+ .bs-tooltip-auto[x-placement^="bottom"] .arrow {
4570
4576
  top: 0;
4571
4577
  }
4572
- :is(:is(.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"]) .arrow)::before {
4578
+ .bs-tooltip-bottom .arrow::before,
4579
+ .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
4573
4580
  bottom: 0;
4574
4581
  border-width: 0 0.4rem 0.4rem;
4575
4582
  border-bottom-color: #000;
@@ -4578,12 +4585,14 @@ button.close {
4578
4585
  .bs-tooltip-auto[x-placement^="left"] {
4579
4586
  padding: 0 0.4rem;
4580
4587
  }
4581
- :is(.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"]) .arrow {
4588
+ .bs-tooltip-left .arrow,
4589
+ .bs-tooltip-auto[x-placement^="left"] .arrow {
4582
4590
  right: 0;
4583
4591
  width: 0.4rem;
4584
4592
  height: 0.8rem;
4585
4593
  }
4586
- :is(:is(.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"]) .arrow)::before {
4594
+ .bs-tooltip-left .arrow::before,
4595
+ .bs-tooltip-auto[x-placement^="left"] .arrow::before {
4587
4596
  left: 0;
4588
4597
  border-width: 0.4rem 0 0.4rem 0.4rem;
4589
4598
  border-left-color: #000;
@@ -4643,18 +4652,23 @@ button.close {
4643
4652
  .bs-popover-auto[x-placement^="top"] {
4644
4653
  margin-bottom: 0.5rem;
4645
4654
  }
4646
- :is(.bs-popover-top, .bs-popover-auto[x-placement^="top"]) .arrow {
4655
+ .bs-popover-top .arrow,
4656
+ .bs-popover-auto[x-placement^="top"] .arrow {
4647
4657
  bottom: calc((0.5rem + 1px) * -1);
4648
4658
  }
4649
- :is(.bs-popover-top, .bs-popover-auto[x-placement^="top"]) .arrow::before,
4650
- :is(.bs-popover-top, .bs-popover-auto[x-placement^="top"]) .arrow::after {
4659
+ .bs-popover-top .arrow::before,
4660
+ .bs-popover-auto[x-placement^="top"] .arrow::before,
4661
+ .bs-popover-top .arrow::after,
4662
+ .bs-popover-auto[x-placement^="top"] .arrow::after {
4651
4663
  border-width: 0.5rem 0.5rem 0;
4652
4664
  }
4653
- :is(.bs-popover-top, .bs-popover-auto[x-placement^="top"]) .arrow::before {
4665
+ .bs-popover-top .arrow::before,
4666
+ .bs-popover-auto[x-placement^="top"] .arrow::before {
4654
4667
  bottom: 0;
4655
4668
  border-top-color: rgba(0, 0, 0, 0.25);
4656
4669
  }
4657
- :is(.bs-popover-top, .bs-popover-auto[x-placement^="top"]) .arrow::after {
4670
+ .bs-popover-top .arrow::after,
4671
+ .bs-popover-auto[x-placement^="top"] .arrow::after {
4658
4672
  bottom: 1px;
4659
4673
  border-top-color: #fff;
4660
4674
  }
@@ -4662,21 +4676,26 @@ button.close {
4662
4676
  .bs-popover-auto[x-placement^="right"] {
4663
4677
  margin-left: 0.5rem;
4664
4678
  }
4665
- :is(.bs-popover-right, .bs-popover-auto[x-placement^="right"]) .arrow {
4679
+ .bs-popover-right .arrow,
4680
+ .bs-popover-auto[x-placement^="right"] .arrow {
4666
4681
  left: calc((0.5rem + 1px) * -1);
4667
4682
  width: 0.5rem;
4668
4683
  height: 1rem;
4669
4684
  margin: 0.3rem 0;
4670
4685
  }
4671
- :is(.bs-popover-right, .bs-popover-auto[x-placement^="right"]) .arrow::before,
4672
- :is(.bs-popover-right, .bs-popover-auto[x-placement^="right"]) .arrow::after {
4686
+ .bs-popover-right .arrow::before,
4687
+ .bs-popover-auto[x-placement^="right"] .arrow::before,
4688
+ .bs-popover-right .arrow::after,
4689
+ .bs-popover-auto[x-placement^="right"] .arrow::after {
4673
4690
  border-width: 0.5rem 0.5rem 0.5rem 0;
4674
4691
  }
4675
- :is(.bs-popover-right, .bs-popover-auto[x-placement^="right"]) .arrow::before {
4692
+ .bs-popover-right .arrow::before,
4693
+ .bs-popover-auto[x-placement^="right"] .arrow::before {
4676
4694
  left: 0;
4677
4695
  border-right-color: rgba(0, 0, 0, 0.25);
4678
4696
  }
4679
- :is(.bs-popover-right, .bs-popover-auto[x-placement^="right"]) .arrow::after {
4697
+ .bs-popover-right .arrow::after,
4698
+ .bs-popover-auto[x-placement^="right"] .arrow::after {
4680
4699
  left: 1px;
4681
4700
  border-right-color: #fff;
4682
4701
  }
@@ -4684,22 +4703,28 @@ button.close {
4684
4703
  .bs-popover-auto[x-placement^="bottom"] {
4685
4704
  margin-top: 0.5rem;
4686
4705
  }
4687
- :is(.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"]) .arrow {
4706
+ .bs-popover-bottom .arrow,
4707
+ .bs-popover-auto[x-placement^="bottom"] .arrow {
4688
4708
  top: calc((0.5rem + 1px) * -1);
4689
4709
  }
4690
- :is(.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"]) .arrow::before,
4691
- :is(.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"]) .arrow::after {
4710
+ .bs-popover-bottom .arrow::before,
4711
+ .bs-popover-auto[x-placement^="bottom"] .arrow::before,
4712
+ .bs-popover-bottom .arrow::after,
4713
+ .bs-popover-auto[x-placement^="bottom"] .arrow::after {
4692
4714
  border-width: 0 0.5rem 0.5rem 0.5rem;
4693
4715
  }
4694
- :is(.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"]) .arrow::before {
4716
+ .bs-popover-bottom .arrow::before,
4717
+ .bs-popover-auto[x-placement^="bottom"] .arrow::before {
4695
4718
  top: 0;
4696
4719
  border-bottom-color: rgba(0, 0, 0, 0.25);
4697
4720
  }
4698
- :is(.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"]) .arrow::after {
4721
+ .bs-popover-bottom .arrow::after,
4722
+ .bs-popover-auto[x-placement^="bottom"] .arrow::after {
4699
4723
  top: 1px;
4700
4724
  border-bottom-color: #fff;
4701
4725
  }
4702
- :is(.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"]) .popover-header::before {
4726
+ .bs-popover-bottom .popover-header::before,
4727
+ .bs-popover-auto[x-placement^="bottom"] .popover-header::before {
4703
4728
  position: absolute;
4704
4729
  top: 0;
4705
4730
  left: 50%;
@@ -4713,21 +4738,26 @@ button.close {
4713
4738
  .bs-popover-auto[x-placement^="left"] {
4714
4739
  margin-right: 0.5rem;
4715
4740
  }
4716
- :is(.bs-popover-left, .bs-popover-auto[x-placement^="left"]) .arrow {
4741
+ .bs-popover-left .arrow,
4742
+ .bs-popover-auto[x-placement^="left"] .arrow {
4717
4743
  right: calc((0.5rem + 1px) * -1);
4718
4744
  width: 0.5rem;
4719
4745
  height: 1rem;
4720
4746
  margin: 0.3rem 0;
4721
4747
  }
4722
- :is(.bs-popover-left, .bs-popover-auto[x-placement^="left"]) .arrow::before,
4723
- :is(.bs-popover-left, .bs-popover-auto[x-placement^="left"]) .arrow::after {
4748
+ .bs-popover-left .arrow::before,
4749
+ .bs-popover-auto[x-placement^="left"] .arrow::before,
4750
+ .bs-popover-left .arrow::after,
4751
+ .bs-popover-auto[x-placement^="left"] .arrow::after {
4724
4752
  border-width: 0.5rem 0 0.5rem 0.5rem;
4725
4753
  }
4726
- :is(.bs-popover-left, .bs-popover-auto[x-placement^="left"]) .arrow::before {
4754
+ .bs-popover-left .arrow::before,
4755
+ .bs-popover-auto[x-placement^="left"] .arrow::before {
4727
4756
  right: 0;
4728
4757
  border-left-color: rgba(0, 0, 0, 0.25);
4729
4758
  }
4730
- :is(.bs-popover-left, .bs-popover-auto[x-placement^="left"]) .arrow::after {
4759
+ .bs-popover-left .arrow::after,
4760
+ .bs-popover-auto[x-placement^="left"] .arrow::after {
4731
4761
  right: 1px;
4732
4762
  border-left-color: #fff;
4733
4763
  }
@@ -4817,20 +4847,14 @@ button.close {
4817
4847
  transition-duration: 0.6s;
4818
4848
  transition-property: opacity;
4819
4849
  }
4820
- .carousel-fade .carousel-item.active,
4821
- .carousel-fade .carousel-item-next.carousel-item-left,
4822
- .carousel-fade .carousel-item-prev.carousel-item-right {
4850
+ .carousel-fade :is(.carousel-item.active, .carousel-item-next.carousel-item-left, .carousel-item-prev.carousel-item-right) {
4823
4851
  opacity: 1;
4824
4852
  }
4825
- .carousel-fade .active.carousel-item-left,
4826
- .carousel-fade .active.carousel-item-right {
4853
+ .carousel-fade :is(.active.carousel-item-left, .active.carousel-item-right) {
4827
4854
  opacity: 0;
4828
4855
  }
4829
- .carousel-fade .carousel-item-next,
4830
- .carousel-fade .carousel-item-prev,
4831
- .carousel-fade .carousel-item.active,
4832
- .carousel-fade .active.carousel-item-left,
4833
- .carousel-fade .active.carousel-item-prev {
4856
+ .carousel-fade :is(.carousel-item-next, .carousel-item-prev),
4857
+ .carousel-fade :is(.carousel-item.active, .active.carousel-item-left, .active.carousel-item-prev) {
4834
4858
  transform: translateX(0);
4835
4859
  }
4836
4860
  @supports (transform-style: preserve-3d) {
@@ -5289,10 +5313,7 @@ button.close {
5289
5313
  content: "";
5290
5314
  }
5291
5315
  .embed-responsive .embed-responsive-item,
5292
- .embed-responsive iframe,
5293
- .embed-responsive embed,
5294
- .embed-responsive object,
5295
- .embed-responsive video {
5316
+ .embed-responsive :is(iframe, embed, object, video) {
5296
5317
  position: absolute;
5297
5318
  top: 0;
5298
5319
  bottom: 0;
@@ -7458,19 +7479,16 @@ a.text-dark:focus {
7458
7479
  .table {
7459
7480
  border-collapse: collapse !important;
7460
7481
  }
7461
- .table td,
7462
- .table th {
7482
+ .table :is(td, th) {
7463
7483
  background-color: #fff !important;
7464
7484
  }
7465
- .table-bordered th,
7466
- .table-bordered td {
7485
+ .table-bordered :is(th, td) {
7467
7486
  border: 1px solid #dee2e6 !important;
7468
7487
  }
7469
7488
  .table-dark {
7470
7489
  color: inherit;
7471
7490
  }
7472
- .table-dark th,
7473
- .table-dark td,
7491
+ .table-dark :is(th, td),
7474
7492
  .table-dark thead th,
7475
7493
  .table-dark tbody + tbody {
7476
7494
  border-color: #dee2e6;
@@ -21,7 +21,7 @@
21
21
  margin-keep: 12;
22
22
  margin-parts: 12;
23
23
  margin-all: 12;
24
- border-radius-keep: 8px / 4 + 3px;
24
+ border-radius-keep: 8px / 7px;
25
25
  border-radius-parts: 8px / 7px;
26
26
  border-radius-all: 5px;
27
27
  }
@@ -6,7 +6,7 @@
6
6
 
7
7
  :root {
8
8
  each(@vars, {
9
- --@{key}: @value;
9
+ --@{key}: @{value};
10
10
  });
11
11
  }
12
12
 
@@ -0,0 +1,8 @@
1
+ #rootpath-escape-interpolation {
2
+ plain-unquoted: url(http://example.com/a\(b\)\ c/relative/path);
3
+ interp-unquoted: url(http://example.com/a\(b\)\ c/images/path);
4
+ lookup-unquoted: url(http://example.com/a\(b\)\ c/images/path);
5
+ plain-quoted: url("http://example.com/a(b) c/relative/path");
6
+ interp-quoted: url("http://example.com/a(b) c/images/path");
7
+ lookup-quoted: url("http://example.com/a(b) c/images/path");
8
+ }
@@ -0,0 +1,24 @@
1
+ // A rewritten rootpath is escaped only for *unquoted* url() values, so the node
2
+ // produced for an interpolated unquoted body must not read as quoted. Giving it a
3
+ // real quote character suppressed the escaping and emitted the parentheses and
4
+ // space raw, producing a malformed url().
5
+ //
6
+ // The rootpath here deliberately contains `(`, `)` and a space — the characters
7
+ // `escapePath` handles — so quoted and unquoted forms cannot look alike.
8
+
9
+ @dir: images;
10
+ @paths: {
11
+ dir: images;
12
+ };
13
+
14
+ #rootpath-escape-interpolation {
15
+ // unquoted: rootpath must be escaped
16
+ plain-unquoted: url(relative/path);
17
+ interp-unquoted: url(@{dir}/path);
18
+ lookup-unquoted: url(@{paths[dir]}/path);
19
+
20
+ // quoted: rootpath must not be escaped
21
+ plain-quoted: url("relative/path");
22
+ interp-quoted: url("@{dir}/path");
23
+ lookup-quoted: url("@{paths[dir]}/path");
24
+ }
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ language: {
3
+ less: {
4
+ "rootpath": "http://example.com/a(b) c/",
5
+ "rewriteUrls": "all"
6
+ }
7
+ }
8
+ };
@@ -2,11 +2,17 @@
2
2
  background: green;
3
3
  }
4
4
  @media (max-width: 768px) {
5
+ .imported {
6
+ background: green;
7
+ }
5
8
  .mobile {
6
9
  color: red;
7
10
  }
8
11
  }
9
12
  .container {
13
+ .imported {
14
+ background: green;
15
+ }
10
16
  .nested {
11
17
  color: blue;
12
18
  }
@@ -0,0 +1,6 @@
1
+ #rgbify(@color) {
2
+ @rgb: red(@color), green(@color), blue(@color);
3
+ }
4
+ .x {
5
+ color: #rgbify(#fff);
6
+ }
@@ -0,0 +1,4 @@
1
+ SyntaxError: Rulesets cannot be evaluated on a property. in {path}mixin-as-value.less on line 5, column 3:
2
+ 4 .x {
3
+ 5 color: #rgbify(#fff);
4
+ 6 }
@@ -7,23 +7,23 @@
7
7
  .calc-variables {
8
8
  root: calc(100% - 30px);
9
9
  root2: calc(100% - 40px);
10
- width: calc(50% + 50vh / 2 - 20px);
11
- height: calc(50% + 50vh / 2 - 20px);
10
+ width: calc(50% + (50vh / 2 - 20px));
11
+ height: calc(50% + ((50vh / 2 - 20px)));
12
12
  }
13
13
  .calc-nested {
14
- min-height: calc(10vh + 5vh);
14
+ min-height: calc(((10vh)) + calc((5vh)));
15
15
  nested: calc(calc(2.25rem + 2px) - 1px * 2);
16
16
  }
17
17
  .calc-functions {
18
18
  one: calc(100% - 20px);
19
- two: calc(100% - (10px + 10px));
19
+ two: calc(100% - (((10px + 10px))));
20
20
  bar: calc(1 + 20%);
21
21
  }
22
22
  .calc-escape {
23
- three: calc(100% - 3 * 1);
24
- four: calc(100% - 3 * 1);
23
+ three: calc(100% - (3 * 1));
24
+ four: calc(100% - (3 * 1));
25
25
  }
26
26
  .calc-mixed {
27
27
  foo: 3 calc(3 + 4) 11;
28
- height: calc(100% - (10px * 3 + 10px * 2));
28
+ height: calc(100% - ((10px * 3) + (10px * 2)));
29
29
  }
@@ -23,7 +23,7 @@
23
23
  border: 1px solid grey;
24
24
  }
25
25
  }
26
- @container size (min-width: 60ch) {
26
+ @container size(min-width: 60ch) {
27
27
  .article--post header {
28
28
  grid-template-areas:
29
29
  "avatar name"
@@ -13,8 +13,10 @@
13
13
  .badError {
14
14
  border-width: 3px;
15
15
  }
16
- :is(.foo, .ext1 .ext2, .ext3, .ext4) :is(.bar, .ext3, .ext4),
17
- :is(.foo, .ext1 .ext2, .ext3, .ext4) .baz {
16
+ :is(.foo, .ext3, .ext4) :is(.bar, .ext3, .ext4),
17
+ .ext1 .ext2 :is(.bar, .ext3, .ext4),
18
+ :is(.foo, .ext3, .ext4) .baz,
19
+ .ext1 .ext2 .baz {
18
20
  display: none;
19
21
  }
20
22
  div:is(.ext5, .ext7),
@@ -8,7 +8,8 @@
8
8
  .d {
9
9
  color: black;
10
10
  }
11
- :is(.g, :is(.i, .k).j).h {
11
+ .g.h,
12
+ :is(.i, .k).j.h {
12
13
  color: black;
13
14
  }
14
15
  :is(.i, .k).j {
@@ -5,7 +5,8 @@
5
5
  width: 300px;
6
6
  background: red;
7
7
  }
8
- :is(.sidebar, .sidebar2, .type1 .sidebar3, .type2.sidebar4) .box {
8
+ :is(.sidebar, .sidebar2) .box,
9
+ :is(.type1 .sidebar3, .type2.sidebar4) .box {
9
10
  background: #FFF;
10
11
  border: 1px solid #000;
11
12
  margin: 10px 0;
@@ -33,6 +34,6 @@
33
34
  notnested: black;
34
35
  }
35
36
  .amp-test-h,
36
- .amp-test-f:is(.amp-test-c :is(.amp-test-a, .amp-test-b).amp-test-d:is(.amp-test-a, .amp-test-b).amp-test-e) + :is(.amp-test-c :is(.amp-test-a, .amp-test-b).amp-test-d:is(.amp-test-a, .amp-test-b).amp-test-e).amp-test-g {
37
+ .amp-test-c :is(.amp-test-a, .amp-test-b).amp-test-d:is(.amp-test-a, .amp-test-b).amp-test-e.amp-test-f + :is(.amp-test-c :is(.amp-test-a, .amp-test-b).amp-test-d:is(.amp-test-a, .amp-test-b).amp-test-e).amp-test-g {
37
38
  test: extended by masses of selectors;
38
39
  }
@@ -1,5 +1,7 @@
1
- :is(.foo, .ext1 .ext2, .ext3, .ext4) .bar,
2
- :is(.foo, .ext1 .ext2, .ext3, .ext4) .baz {
1
+ :is(.foo, .ext3, .ext4) .bar,
2
+ .ext1 .ext2 .bar,
3
+ :is(.foo, .ext3, .ext4) .baz,
4
+ .ext1 .ext2 .baz {
3
5
  display: none;
4
6
  }
5
7
  div:is(.ext5, .ext7),
@@ -239,7 +239,7 @@ html {
239
239
  }
240
240
  .paren-escapes {
241
241
  list-1: 1, 2, 3;
242
- length-1: 1;
242
+ length-1: 3;
243
243
  item-1: 4;
244
244
  item-2: 5;
245
245
  item-3: 6;
@@ -21,6 +21,9 @@
21
21
  height: 10px;
22
22
  color: red;
23
23
  }
24
+ body {
25
+ width: 100%;
26
+ }
24
27
  .test-rule-f {
25
28
  height: 10px;
26
29
  }
@@ -0,0 +1,60 @@
1
+ .quoted {
2
+ single: "card";
3
+ chained: "inner";
4
+ quoted-value: "deep";
5
+ indirect-key: "indirect-hit";
6
+ empty-key: "tail";
7
+ chained-empty-key: "nested-tail";
8
+ surrounded: "a-card-b";
9
+ twice: "card/blue";
10
+ }
11
+ .url {
12
+ quoted: url("/assets/img/hero.png");
13
+ unquoted: url(/assets/img/plain.png);
14
+ unquoted-plain: url(/plain/no-lookup.png);
15
+ untouched: url(/static/literal.png);
16
+ untouched-quoted: url("/static/literal.png");
17
+ data-uri: url(data:image/svg+xml;base64,AAAA);
18
+ }
19
+ .property-interpolation {
20
+ color: red;
21
+ from-property: "red";
22
+ surrounded: "a-red-b";
23
+ bare: red;
24
+ }
25
+ .card {
26
+ a: b;
27
+ }
28
+ .inner {
29
+ c: d;
30
+ }
31
+ .property {
32
+ card: from-lookup;
33
+ inner: from-chained-lookup;
34
+ }
35
+ @keyframes card {
36
+ from {
37
+ opacity: 0;
38
+ }
39
+ to {
40
+ opacity: 1;
41
+ }
42
+ }
43
+ @media (min-width: 768px) {
44
+ .responsive {
45
+ e: f;
46
+ }
47
+ }
48
+ .custom-property {
49
+ --from-lookup: /assets/img;
50
+ --from-chained: inner;
51
+ }
52
+ .recursive {
53
+ g: "card";
54
+ }
55
+ .plain {
56
+ h: "name";
57
+ }
58
+ .name {
59
+ i: j;
60
+ }
@@ -0,0 +1,127 @@
1
+ // `[...]` lookups inside `@{...}` interpolation, backported from Less 5.x.
2
+ //
3
+ // Before the backport the parser accepted only `@{name}`, so every form below
4
+ // either failed to parse or — in string and url positions — silently emitted the
5
+ // interpolation verbatim into the output. The url/quoted cases in particular are
6
+ // regression coverage for that silent pass-through: a wrong-output bug that
7
+ // produced no error and no warning.
8
+ //
9
+ // The bare `@map[key]` spelling is covered by at-rule-variable-deprecated.less,
10
+ // where it is deprecated in structural positions.
11
+
12
+ @sizes: {
13
+ tablet: 768px;
14
+ name: card;
15
+ @name: indirect-hit;
16
+ last-entry: tail;
17
+ };
18
+
19
+ @theme: {
20
+ color: blue;
21
+ @nested: {
22
+ name: inner;
23
+ label: "deep";
24
+ last-entry: nested-tail;
25
+ }
26
+ };
27
+
28
+ @paths: {
29
+ img: "/assets/img";
30
+ };
31
+
32
+ @which: name;
33
+
34
+ // --- quoted strings ---
35
+ .quoted {
36
+ single: "@{sizes[name]}";
37
+ chained: "@{theme[@nested][name]}";
38
+ quoted-value: "@{theme[@nested][label]}";
39
+ indirect-key: "@{sizes[@@which]}";
40
+ empty-key: "@{sizes[]}";
41
+ chained-empty-key: "@{theme[@nested][]}";
42
+ surrounded: "a-@{sizes[name]}-b";
43
+ twice: "@{sizes[name]}/@{theme[color]}";
44
+ }
45
+
46
+ // --- url() — the silent pass-through regression ---
47
+ // An unquoted url() body was raw text in an Anonymous node, so neither the plain
48
+ // nor the lookup interpolation resolved there while the quoted form did. Both
49
+ // spellings are covered so the two cannot diverge again.
50
+ @plain-path: "/plain";
51
+
52
+ .url {
53
+ quoted: url("@{paths[img]}/hero.png");
54
+ unquoted: url(@{paths[img]}/plain.png);
55
+ unquoted-plain: url(@{plain-path}/no-lookup.png);
56
+ untouched: url(/static/literal.png);
57
+ untouched-quoted: url("/static/literal.png");
58
+ data-uri: url(data:image/svg+xml;base64,AAAA);
59
+ }
60
+
61
+ // --- ${...} property interpolation ---
62
+ // Properties have no lookup grammar: `$name[key]` is a property reference followed
63
+ // by literal `[key]`, and `prop: { … }` is a parse error in every scope, so nothing
64
+ // can hold a ruleset to look into. `${...}` therefore stays narrow while `@{...}`
65
+ // carries lookups, and the plain form must keep working unchanged.
66
+ .property-interpolation {
67
+ color: red;
68
+ from-property: "${color}";
69
+ surrounded: "a-${color}-b";
70
+ bare: $color;
71
+ }
72
+
73
+ // --- selector interpolation ---
74
+ .@{sizes[name]} {
75
+ a: b;
76
+ }
77
+
78
+ .@{theme[@nested][name]} {
79
+ c: d;
80
+ }
81
+
82
+ // --- property name interpolation ---
83
+ .property {
84
+ @{sizes[name]}: from-lookup;
85
+ @{theme[@nested][name]}: from-chained-lookup;
86
+ }
87
+
88
+ // --- at-rule name and prelude ---
89
+ @keyframes @{sizes[name]} {
90
+ from { opacity: 0; }
91
+ to { opacity: 1; }
92
+ }
93
+
94
+ @queries: {
95
+ tablet: ~"(min-width: 768px)";
96
+ };
97
+
98
+ @media @{queries[tablet]} {
99
+ .responsive {
100
+ e: f;
101
+ }
102
+ }
103
+
104
+ // --- custom property values ---
105
+ .custom-property {
106
+ --from-lookup: @{paths[img]};
107
+ --from-chained: @{theme[@nested][name]};
108
+ }
109
+
110
+ // --- interpolation still resolves to a fixpoint ---
111
+ // The inner `@{...}` arrives from a variable's value at eval time, so it is not
112
+ // present in the source text of the outer reference.
113
+ @inner: card;
114
+ @outer: ~"@{inner}";
115
+
116
+ .recursive {
117
+ g: "@{outer}";
118
+ }
119
+
120
+ // --- plain interpolation is unaffected by the lookup support ---
121
+ .plain {
122
+ h: "@{which}";
123
+ }
124
+
125
+ .@{which} {
126
+ i: j;
127
+ }
@@ -116,7 +116,7 @@
116
116
  @page :right {
117
117
  margin: 0.5cm;
118
118
  }
119
- @page Test :first {
119
+ @page Test:first {
120
120
  margin: 1cm;
121
121
  }
122
122
  @page :first {
@@ -275,7 +275,7 @@
275
275
  color: red;
276
276
  }
277
277
  }
278
- @media screen and (max-width: 1280px) {
278
+ @media screen and(max-width: 1280px) {
279
279
  .form-process-table {
280
280
  color: red;
281
281
  }
@@ -29,7 +29,8 @@ input[type=text], input[type=email], input[type=password], textarea {
29
29
  }
30
30
  }
31
31
  .bar2 {
32
- .q:is(.a, .b, .c)&:hover, baz-quoted {
32
+ .q.a, .b, .c&:hover,
33
+ baz-quoted {
33
34
  color: green;
34
35
  }
35
36
  }
@@ -38,7 +39,7 @@ input[type=text], input[type=email], input[type=password], textarea {
38
39
  foo: bar;
39
40
  }
40
41
  }
41
- :is(.a, .b):is(.c, .d) {
42
+ .a, .b.c, .d {
42
43
  + .e-quoted {
43
44
  foo: bar;
44
45
  }
@@ -1,7 +1,7 @@
1
1
  // Parse interpolation tests
2
- // Paired variants: selector-capture (`*[]`) and quoted selectors (`~'...'`).
2
+ // Paired variants: selector-capture (`selector()`) and quoted selectors (`~'...'`).
3
3
 
4
- @inputs-cap: *[input[type=text], input[type=email], input[type=password], textarea];
4
+ @inputs-cap: selector(input[type=text], input[type=email], input[type=password], textarea);
5
5
  @inputs-quoted: ~'input[type=text], input[type=email], input[type=password], textarea';
6
6
 
7
7
  @{inputs-cap} {
@@ -16,7 +16,7 @@
16
16
  }
17
17
  }
18
18
 
19
- @classes-cap: *[.a, .b, .c];
19
+ @classes-cap: selector(.a, .b, .c);
20
20
  @classes-quoted: ~'.a, .b, .c';
21
21
 
22
22
  @{classes-cap} {
@@ -43,8 +43,8 @@
43
43
  }
44
44
  }
45
45
 
46
- @c-cap: *[.a, .b];
47
- @d-cap: *[.c, .d];
46
+ @c-cap: selector(.a, .b);
47
+ @d-cap: selector(.c, .d);
48
48
  @e-cap: ~' + .e-cap';
49
49
 
50
50
  @{c-cap}@{d-cap} {
@@ -63,7 +63,7 @@
63
63
  }
64
64
  }
65
65
 
66
- @textClasses-cap: *[&[class="text"], &.text];
66
+ @textClasses-cap: selector(&[class="text"], &.text);
67
67
  @textClasses-quoted: ~'&[class="text"], &.text';
68
68
 
69
69
  input.cap {
@@ -78,7 +78,7 @@ input.quoted {
78
78
  }
79
79
  }
80
80
 
81
- @my-selector-cap: *[.selector-1, .selector-2];
81
+ @my-selector-cap: selector(.selector-1, .selector-2);
82
82
  @my-selector-quoted: ~'.selector-1, .selector-2';
83
83
 
84
84
  .master-page-cap {
@@ -93,7 +93,7 @@ input.quoted {
93
93
  }
94
94
  }
95
95
 
96
- @list-cap: *[apple, satsuma, banana, pear];
96
+ @list-cap: selector(apple, satsuma, banana, pear);
97
97
 
98
98
  @{list-cap} {
99
99
  .fruit-cap-& {
@@ -44,8 +44,8 @@ p a span {
44
44
  .qux :is(.foo .bar, .foo .baz) {
45
45
  display: inline;
46
46
  }
47
- .qux.foo .bar,
48
- .qux.foo .baz {
47
+ .foo .bar.qux,
48
+ .foo .baz.qux {
49
49
  display: inline-block;
50
50
  }
51
51
  .qux :is(.foo .bar, .foo .baz) .biz {
@@ -140,7 +140,7 @@ blank blank blank blank blank blank blank blank blank blank blank blank blank bl
140
140
  .blood {
141
141
  color: red;
142
142
  }
143
- .foo:not(.tst.only-nested .level2:hover) {
143
+ .foo:not(.only-nested .level2.tst:hover) {
144
144
  test: only-nested;
145
145
  }
146
146
  .foo.nestend-and-non-nested:not(.tst.nestend-and-non-nested:hover) {
@@ -150,8 +150,8 @@ blank blank blank blank blank blank blank blank blank blank blank blank blank bl
150
150
  test: global scope;
151
151
  }
152
152
  .extend-this,
153
- .active:is(.first-level .second-level),
154
- :is(.first-level .second-level).active2 {
153
+ .first-level .second-level.active,
154
+ .first-level .second-level.active2 {
155
155
  content: '\2661';
156
156
  }
157
157
  .x:is(.x.a) {
@@ -1,9 +1,14 @@
1
+ // Settings for every fixture under tests-unit/. A fixture folder's own
2
+ // styles.config overrides them. Flat output (collapseNesting: true) comes
3
+ // from the corpus root styles.config.ts.
4
+ //
5
+ // URL rewriting stays off: urls/urls.css keeps urls from imported files as
6
+ // they are written.
1
7
  module.exports = {
2
- language: {
3
- less: {
4
- "relativeUrls": true,
5
- "silent": true,
6
- "javascriptEnabled": true
7
- }
8
+ compile: {
9
+ // The goldens leave a division outside parens unevaluated: calc/calc.css
10
+ // keeps `50vh / 2`, and operations/operations-advanced.css keeps
11
+ // `10px / 2` and `10 / 5`, as its Less 4.x output in legacy/ does.
12
+ mathMode: 'parens-division'
8
13
  }
9
14
  };
@@ -1,8 +0,0 @@
1
- export default {
2
- compile: {
3
- mathMode: 'always'
4
- },
5
- output: {
6
- collapseNesting: true,
7
- },
8
- };