@less/test-data 4.8.1 → 5.0.0-alpha.1

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 (184) hide show
  1. package/UPSTREAM-FIXTURE-SYNC.md +54 -0
  2. package/package.json +4 -1
  3. package/styles.config.ts +15 -0
  4. package/tests-config/3rd-party/styles.config.cjs +1 -1
  5. package/tests-config/compression/styles.config.cjs +1 -1
  6. package/tests-config/debug/all/styles.config.cjs +1 -1
  7. package/tests-config/debug/comments/styles.config.cjs +1 -1
  8. package/tests-config/debug/mediaquery/styles.config.cjs +1 -1
  9. package/tests-config/filemanagerPlugin/styles.config.cjs +1 -1
  10. package/tests-config/functions-harness/functions-harness.css +8 -0
  11. package/tests-config/functions-harness/functions-harness.less +10 -0
  12. package/tests-config/namespacing/legacy/namespacing-7.css +15 -0
  13. package/tests-config/namespacing/namespacing-5.less +3 -3
  14. package/tests-config/namespacing/namespacing-7.css +16 -8
  15. package/tests-config/namespacing/styles.config.cjs +4 -1
  16. package/tests-config/strict-imports/legacy/strict-imports.css +14 -0
  17. package/tests-config/strict-imports/strict-imports.css +4 -2
  18. package/tests-config/strict-imports/styles.config.cjs +6 -5
  19. package/tests-error/eval/ampersand-merge-template-invalid.less +7 -0
  20. package/tests-error/eval/ampersand-merge-template-invalid.txt +1 -0
  21. package/tests-error/eval/at-rules-undefined-var.less +1 -1
  22. package/tests-unit/at-rule-variable-interpolation/at-rule-variable-interpolation.css +45 -0
  23. package/tests-unit/at-rule-variable-interpolation/at-rule-variable-interpolation.less +72 -0
  24. package/tests-unit/at-rules/at-rules.css +8 -6
  25. package/tests-unit/at-rules/legacy/at-rules.css +110 -0
  26. package/tests-unit/at-rules/styles.config.ts +5 -0
  27. package/tests-unit/at-rules-bubbling/at-rules-bubbling.css +121 -0
  28. package/tests-unit/at-rules-bubbling/legacy/at-rules-bubbling.css +122 -0
  29. package/tests-unit/at-rules-keyword-comments/at-rules-keyword-comments.css +2 -5
  30. package/tests-unit/at-rules-keyword-comments/legacy/at-rules-keyword-comments.css +12 -0
  31. package/tests-unit/at-rules-targeted/at-rules-targeted.css +5 -3
  32. package/tests-unit/at-rules-targeted/legacy/at-rules-targeted.css +55 -0
  33. package/tests-unit/calc/calc.css +8 -8
  34. package/tests-unit/calc/calc.less +1 -0
  35. package/tests-unit/calc/legacy/calc.css +32 -0
  36. package/tests-unit/color-functions/basic.css +1 -1
  37. package/tests-unit/color-functions/comprehensive.css +5 -5
  38. package/tests-unit/color-functions/comprehensive.less +1 -0
  39. package/tests-unit/color-functions/formats.css +0 -12
  40. package/tests-unit/color-functions/formats.less +0 -15
  41. package/tests-unit/color-functions/legacy/basic.css +21 -0
  42. package/tests-unit/color-functions/legacy/comprehensive.css +48 -0
  43. package/tests-unit/color-functions/legacy/modern-syntax.css +9 -0
  44. package/tests-unit/color-functions/legacy/operations.css +18 -0
  45. package/tests-unit/color-functions/legacy/rgba.css +20 -0
  46. package/tests-unit/color-functions/modern-syntax.css +4 -4
  47. package/tests-unit/color-functions/modern-syntax.less +1 -0
  48. package/tests-unit/color-functions/operations.less +1 -0
  49. package/tests-unit/color-functions/rgba.css +3 -3
  50. package/tests-unit/color-functions/rgba.less +3 -1
  51. package/tests-unit/comments/comments.css +5 -6
  52. package/tests-unit/comments/comments.less +2 -1
  53. package/tests-unit/comments/comments2.css +4 -6
  54. package/tests-unit/comments/comments2.less +3 -0
  55. package/tests-unit/comments/legacy/comments.css +86 -0
  56. package/tests-unit/comments/legacy/comments2.css +21 -0
  57. package/tests-unit/container/container.css +40 -83
  58. package/tests-unit/container/container.less +28 -82
  59. package/tests-unit/container/legacy/container.css +273 -0
  60. package/tests-unit/container/styles.config.ts +8 -0
  61. package/tests-unit/css-3/css-3.css +4 -4
  62. package/tests-unit/css-3/legacy/css-3.css +147 -0
  63. package/tests-unit/css-escapes/css-escapes.css +4 -4
  64. package/tests-unit/css-escapes/legacy/css-escapes.css +34 -0
  65. package/tests-unit/css-escapes/styles.config.ts +5 -0
  66. package/tests-unit/css-grid/css-grid.css +4 -1
  67. package/tests-unit/css-grid/legacy/css-grid.css +27 -0
  68. package/tests-unit/css-guards/css-guards.less +2 -1
  69. package/tests-unit/detached-rulesets/detached-rulesets.css +26 -18
  70. package/tests-unit/detached-rulesets/legacy/detached-rulesets.css +79 -0
  71. package/tests-unit/directives-bubbling/directives-bubbling.css +16 -14
  72. package/tests-unit/extend/extend.css +22 -28
  73. package/tests-unit/extend/legacy/extend.css +79 -0
  74. package/tests-unit/extend/styles.config.ts +5 -0
  75. package/tests-unit/extend-chaining/extend-chaining.css +7 -10
  76. package/tests-unit/extend-chaining/legacy/extend-chaining.css +84 -0
  77. package/tests-unit/extend-clearfix/extend-clearfix.css +1 -3
  78. package/tests-unit/extend-clearfix/extend-clearfix.less +0 -1
  79. package/tests-unit/{extend → extend-clearfix/legacy}/extend-clearfix.css +3 -0
  80. package/tests-unit/extend-exact/extend-exact.css +25 -24
  81. package/tests-unit/extend-exact/legacy/extend-exact.css +40 -0
  82. package/tests-unit/extend-exact/styles.config.ts +5 -0
  83. package/tests-unit/extend-media/extend-media.css +9 -14
  84. package/tests-unit/extend-media/legacy/extend-media.css +27 -0
  85. package/tests-unit/extend-media/styles.config.ts +5 -0
  86. package/tests-unit/extend-nest/extend-nest.css +3 -22
  87. package/tests-unit/extend-nest/legacy/extend-nest.css +60 -0
  88. package/tests-unit/extend-selector/extend-selector.css +42 -67
  89. package/tests-unit/extend-selector/extend-selector.less +0 -15
  90. package/tests-unit/extend-selector/legacy/extend-selector.css +73 -0
  91. package/tests-unit/extend-selector/styles.config.ts +5 -0
  92. package/tests-unit/extract-and-length/extract-and-length.css +6 -5
  93. package/tests-unit/extract-and-length/extract-and-length.less +7 -2
  94. package/tests-unit/extract-and-length/legacy/extract-and-length.css +137 -0
  95. package/tests-unit/functions/functions.css +5 -14
  96. package/tests-unit/functions/functions.less +7 -17
  97. package/tests-unit/functions/legacy/functions.css +244 -0
  98. package/tests-unit/functions/legacy/functions.less +296 -0
  99. package/tests-unit/functions-each/functions-each.css +4 -2
  100. package/tests-unit/import/import-reference-issues.css +6 -6
  101. package/tests-unit/import/import-reference.css +4 -2
  102. package/tests-unit/import/legacy/import-reference-issues.css +27 -0
  103. package/tests-unit/import/legacy/import-reference.css +101 -0
  104. package/tests-unit/import/styles.config.cjs +5 -4
  105. package/tests-unit/layer/layer.css +30 -28
  106. package/tests-unit/layer/legacy/layer.css +136 -0
  107. package/tests-unit/layer/styles.config.ts +5 -0
  108. package/tests-unit/math-css-vars/math-css-vars.css +1 -0
  109. package/tests-unit/math-css-vars/math-css-vars.less +1 -0
  110. package/tests-unit/media/legacy/media.css +274 -0
  111. package/tests-unit/media/media.css +49 -43
  112. package/tests-unit/media/media.less +0 -2
  113. package/tests-unit/media/styles.config.cjs +5 -0
  114. package/tests-unit/merge/merge.css +2 -2
  115. package/tests-unit/mixin-noparens/legacy/mixin-noparens.css +10 -0
  116. package/tests-unit/mixin-noparens/mixin-noparens.css +4 -2
  117. package/tests-unit/mixin-noparens/styles.config.ts +5 -0
  118. package/tests-unit/mixins/legacy/maps.css +9 -0
  119. package/tests-unit/mixins/legacy/mixins.css +147 -0
  120. package/tests-unit/mixins/maps.css +7 -5
  121. package/tests-unit/mixins/mixins.css +7 -5
  122. package/tests-unit/mixins/styles.config.ts +5 -0
  123. package/tests-unit/mixins-closure/legacy/mixins-closure.css +12 -0
  124. package/tests-unit/mixins-closure/mixins-closure.css +4 -2
  125. package/tests-unit/mixins-closure/styles.config.ts +5 -0
  126. package/tests-unit/mixins-guards/legacy/mixins-guards.css +214 -0
  127. package/tests-unit/mixins-guards/mixins-guards.css +5 -3
  128. package/tests-unit/mixins-guards/mixins-guards.less +0 -1
  129. package/tests-unit/mixins-guards/styles.config.ts +5 -0
  130. package/tests-unit/mixins-guards-default-func/legacy/mixins-guards-default-func.css +132 -0
  131. package/tests-unit/mixins-guards-default-func/mixins-guards-default-func.css +0 -2
  132. package/tests-unit/mixins-important/mixins-important.css +33 -19
  133. package/tests-unit/mixins-interpolated/legacy/mixins-interpolated.css +42 -0
  134. package/tests-unit/mixins-interpolated/mixins-interpolated.css +24 -14
  135. package/tests-unit/mixins-interpolated/styles.config.ts +5 -0
  136. package/tests-unit/mixins-nested/legacy/mixins-nested.css +17 -0
  137. package/tests-unit/mixins-nested/mixins-nested.css +16 -12
  138. package/tests-unit/mixins-nested/styles.config.ts +5 -0
  139. package/tests-unit/nesting/legacy/nesting.css +27 -0
  140. package/tests-unit/nesting/nesting-uncollapsed.css +26 -0
  141. package/tests-unit/nesting/nesting.css +1 -1
  142. package/tests-unit/nesting/styles.config.ts +6 -0
  143. package/tests-unit/operations/operations.css +4 -2
  144. package/tests-unit/parse-interpolation/legacy/parse-interpolation.css +39 -0
  145. package/tests-unit/parse-interpolation/parse-interpolation.css +72 -35
  146. package/tests-unit/parse-interpolation/parse-interpolation.less +73 -25
  147. package/tests-unit/parse-interpolation/styles.config.ts +5 -0
  148. package/tests-unit/parser-property-interp/parser-property-interp.css +1 -1
  149. package/tests-unit/parser-property-interp/parser-property-interp.less +2 -2
  150. package/tests-unit/parser-slashed-combinator/parser-slashed-combinator.css +1 -9
  151. package/tests-unit/parser-slashed-combinator/parser-slashed-combinator.less +11 -11
  152. package/tests-unit/plugin/styles.config.ts +11 -0
  153. package/tests-unit/property-accessors/legacy/property-accessors.css +60 -0
  154. package/tests-unit/property-accessors/property-accessors.css +15 -7
  155. package/tests-unit/property-name-interp/legacy/property-name-interp.css +24 -0
  156. package/tests-unit/property-name-interp/property-name-interp.css +1 -1
  157. package/tests-unit/property-name-interp/property-name-interp.less +4 -2
  158. package/tests-unit/property-targeted/legacy/property-targeted.css +7 -0
  159. package/tests-unit/property-targeted/property-targeted.css +1 -1
  160. package/tests-unit/rulesets/legacy/rulesets.css +31 -0
  161. package/tests-unit/rulesets/rulesets.css +30 -30
  162. package/tests-unit/rulesets/styles.config.ts +5 -0
  163. package/tests-unit/scope/legacy/scope.css +41 -0
  164. package/tests-unit/scope/scope.css +1 -1
  165. package/tests-unit/selectors/selectors.css +13 -41
  166. package/tests-unit/styles.config.cjs +1 -1
  167. package/tests-unit/styles.config.ts +8 -0
  168. package/tests-unit/variables/legacy/variable-advanced.css +58 -0
  169. package/tests-unit/variables/variable-advanced.css +1 -4
  170. package/tests-unit/variables/variable-advanced.less +5 -4
  171. package/tests-unit/variables-in-at-rules/variables-in-at-rules.less +3 -2
  172. package/tests-unit/whitespace/legacy/whitespace.css +45 -0
  173. package/tests-unit/whitespace/whitespace.css +3 -2
  174. package/tests-warnings/parentless-ampersand-nested.less +6 -0
  175. package/tests-warnings/parentless-ampersand-nested.txt +42 -0
  176. package/tests-warnings/parentless-ampersand.less +3 -0
  177. package/tests-warnings/parentless-ampersand.txt +21 -0
  178. package/tests-unit/extend/extend-clearfix.less +0 -19
  179. /package/tests-unit/{directives-bubbling/directives-bubbling.less → at-rules-bubbling/at-rules-bubbling.less} +0 -0
  180. /package/tests-unit/{ie-filters → ie-filters-REMOVED/legacy}/ie-filters.css +0 -0
  181. /package/tests-unit/{ie-filters → ie-filters-REMOVED/legacy}/ie-filters.less +0 -0
  182. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/javascript.css +0 -0
  183. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/javascript.less +0 -0
  184. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/styles.config.cjs +0 -0
@@ -1,54 +1,102 @@
1
1
  // Parse interpolation tests
2
- @inputs: input[type=text], input[type=email], input[type=password], textarea;
2
+ // Paired variants: selector-capture (`*[]`) and quoted selectors (`~'...'`).
3
3
 
4
- @{inputs} {
4
+ @inputs-cap: *[input[type=text], input[type=email], input[type=password], textarea];
5
+ @inputs-quoted: ~'input[type=text], input[type=email], input[type=password], textarea';
6
+
7
+ @{inputs-cap} {
5
8
  &:focus {
6
9
  foo: bar;
7
10
  }
8
- }
11
+ }
9
12
 
10
- @classes: .a, .b, .c;
13
+ @{inputs-quoted} {
14
+ &:focus {
15
+ foo: baz;
16
+ }
17
+ }
18
+
19
+ @classes-cap: *[.a, .b, .c];
20
+ @classes-quoted: ~'.a, .b, .c';
11
21
 
12
- @{classes} {
13
- + .z {
14
- color: blue;
22
+ @{classes-cap} {
23
+ + .z-cap {
24
+ color: blue;
25
+ }
26
+ }
27
+
28
+ @{classes-quoted} {
29
+ + .z-quoted {
30
+ color: green;
15
31
  }
16
32
  }
17
33
 
18
34
  .bar {
19
- .d@{classes}&:hover, baz {
35
+ .d@{classes-cap}&:hover, baz-cap {
20
36
  color: blue;
21
37
  }
22
38
  }
23
39
 
24
- @c: ~'.a, .b';
25
- @d: ~'.c, .d';
26
- @e: ~' + .e';
40
+ .bar2 {
41
+ .q@{classes-quoted}&:hover, baz-quoted {
42
+ color: green;
43
+ }
44
+ }
45
+
46
+ @c-cap: *[.a, .b];
47
+ @d-cap: *[.c, .d];
48
+ @e-cap: ~' + .e-cap';
27
49
 
28
- @{c}@{d} {
29
- @{e} {
50
+ @{c-cap}@{d-cap} {
51
+ @{e-cap} {
30
52
  foo: bar;
31
53
  }
32
54
  }
33
55
 
34
- @textClasses: ~'&[class="text"], &.text';
56
+ @c-quoted: ~'.a, .b';
57
+ @d-quoted: ~'.c, .d';
58
+ @e-quoted: ~' + .e-quoted';
35
59
 
36
- input {
37
- @{textClasses} {
60
+ @{c-quoted}@{d-quoted} {
61
+ @{e-quoted} {
62
+ foo: baz;
63
+ }
64
+ }
65
+
66
+ @textClasses-cap: *[&[class="text"], &.text];
67
+ @textClasses-quoted: ~'&[class="text"], &.text';
68
+
69
+ input.cap {
70
+ @{textClasses-cap} {
38
71
  background: red;
39
72
  }
40
73
  }
41
74
 
42
- @my-selector: ~'.selector-1, .selector-2';
43
- .master-page-1 {
44
- @{my-selector} {
45
- background-color: red;
46
- }
75
+ input.quoted {
76
+ @{textClasses-quoted} {
77
+ background: blue;
78
+ }
47
79
  }
48
80
 
49
- @list: apple, satsuma, banana, pear;
50
- @{list} {
51
- .fruit-& {
52
- content: "Just a test.";
81
+ @my-selector-cap: *[.selector-1, .selector-2];
82
+ @my-selector-quoted: ~'.selector-1, .selector-2';
83
+
84
+ .master-page-cap {
85
+ @{my-selector-cap} {
86
+ background-color: red;
87
+ }
88
+ }
89
+
90
+ .master-page-quoted {
91
+ @{my-selector-quoted} {
92
+ background-color: blue;
93
+ }
94
+ }
95
+
96
+ @list-cap: *[apple, satsuma, banana, pear];
97
+
98
+ @{list-cap} {
99
+ .fruit-cap-& {
100
+ content: "Capture";
53
101
  }
54
102
  }
@@ -0,0 +1,5 @@
1
+ export default {
2
+ output: {
3
+ collapseNesting: false
4
+ }
5
+ };
@@ -4,6 +4,6 @@
4
4
  value: width;
5
5
  color: red;
6
6
  border-color-width: 2px;
7
- *-z-color: 1px dashed blue;
7
+ --z-color: 1px dashed blue;
8
8
  background-color-width: green;
9
9
  }
@@ -18,8 +18,8 @@
18
18
  // border-${prop-name} becomes "border-color" (since prop-name's value is "color")
19
19
  border-${prop-name}-width: 2px;
20
20
 
21
- // Complex property name with ${prop}
22
- *-z-${prop-name}: 1px dashed blue;
21
+ // Custom property name with ${prop-name}
22
+ --z-${prop-name}: 1px dashed blue;
23
23
 
24
24
  // Multiple ${prop} in same property name
25
25
  // ${my}-${prop-name}-${value} becomes "background-color-width"
@@ -1,9 +1 @@
1
- .parent /deep/ .child {
2
- color: red;
3
- }
4
- .container /shadow/ .content {
5
- background: blue;
6
- }
7
- .wrapper /deep/ .inner /deep/ .deepest {
8
- padding: 10px;
9
- }
1
+
@@ -4,17 +4,17 @@
4
4
  // They were part of the Shadow DOM specification but have been removed
5
5
 
6
6
  // /deep/ combinator (deprecated)
7
- .parent /deep/ .child {
8
- color: red;
9
- }
7
+ // .parent /deep/ .child {
8
+ // color: red;
9
+ // }
10
10
 
11
- // /shadow/ combinator (deprecated)
12
- .container /shadow/ .content {
13
- background: blue;
14
- }
11
+ // // /shadow/ combinator (deprecated)
12
+ // .container /shadow/ .content {
13
+ // background: blue;
14
+ // }
15
15
 
16
- // Test with nested selectors
17
- .wrapper /deep/ .inner /deep/ .deepest {
18
- padding: 10px;
19
- }
16
+ // // Test with nested selectors
17
+ // .wrapper /deep/ .inner /deep/ .deepest {
18
+ // padding: 10px;
19
+ // }
20
20
 
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `@plugin` fixtures load their scripts through the compiler's plugin resolver.
3
+ * Do not `require()` them while loading test configuration: those scripts are
4
+ * intentionally evaluated with the plugin-scoped Less globals (`functions`,
5
+ * `tree`, and `registerPlugin`), not with Node globals.
6
+ */
7
+ export default {
8
+ output: {
9
+ collapseNesting: true
10
+ }
11
+ };
@@ -0,0 +1,60 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .block_1 {
5
+ color: red;
6
+ background-color: red;
7
+ width: 50px;
8
+ height: 25px;
9
+ border: 1px solid #ff3333;
10
+ }
11
+ .block_1:hover {
12
+ background-color: green;
13
+ color: green;
14
+ }
15
+ .block_1 .one {
16
+ background: red;
17
+ }
18
+ .block_1 {
19
+ content: "red";
20
+ prop: red;
21
+ }
22
+ .block_2 {
23
+ color: red;
24
+ }
25
+ .block_2 .two {
26
+ background-color: blue;
27
+ }
28
+ .block_2 {
29
+ color: blue;
30
+ }
31
+ .block_3 {
32
+ color: red;
33
+ color: yellow;
34
+ }
35
+ .block_3 .three {
36
+ background-color: blue;
37
+ }
38
+ .block_3 {
39
+ color: blue;
40
+ }
41
+ .block_4 {
42
+ color: red;
43
+ color: yellow;
44
+ }
45
+ .block_4 .four {
46
+ background-color: yellow;
47
+ }
48
+ .block_4 {
49
+ color: blue;
50
+ }
51
+ a {
52
+ background-color: red, foo;
53
+ }
54
+ ab {
55
+ background: red, foo;
56
+ }
57
+ .value_as_property {
58
+ prop1: color;
59
+ color: #FF0000;
60
+ }
@@ -4,8 +4,6 @@
4
4
  width: 50px;
5
5
  height: 25px;
6
6
  border: 1px solid #ff3333;
7
- content: "red";
8
- prop: red;
9
7
  }
10
8
  .block_1:hover {
11
9
  background-color: green;
@@ -14,29 +12,39 @@
14
12
  .block_1 .one {
15
13
  background: red;
16
14
  }
15
+ .block_1 {
16
+ content: "red";
17
+ prop: red;
18
+ }
17
19
  .block_2 {
18
20
  color: red;
19
- color: blue;
20
21
  }
21
22
  .block_2 .two {
22
23
  background-color: blue;
23
24
  }
25
+ .block_2 {
26
+ color: blue;
27
+ }
24
28
  .block_3 {
25
29
  color: red;
26
- color: yellow;
27
- color: blue;
28
30
  }
29
31
  .block_3 .three {
30
32
  background-color: blue;
31
33
  }
34
+ .block_3 {
35
+ color: yellow;
36
+ color: blue;
37
+ }
32
38
  .block_4 {
33
39
  color: red;
34
- color: blue;
35
- color: yellow;
36
40
  }
37
41
  .block_4 .four {
38
42
  background-color: yellow;
39
43
  }
44
+ .block_4 {
45
+ color: blue;
46
+ color: yellow;
47
+ }
40
48
  a {
41
49
  background-color: red, foo;
42
50
  }
@@ -0,0 +1,24 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ pi-test {
5
+ border: 0;
6
+ @not-variable: @not-variable;
7
+ ufo-width: 50%;
8
+ *-z-border: 1px dashed blue;
9
+ -www-border-top: 2px;
10
+ radius-is-not-a-border: true;
11
+ border-top-left-radius: 2em;
12
+ border-top-red-radius-: 3pt;
13
+ global-local-mixer-property: strong;
14
+ }
15
+ pi-test-merge {
16
+ pre-property-ish: high, middle, low, base;
17
+ pre-property-ish+: nice try dude;
18
+ }
19
+ pi-indirect-vars {
20
+ auto: auto;
21
+ }
22
+ pi-complex-values {
23
+ 3px rgba(255, 255, 0, 0.5), 3.141592653589793 /* foo */3px rgba(255, 255, 0, 0.5), 3.141592653589793 /* foo */: none;
24
+ }
@@ -17,5 +17,5 @@ pi-indirect-vars {
17
17
  auto: auto;
18
18
  }
19
19
  pi-complex-values {
20
- 3px rgba(255, 255, 0, 0.5), 3.141592653589793 /* foo */3px rgba(255, 255, 0, 0.5), 3.141592653589793 /* foo */: none;
20
+ 3px rgba(255, 255, 0, 0.5), 3.1415926536 /* foo */3px rgba(255, 255, 0, 0.5), 3.1415926536 /* foo */: none;
21
21
  }
@@ -5,7 +5,9 @@ pi-test {
5
5
  @bb: top;
6
6
  @c_c: left;
7
7
  @d-d4: radius;
8
- @-: -;
8
+ // Dash-only variable names are removed in Less 5. Keep this fixture on
9
+ // the supported interpolation path with an ordinary variable instead.
10
+ @dash: -;
9
11
 
10
12
  @var: ~'@not-variable';
11
13
 
@@ -16,7 +18,7 @@ pi-test {
16
18
  -www-@{a}-@{bb}: 2px;
17
19
  @{d-d4}-is-not-a-@{a}:true;
18
20
  @{a}-@{bb}-@{c_c}-@{d-d4} : 2em;
19
- @{a}@{-}@{bb}@{-}red@{-}@{d-d4}-: 3pt;
21
+ @{a}@{dash}@{bb}@{dash}red@{dash}@{d-d4}-: 3pt;
20
22
 
21
23
  .mixin(mixer);
22
24
  .merge(ish, base);
@@ -0,0 +1,7 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .test-important {
5
+ color: red!important;
6
+ background: red !important;
7
+ }
@@ -1,4 +1,4 @@
1
1
  .test-important {
2
- color: red!important;
2
+ color: red !important;
3
3
  background: red !important;
4
4
  }
@@ -0,0 +1,31 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ #first > .one > #second .two > #deux {
5
+ width: 50%;
6
+ }
7
+ #first > .one > #second .two > #deux #third:focus {
8
+ color: black;
9
+ }
10
+ #first > .one > #second .two > #deux #third:focus #fifth > #sixth .seventh #eighth + #ninth {
11
+ color: purple;
12
+ }
13
+ #first > .one > #second .two > #deux #third {
14
+ height: 100%;
15
+ }
16
+ #first > .one > #second .two > #deux #fourth,
17
+ #first > .one > #second .two > #deux #five,
18
+ #first > .one > #second .two > #deux #six {
19
+ color: #110000;
20
+ }
21
+ :is(#first > .one > #second .two > #deux #fourth, #first > .one > #second .two > #deux #five, #first > .one > #second .two > #deux #six) .seven,
22
+ :is(#first > .one > #second .two > #deux #fourth, #first > .one > #second .two > #deux #five, #first > .one > #second .two > #deux #six) .eight > #nine {
23
+ border: 1px solid black;
24
+ }
25
+ :is(#first > .one > #second .two > #deux #fourth, #first > .one > #second .two > #deux #five, #first > .one > #second .two > #deux #six) #ten {
26
+ color: red;
27
+ }
28
+ #first > .one {
29
+ font-size: 2em;
30
+ hasOwnProperty: blue;
31
+ }
@@ -1,34 +1,34 @@
1
1
  #first > .one {
2
+ > #second .two > #deux {
3
+ width: 50%;
4
+ #third {
5
+ &:focus {
6
+ color: black;
7
+ #fifth {
8
+ > #sixth {
9
+ .seventh #eighth {
10
+ + #ninth {
11
+ color: purple;
12
+ }
13
+ }
14
+ }
15
+ }
16
+ }
17
+ height: 100%;
18
+ }
19
+ #fourth,
20
+ #five,
21
+ #six {
22
+ color: #110000;
23
+ .seven,
24
+ .eight > #nine {
25
+ border: 1px solid black;
26
+ }
27
+ #ten {
28
+ color: red;
29
+ }
30
+ }
31
+ }
2
32
  font-size: 2em;
3
33
  hasOwnProperty: blue;
4
34
  }
5
- #first > .one > #second .two > #deux {
6
- width: 50%;
7
- }
8
- #first > .one > #second .two > #deux #third {
9
- height: 100%;
10
- }
11
- #first > .one > #second .two > #deux #third:focus {
12
- color: black;
13
- }
14
- #first > .one > #second .two > #deux #third:focus #fifth > #sixth .seventh #eighth + #ninth {
15
- color: purple;
16
- }
17
- #first > .one > #second .two > #deux #fourth,
18
- #first > .one > #second .two > #deux #five,
19
- #first > .one > #second .two > #deux #six {
20
- color: #110000;
21
- }
22
- #first > .one > #second .two > #deux #fourth .seven,
23
- #first > .one > #second .two > #deux #five .seven,
24
- #first > .one > #second .two > #deux #six .seven,
25
- #first > .one > #second .two > #deux #fourth .eight > #nine,
26
- #first > .one > #second .two > #deux #five .eight > #nine,
27
- #first > .one > #second .two > #deux #six .eight > #nine {
28
- border: 1px solid black;
29
- }
30
- #first > .one > #second .two > #deux #fourth #ten,
31
- #first > .one > #second .two > #deux #five #ten,
32
- #first > .one > #second .two > #deux #six #ten {
33
- color: red;
34
- }
@@ -0,0 +1,5 @@
1
+ export default {
2
+ output: [
3
+ { file: '{name}.css', collapseNesting: false }
4
+ ]
5
+ }
@@ -0,0 +1,41 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .tiny-scope {
5
+ color: #989;
6
+ }
7
+ .scope1 {
8
+ color: blue;
9
+ border-color: black;
10
+ }
11
+ .scope1 .scope2 {
12
+ color: blue;
13
+ }
14
+ .scope1 .scope2 .scope3 {
15
+ color: red;
16
+ border-color: black;
17
+ background-color: white;
18
+ }
19
+ .scope {
20
+ scoped-val: green;
21
+ }
22
+ .heightIsSet {
23
+ height: 1024px;
24
+ }
25
+ .useHeightInMixinCall {
26
+ mixin-height: 1024px;
27
+ }
28
+ .imported {
29
+ exists: true;
30
+ }
31
+ .testImported {
32
+ exists: true;
33
+ }
34
+ #allAreUsedHere {
35
+ default: 'top level';
36
+ scope: 'top level';
37
+ sub-scope-only: 'inside';
38
+ }
39
+ #parentSelectorScope {
40
+ prop: white;
41
+ }
@@ -1,5 +1,5 @@
1
1
  .tiny-scope {
2
- color: #989;
2
+ color: blue;
3
3
  }
4
4
  .scope1 {
5
5
  color: blue;
@@ -1,9 +1,4 @@
1
- h1 a:hover,
2
- h2 a:hover,
3
- h3 a:hover,
4
- h1 p:hover,
5
- h2 p:hover,
6
- h3 p:hover {
1
+ :is(h1 a, h2 a, h3 a, h1 p, h2 p, h3 p):hover {
7
2
  color: red;
8
3
  }
9
4
  #all {
@@ -43,20 +38,17 @@ div a {
43
38
  p a span {
44
39
  color: yellow;
45
40
  }
46
- .foo .bar .qux,
47
- .foo .baz .qux {
41
+ :is(.foo .bar, .foo .baz) .qux {
48
42
  display: block;
49
43
  }
50
- .qux .foo .bar,
51
- .qux .foo .baz {
44
+ .qux :is(.foo .bar, .foo .baz) {
52
45
  display: inline;
53
46
  }
54
47
  .qux.foo .bar,
55
48
  .qux.foo .baz {
56
49
  display: inline-block;
57
50
  }
58
- .qux .foo .bar .biz,
59
- .qux .foo .baz .biz {
51
+ .qux :is(.foo .bar, .foo .baz) .biz {
60
52
  display: none;
61
53
  }
62
54
  .a.b.c {
@@ -73,32 +65,12 @@ p a span {
73
65
  }
74
66
  .foo + .foo {
75
67
  background: amber;
76
- }
77
- .foo + .foo {
78
68
  background: amber;
79
69
  }
80
- .foo + .foo,
81
- .foo + .bar,
82
- .bar + .foo,
83
- .bar + .bar {
70
+ :is(.foo, .bar) + :is(.foo, .bar) {
84
71
  background: amber;
85
72
  }
86
- .foo a > .foo a,
87
- .foo a > .bar a,
88
- .foo a > .foo b,
89
- .foo a > .bar b,
90
- .bar a > .foo a,
91
- .bar a > .bar a,
92
- .bar a > .foo b,
93
- .bar a > .bar b,
94
- .foo b > .foo a,
95
- .foo b > .bar a,
96
- .foo b > .foo b,
97
- .foo b > .bar b,
98
- .bar b > .foo a,
99
- .bar b > .bar a,
100
- .bar b > .foo b,
101
- .bar b > .bar b {
73
+ :is(.foo a, .bar a, .foo b, .bar b) > :is(.foo a, .bar a, .foo b, .bar b) {
102
74
  background: amber;
103
75
  }
104
76
  .other ::fnord {
@@ -178,8 +150,8 @@ blank blank blank blank blank blank blank blank blank blank blank blank blank bl
178
150
  test: global scope;
179
151
  }
180
152
  .extend-this,
181
- .active.first-level .second-level,
182
- .first-level .second-level.active2 {
153
+ .active:is(.first-level .second-level),
154
+ :is(.first-level .second-level).active2 {
183
155
  content: '\2661';
184
156
  }
185
157
  .x:is(.x.a) {
@@ -197,16 +169,16 @@ a:is(.b, :is(.c)) {
197
169
  a:is(.b, :is(.c), :has(div)) {
198
170
  color: red;
199
171
  }
200
- :is(:not(:has(>.foo)), :has(>.foo.bar)) {
172
+ :is(:not(:has(> .foo)), :has(> .foo.bar)) {
201
173
  overflow: clip;
202
174
  }
203
- :matches(:not(:has(>.foo)), :has(>.foo.bar)) {
175
+ :matches(:not(:has(> .foo)), :has(> .foo.bar)) {
204
176
  overflow: clip;
205
177
  }
206
- :where(:not(:has(>.foo)), :has(>.foo.bar)) {
178
+ :where(:not(:has(> .foo)), :has(> .foo.bar)) {
207
179
  overflow: clip;
208
180
  }
209
- :is(:has(>.foo + .bar), :has(>.baz ~ .qux), :not(:has(.quux))) {
181
+ :is(:has(> .foo + .bar), :has(> .baz ~ .qux), :not(:has(.quux))) {
210
182
  color: blue;
211
183
  }
212
184
  :where(.a, .b, .c) {
@@ -215,7 +187,7 @@ a:is(.b, :is(.c), :has(div)) {
215
187
  :not(.a, .b, .c) {
216
188
  color: green;
217
189
  }
218
- :where(:is(.a, .b), :has(>.c)) {
190
+ :where(:is(.a, .b), :has(> .c)) {
219
191
  color: blue;
220
192
  }
221
193
  :is(:where(:has(.foo)), :not(:has(.bar))) {
@@ -4,6 +4,6 @@ module.exports = {
4
4
  "relativeUrls": true,
5
5
  "silent": true,
6
6
  "javascriptEnabled": true
7
- }
7
+ }
8
8
  }
9
9
  };
@@ -0,0 +1,8 @@
1
+ export default {
2
+ compile: {
3
+ mathMode: 'always'
4
+ },
5
+ output: {
6
+ collapseNesting: true,
7
+ },
8
+ };