@less/test-data 4.9.1 → 5.0.0-alpha.10

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 (227) 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/bootstrap4.css +182 -365
  5. package/tests-config/3rd-party/styles.config.cjs +1 -1
  6. package/tests-config/at-rules-compressed/at-rules-compressed.css +1 -1
  7. package/tests-config/at-rules-compressed-evaluation/at-rules-compressed-evaluation.css +1 -1
  8. package/tests-config/compression/compression.css +2 -2
  9. package/tests-config/compression/compression.less +0 -4
  10. package/tests-config/compression/styles.config.cjs +1 -1
  11. package/tests-config/debug/all/styles.config.cjs +1 -1
  12. package/tests-config/debug/comments/styles.config.cjs +1 -1
  13. package/tests-config/debug/mediaquery/styles.config.cjs +1 -1
  14. package/tests-config/filemanagerPlugin/styles.config.cjs +1 -1
  15. package/tests-config/functions-harness/functions-harness.css +8 -0
  16. package/tests-config/functions-harness/functions-harness.less +10 -0
  17. package/tests-config/js-type-errors/js-type-error-2.txt +4 -0
  18. package/tests-config/js-type-errors/js-type-error.txt +1 -1
  19. package/tests-config/namespacing/legacy/namespacing-7.css +15 -0
  20. package/tests-config/namespacing/namespacing-5.less +3 -3
  21. package/tests-config/namespacing/namespacing-7.css +16 -8
  22. package/tests-config/namespacing/styles.config.cjs +4 -1
  23. package/tests-config/sourcemaps/styles.config.cjs +1 -1
  24. package/tests-config/sourcemaps-variable-selector/styles.config.cjs +1 -1
  25. package/tests-config/static-urls/urls.css +2 -1
  26. package/tests-config/strict-imports/legacy/strict-imports.css +14 -0
  27. package/tests-config/strict-imports/strict-imports.css +4 -2
  28. package/tests-config/strict-imports/styles.config.cjs +6 -5
  29. package/tests-config/units/loose/loose.css +21 -0
  30. package/tests-config/units/loose/loose.less +21 -0
  31. package/tests-config/units/loose/styles.config.cjs +8 -0
  32. package/tests-config/units/no-strict/legacy/no-strict.css +24 -0
  33. package/tests-config/units/no-strict/no-strict.css +12 -12
  34. package/tests-config/url-args/legacy/urls.css +58 -0
  35. package/tests-config/url-args/urls.css +2 -1
  36. package/tests-error/eval/ampersand-merge-template-invalid.less +7 -0
  37. package/tests-error/eval/ampersand-merge-template-invalid.txt +1 -0
  38. package/tests-error/eval/at-rules-undefined-var.less +1 -1
  39. package/tests-error/eval/property-undefined.txt +1 -0
  40. package/tests-error/eval/recursive-property.txt +1 -0
  41. package/tests-unit/at-rule-variable-deprecated/at-rule-variable-deprecated.css +0 -38
  42. package/tests-unit/at-rule-variable-deprecated/at-rule-variable-deprecated.less +0 -70
  43. package/tests-unit/at-rule-variable-interpolation/at-rule-variable-interpolation.css +45 -0
  44. package/tests-unit/at-rule-variable-interpolation/at-rule-variable-interpolation.less +72 -0
  45. package/tests-unit/at-rules/at-rules.css +8 -6
  46. package/tests-unit/at-rules/legacy/at-rules.css +110 -0
  47. package/tests-unit/at-rules/styles.config.ts +5 -0
  48. package/tests-unit/at-rules-bubbling/at-rules-bubbling.css +121 -0
  49. package/tests-unit/at-rules-bubbling/legacy/at-rules-bubbling.css +122 -0
  50. package/tests-unit/at-rules-keyword-comments/at-rules-keyword-comments.css +2 -5
  51. package/tests-unit/at-rules-keyword-comments/legacy/at-rules-keyword-comments.css +12 -0
  52. package/tests-unit/at-rules-targeted/at-rules-targeted.css +5 -3
  53. package/tests-unit/at-rules-targeted/legacy/at-rules-targeted.css +55 -0
  54. package/tests-unit/calc/calc.css +8 -8
  55. package/tests-unit/calc/calc.less +1 -0
  56. package/tests-unit/calc/legacy/calc.css +32 -0
  57. package/tests-unit/color-functions/basic.css +1 -1
  58. package/tests-unit/color-functions/comprehensive.css +5 -5
  59. package/tests-unit/color-functions/comprehensive.less +1 -0
  60. package/tests-unit/color-functions/formats.css +0 -12
  61. package/tests-unit/color-functions/formats.less +0 -15
  62. package/tests-unit/color-functions/legacy/basic.css +21 -0
  63. package/tests-unit/color-functions/legacy/comprehensive.css +48 -0
  64. package/tests-unit/color-functions/legacy/modern-syntax.css +9 -0
  65. package/tests-unit/color-functions/legacy/operations.css +18 -0
  66. package/tests-unit/color-functions/legacy/rgba.css +20 -0
  67. package/tests-unit/color-functions/modern-syntax.css +4 -4
  68. package/tests-unit/color-functions/modern-syntax.less +1 -0
  69. package/tests-unit/color-functions/operations.css +1 -1
  70. package/tests-unit/color-functions/operations.less +1 -0
  71. package/tests-unit/color-functions/rgba.css +3 -3
  72. package/tests-unit/color-functions/rgba.less +3 -1
  73. package/tests-unit/comments/comments.css +5 -6
  74. package/tests-unit/comments/comments.less +2 -1
  75. package/tests-unit/comments/comments2.css +4 -6
  76. package/tests-unit/comments/comments2.less +3 -0
  77. package/tests-unit/comments/legacy/comments.css +86 -0
  78. package/tests-unit/comments/legacy/comments2.css +21 -0
  79. package/tests-unit/container/container.css +40 -83
  80. package/tests-unit/container/container.less +28 -82
  81. package/tests-unit/container/legacy/container.css +273 -0
  82. package/tests-unit/container/styles.config.ts +8 -0
  83. package/tests-unit/css-3/css-3.css +4 -4
  84. package/tests-unit/css-3/legacy/css-3.css +147 -0
  85. package/tests-unit/css-escapes/css-escapes.css +4 -4
  86. package/tests-unit/css-escapes/legacy/css-escapes.css +34 -0
  87. package/tests-unit/css-escapes/styles.config.ts +5 -0
  88. package/tests-unit/css-grid/css-grid.css +4 -1
  89. package/tests-unit/css-grid/legacy/css-grid.css +27 -0
  90. package/tests-unit/css-guards/css-guards.less +2 -1
  91. package/tests-unit/detached-rulesets/detached-rulesets.css +26 -18
  92. package/tests-unit/detached-rulesets/legacy/detached-rulesets.css +79 -0
  93. package/tests-unit/detached-rulesets/styles.config.cjs +8 -0
  94. package/tests-unit/directives-bubbling/directives-bubbling.css +16 -14
  95. package/tests-unit/extend/extend.css +22 -28
  96. package/tests-unit/extend/legacy/extend.css +79 -0
  97. package/tests-unit/extend/styles.config.ts +5 -0
  98. package/tests-unit/extend-chaining/extend-chaining.css +7 -10
  99. package/tests-unit/extend-chaining/legacy/extend-chaining.css +84 -0
  100. package/tests-unit/extend-clearfix/extend-clearfix.css +1 -3
  101. package/tests-unit/extend-clearfix/extend-clearfix.less +0 -1
  102. package/tests-unit/{extend → extend-clearfix/legacy}/extend-clearfix.css +3 -0
  103. package/tests-unit/extend-exact/extend-exact.css +25 -24
  104. package/tests-unit/extend-exact/legacy/extend-exact.css +40 -0
  105. package/tests-unit/extend-exact/styles.config.ts +5 -0
  106. package/tests-unit/extend-media/extend-media.css +9 -14
  107. package/tests-unit/extend-media/legacy/extend-media.css +27 -0
  108. package/tests-unit/extend-media/styles.config.ts +5 -0
  109. package/tests-unit/extend-nest/extend-nest.css +3 -22
  110. package/tests-unit/extend-nest/legacy/extend-nest.css +60 -0
  111. package/tests-unit/extend-selector/extend-selector.css +42 -67
  112. package/tests-unit/extend-selector/extend-selector.less +0 -15
  113. package/tests-unit/extend-selector/legacy/extend-selector.css +73 -0
  114. package/tests-unit/extend-selector/styles.config.ts +5 -0
  115. package/tests-unit/extract-and-length/extract-and-length.css +6 -5
  116. package/tests-unit/extract-and-length/extract-and-length.less +7 -2
  117. package/tests-unit/extract-and-length/legacy/extract-and-length.css +137 -0
  118. package/tests-unit/functions/functions.css +13 -24
  119. package/tests-unit/functions/functions.less +8 -21
  120. package/tests-unit/functions/legacy/functions.css +244 -0
  121. package/tests-unit/functions/legacy/functions.less +296 -0
  122. package/tests-unit/functions-each/functions-each.css +4 -2
  123. package/tests-unit/import/import/import-reference.less +1 -1
  124. package/tests-unit/import/import-reference-issues.css +6 -6
  125. package/tests-unit/import/import-reference.css +9 -5
  126. package/tests-unit/import/import.css +1 -1
  127. package/tests-unit/import/legacy/import-reference-issues.css +27 -0
  128. package/tests-unit/import/legacy/import-reference.css +101 -0
  129. package/tests-unit/import/styles.config.cjs +3 -4
  130. package/tests-unit/layer/layer.css +30 -28
  131. package/tests-unit/layer/legacy/layer.css +136 -0
  132. package/tests-unit/layer/styles.config.ts +5 -0
  133. package/tests-unit/math-css-vars/math-css-vars.css +1 -0
  134. package/tests-unit/math-css-vars/math-css-vars.less +1 -0
  135. package/tests-unit/media/legacy/media.css +274 -0
  136. package/tests-unit/media/media.css +49 -43
  137. package/tests-unit/media/media.less +0 -2
  138. package/tests-unit/media/styles.config.cjs +5 -0
  139. package/tests-unit/merge/merge.css +2 -2
  140. package/tests-unit/mixin-noparens/legacy/mixin-noparens.css +10 -0
  141. package/tests-unit/mixin-noparens/mixin-noparens.css +4 -2
  142. package/tests-unit/mixin-noparens/styles.config.ts +5 -0
  143. package/tests-unit/mixins/legacy/maps.css +9 -0
  144. package/tests-unit/mixins/legacy/mixins.css +147 -0
  145. package/tests-unit/mixins/maps.css +7 -5
  146. package/tests-unit/mixins/mixins.css +7 -5
  147. package/tests-unit/mixins/styles.config.ts +3 -0
  148. package/tests-unit/mixins-closure/legacy/mixins-closure.css +12 -0
  149. package/tests-unit/mixins-closure/mixins-closure.css +4 -2
  150. package/tests-unit/mixins-closure/styles.config.ts +5 -0
  151. package/tests-unit/mixins-guards/legacy/mixins-guards.css +214 -0
  152. package/tests-unit/mixins-guards/mixins-guards.css +21 -5
  153. package/tests-unit/mixins-guards/mixins-guards.less +0 -1
  154. package/tests-unit/mixins-guards/styles.config.ts +5 -0
  155. package/tests-unit/mixins-guards-default-func/legacy/mixins-guards-default-func.css +132 -0
  156. package/tests-unit/mixins-guards-default-func/mixins-guards-default-func.css +0 -2
  157. package/tests-unit/mixins-important/mixins-important.css +33 -19
  158. package/tests-unit/mixins-interpolated/legacy/mixins-interpolated.css +42 -0
  159. package/tests-unit/mixins-interpolated/mixins-interpolated.css +24 -14
  160. package/tests-unit/mixins-interpolated/styles.config.ts +5 -0
  161. package/tests-unit/mixins-nested/legacy/mixins-nested.css +17 -0
  162. package/tests-unit/mixins-nested/mixins-nested.css +16 -12
  163. package/tests-unit/mixins-nested/styles.config.ts +5 -0
  164. package/tests-unit/nesting/legacy/nesting.css +27 -0
  165. package/tests-unit/nesting/nesting-uncollapsed.css +26 -0
  166. package/tests-unit/nesting/nesting.css +1 -1
  167. package/tests-unit/nesting/styles.config.ts +6 -0
  168. package/tests-unit/operations/legacy/operations-advanced.css +36 -0
  169. package/tests-unit/operations/operations-advanced.css +1 -1
  170. package/tests-unit/operations/operations.css +4 -2
  171. package/tests-unit/parse-interpolation/legacy/parse-interpolation.css +39 -0
  172. package/tests-unit/parse-interpolation/parse-interpolation.css +72 -35
  173. package/tests-unit/parse-interpolation/parse-interpolation.less +73 -25
  174. package/tests-unit/parse-interpolation/styles.config.ts +5 -0
  175. package/tests-unit/parser-property-interp/parser-property-interp.css +1 -1
  176. package/tests-unit/parser-property-interp/parser-property-interp.less +2 -2
  177. package/tests-unit/parser-slashed-combinator/parser-slashed-combinator.css +1 -9
  178. package/tests-unit/parser-slashed-combinator/parser-slashed-combinator.less +11 -11
  179. package/tests-unit/plugin/styles.config.ts +11 -0
  180. package/tests-unit/property-accessors/legacy/property-accessors.css +60 -0
  181. package/tests-unit/property-accessors/property-accessors.css +15 -7
  182. package/tests-unit/property-name-interp/legacy/property-name-interp.css +24 -0
  183. package/tests-unit/property-name-interp/property-name-interp.css +1 -1
  184. package/tests-unit/property-name-interp/property-name-interp.less +4 -2
  185. package/tests-unit/property-targeted/legacy/property-targeted.css +7 -0
  186. package/tests-unit/property-targeted/property-targeted.css +1 -1
  187. package/tests-unit/rulesets/legacy/rulesets.css +31 -0
  188. package/tests-unit/rulesets/rulesets.css +30 -30
  189. package/tests-unit/rulesets/styles.config.ts +5 -0
  190. package/tests-unit/scope/legacy/scope.css +41 -0
  191. package/tests-unit/scope/scope.css +1 -1
  192. package/tests-unit/scope/styles.config.cjs +8 -0
  193. package/tests-unit/selectors/selectors.css +13 -41
  194. package/tests-unit/styles.config.cjs +1 -1
  195. package/tests-unit/styles.config.ts +8 -0
  196. package/tests-unit/variables/legacy/variable-advanced.css +58 -0
  197. package/tests-unit/variables/variable-advanced.css +15 -18
  198. package/tests-unit/variables/variable-advanced.less +5 -4
  199. package/tests-unit/variables/variables.css +1 -1
  200. package/tests-unit/variables-in-at-rules/variables-in-at-rules.less +3 -2
  201. package/tests-unit/whitespace/legacy/whitespace.css +45 -0
  202. package/tests-unit/whitespace/whitespace.css +3 -2
  203. package/tests-warnings/parentless-ampersand-nested.less +6 -0
  204. package/tests-warnings/parentless-ampersand-nested.txt +42 -0
  205. package/tests-warnings/parentless-ampersand.less +3 -0
  206. package/tests-warnings/parentless-ampersand.txt +21 -0
  207. package/tests-config/rootpath-escape-interpolation/rootpath-escape-interpolation.css +0 -8
  208. package/tests-config/rootpath-escape-interpolation/rootpath-escape-interpolation.less +0 -24
  209. package/tests-config/rootpath-escape-interpolation/styles.config.cjs +0 -8
  210. package/tests-config/sourcemaps/url-interpolation/styles.config.cjs +0 -9
  211. package/tests-config/sourcemaps/url-interpolation/url-interpolation.css +0 -13
  212. package/tests-config/sourcemaps/url-interpolation/url-interpolation.less +0 -24
  213. package/tests-error/eval/mixin-as-value.less +0 -6
  214. package/tests-error/eval/mixin-as-value.txt +0 -4
  215. package/tests-error/parse/property-interpolation-lookup.less +0 -8
  216. package/tests-error/parse/property-interpolation-lookup.txt +0 -4
  217. package/tests-unit/extend/extend-clearfix.less +0 -19
  218. package/tests-unit/lookup-interpolation/lookup-interpolation.css +0 -60
  219. package/tests-unit/lookup-interpolation/lookup-interpolation.less +0 -127
  220. package/tests-unit/media-nested-type/media-nested-type.css +0 -40
  221. package/tests-unit/media-nested-type/media-nested-type.less +0 -51
  222. /package/tests-unit/{directives-bubbling/directives-bubbling.less → at-rules-bubbling/at-rules-bubbling.less} +0 -0
  223. /package/tests-unit/{ie-filters → ie-filters-REMOVED/legacy}/ie-filters.css +0 -0
  224. /package/tests-unit/{ie-filters → ie-filters-REMOVED/legacy}/ie-filters.less +0 -0
  225. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/javascript.css +0 -0
  226. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/javascript.less +0 -0
  227. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/styles.config.cjs +0 -0
@@ -0,0 +1,84 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .a,
5
+ .b,
6
+ .c {
7
+ color: black;
8
+ }
9
+ .f,
10
+ .e,
11
+ .d {
12
+ color: black;
13
+ }
14
+ .g.h,
15
+ .i.j.h,
16
+ .k.j.h {
17
+ color: black;
18
+ }
19
+ .i.j,
20
+ .k.j {
21
+ color: inherit;
22
+ }
23
+ .l,
24
+ .m,
25
+ .n,
26
+ .o,
27
+ .p,
28
+ .q,
29
+ .r,
30
+ .s,
31
+ .t {
32
+ color: black;
33
+ }
34
+ .u,
35
+ .v.u.v {
36
+ color: black;
37
+ }
38
+ .w,
39
+ .v.w.v {
40
+ color: black;
41
+ }
42
+ .x,
43
+ .y,
44
+ .z {
45
+ color: x;
46
+ }
47
+ .y,
48
+ .z,
49
+ .x {
50
+ color: y;
51
+ }
52
+ .z,
53
+ .x,
54
+ .y {
55
+ color: z;
56
+ }
57
+ .va,
58
+ .vb,
59
+ .vc {
60
+ color: black;
61
+ }
62
+ .vb,
63
+ .vc {
64
+ color: inherit;
65
+ }
66
+ @media (tv) {
67
+ .ma,
68
+ .mb,
69
+ .mc {
70
+ color: black;
71
+ }
72
+ .md,
73
+ .ma,
74
+ .mb,
75
+ .mc {
76
+ color: inherit;
77
+ }
78
+ }
79
+ @media (tv) and (plasma) {
80
+ .me,
81
+ .mf {
82
+ background: red;
83
+ }
84
+ }
@@ -3,9 +3,7 @@
3
3
  .bar {
4
4
  *zoom: 1;
5
5
  }
6
- .clearfix:after,
7
- .foo:after,
8
- .bar:after {
6
+ :is(.clearfix, .foo, .bar):after {
9
7
  content: '';
10
8
  display: block;
11
9
  clear: both;
@@ -17,4 +17,3 @@
17
17
  &:extend(.clearfix all);
18
18
  color: blue;
19
19
  }
20
-
@@ -1,3 +1,6 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
1
4
  .clearfix,
2
5
  .foo,
3
6
  .bar {
@@ -1,37 +1,38 @@
1
- .replace.replace .replace,
2
- .c.replace + .replace .replace,
3
- .replace.replace .c,
4
- .c.replace + .replace .c,
1
+ :is(.replace.replace, .c.replace + .replace) :is(.replace, .c),
5
2
  .rep_ace {
6
3
  prop: copy-paste-replace;
7
4
  }
8
5
  .a .b .c {
9
6
  prop: not_effected;
10
7
  }
11
- .a,
12
- .effected {
8
+ .a {
13
9
  prop: is_effected;
10
+ .b {
11
+ prop: not_effected;
12
+ }
13
+ .b.c {
14
+ prop: not_effected;
15
+ }
14
16
  }
15
- .a .b {
16
- prop: not_effected;
17
- }
18
- .a .b.c {
19
- prop: not_effected;
17
+ .effected {
18
+ prop: is_effected;
20
19
  }
21
- .c .b .a,
22
- .a .b .a,
23
- .c .a .a,
24
- .a .a .a,
25
- .c .b .c,
26
- .a .b .c,
27
- .c .a .c,
28
- .a .a .c {
29
- prop: not_effected;
20
+ .c,
21
+ .a {
22
+ .b,
23
+ .a {
24
+ .a,
25
+ .c {
26
+ prop: not_effected;
27
+ }
28
+ }
29
+ }
30
+ .e.e {
31
+ prop: extend-double;
32
+ &:hover {
33
+ hover: not-extended;
34
+ }
30
35
  }
31
- .e.e,
32
36
  .dbl {
33
37
  prop: extend-double;
34
38
  }
35
- .e.e:hover {
36
- hover: not-extended;
37
- }
@@ -0,0 +1,40 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .replace.replace .replace,
5
+ .c.replace + .replace .replace,
6
+ .replace.replace .c,
7
+ .c.replace + .replace .c,
8
+ .rep_ace {
9
+ prop: copy-paste-replace;
10
+ }
11
+ .a .b .c {
12
+ prop: not_effected;
13
+ }
14
+ .a,
15
+ .effected {
16
+ prop: is_effected;
17
+ }
18
+ .a .b {
19
+ prop: not_effected;
20
+ }
21
+ .a .b.c {
22
+ prop: not_effected;
23
+ }
24
+ .c .b .a,
25
+ .a .b .a,
26
+ .c .a .a,
27
+ .a .a .a,
28
+ .c .b .c,
29
+ .a .b .c,
30
+ .c .a .c,
31
+ .a .a .c {
32
+ prop: not_effected;
33
+ }
34
+ .e.e,
35
+ .dbl {
36
+ prop: extend-double;
37
+ }
38
+ .e.e:hover {
39
+ hover: not-extended;
40
+ }
@@ -0,0 +1,5 @@
1
+ export default {
2
+ output: [
3
+ { file: '{name}.css', collapseNesting: false }
4
+ ]
5
+ }
@@ -1,24 +1,19 @@
1
- .ext1 .ext2,
2
- .all .ext2 {
1
+ :is(.ext1, .all) .ext2 {
3
2
  background: black;
4
3
  }
5
4
  @media (tv) {
6
- .ext1 .ext3,
7
- .tv-lowres .ext3,
8
- .all .ext3 {
5
+ :is(.ext1, .tv-lowres, .all) .ext3 {
9
6
  color: inherit;
10
7
  }
11
8
  .tv-lowres {
12
9
  background: blue;
13
10
  }
14
- }
15
- @media (tv) and (hires) {
16
- .ext1 .ext4,
17
- .tv-hires .ext4,
18
- .all .ext4 {
19
- color: green;
20
- }
21
- .tv-hires {
22
- background: red;
11
+ @media (hires) {
12
+ :is(.ext1, .tv-lowres, .tv-hires, .all) .ext4 {
13
+ color: green;
14
+ }
15
+ .tv-hires {
16
+ background: red;
17
+ }
23
18
  }
24
19
  }
@@ -0,0 +1,27 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .ext1 .ext2,
5
+ .all .ext2 {
6
+ background: black;
7
+ }
8
+ @media (tv) {
9
+ .ext1 .ext3,
10
+ .tv-lowres .ext3,
11
+ .all .ext3 {
12
+ color: inherit;
13
+ }
14
+ .tv-lowres {
15
+ background: blue;
16
+ }
17
+ }
18
+ @media (tv) and (hires) {
19
+ .ext1 .ext4,
20
+ .tv-hires .ext4,
21
+ .all .ext4 {
22
+ color: green;
23
+ }
24
+ .tv-hires {
25
+ background: red;
26
+ }
27
+ }
@@ -0,0 +1,5 @@
1
+ export default {
2
+ output: [
3
+ { file: '{name}.css', collapseNesting: false }
4
+ ]
5
+ }
@@ -5,10 +5,7 @@
5
5
  width: 300px;
6
6
  background: red;
7
7
  }
8
- .sidebar .box,
9
- .sidebar2 .box,
10
- .type1 .sidebar3 .box,
11
- .type2.sidebar4 .box {
8
+ :is(.sidebar, .sidebar2, .type1 .sidebar3, .type2.sidebar4) .box {
12
9
  background: #FFF;
13
10
  border: 1px solid #000;
14
11
  margin: 10px 0;
@@ -26,8 +23,7 @@
26
23
  .submit {
27
24
  color: black;
28
25
  }
29
- .button:hover,
30
- .submit:hover {
26
+ :is(.button, .submit):hover {
31
27
  color: inherit;
32
28
  }
33
29
  .button2 :hover {
@@ -37,21 +33,6 @@
37
33
  notnested: black;
38
34
  }
39
35
  .amp-test-h,
40
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
41
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
42
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
43
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
44
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
45
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
46
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
47
- .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
48
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
49
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
50
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
51
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
52
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
53
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
54
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
55
- .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g {
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 {
56
37
  test: extended by masses of selectors;
57
38
  }
@@ -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
+ .sidebar,
5
+ .sidebar2,
6
+ .type1 .sidebar3,
7
+ .type2.sidebar4 {
8
+ width: 300px;
9
+ background: red;
10
+ }
11
+ .sidebar .box,
12
+ .sidebar2 .box,
13
+ .type1 .sidebar3 .box,
14
+ .type2.sidebar4 .box {
15
+ background: #FFF;
16
+ border: 1px solid #000;
17
+ margin: 10px 0;
18
+ }
19
+ .sidebar2 {
20
+ background: blue;
21
+ }
22
+ .type1 .sidebar3 {
23
+ background: green;
24
+ }
25
+ .type2.sidebar4 {
26
+ background: red;
27
+ }
28
+ .button,
29
+ .submit {
30
+ color: black;
31
+ }
32
+ .button:hover,
33
+ .submit:hover {
34
+ color: inherit;
35
+ }
36
+ .button2 :hover {
37
+ nested: white;
38
+ }
39
+ .button2 :hover {
40
+ notnested: black;
41
+ }
42
+ .amp-test-h,
43
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
44
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
45
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
46
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
47
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
48
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
49
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
50
+ .amp-test-f.amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
51
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
52
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
53
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
54
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
55
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
56
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-a.amp-test-d.amp-test-b.amp-test-e.amp-test-g,
57
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-a.amp-test-e.amp-test-g,
58
+ .amp-test-f.amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e + .amp-test-c .amp-test-b.amp-test-d.amp-test-b.amp-test-e.amp-test-g {
59
+ test: extended by masses of selectors;
60
+ }
@@ -1,87 +1,62 @@
1
- .error,
2
- .badError {
3
- border: 1px #f00;
4
- background: #fdd;
5
- }
6
- .error.intrusion,
7
- .badError.intrusion {
8
- font-size: 1.3em;
9
- font-weight: bold;
10
- }
11
- .intrusion .error,
12
- .intrusion .badError {
13
- display: none;
14
- }
15
- .badError {
16
- border-width: 3px;
17
- }
18
- .foo .bar,
19
- .foo .baz,
20
- .ext1 .ext2 .bar,
21
- .ext1 .ext2 .baz,
22
- .ext3 .bar,
23
- .ext3 .baz,
24
- .ext4 .bar,
25
- .ext4 .baz {
1
+ :is(.foo, .ext1 .ext2, .ext3, .ext4) .bar,
2
+ :is(.foo, .ext1 .ext2, .ext3, .ext4) .baz {
26
3
  display: none;
27
4
  }
28
- div.ext5,
29
- .ext6 > .ext5,
30
- div.ext7,
31
- .ext6 > .ext7 {
5
+ div:is(.ext5, .ext7),
6
+ .ext6 > :is(.ext5, .ext7) {
32
7
  width: 100px;
33
8
  }
34
9
  .ext,
35
- .a .c,
36
- .b .c {
10
+ :is(.a, .b) .c {
37
11
  test: 1;
38
12
  }
39
13
  .a,
40
14
  .b {
41
15
  test: 2;
42
- }
43
- .a .c,
44
- .b .c {
45
- test: 3;
46
- }
47
- .a .c .d,
48
- .b .c .d {
49
- test: 4;
50
- }
51
- .replace.replace .replace,
52
- .c.replace + .replace .replace,
53
- .replace.replace .c,
54
- .c.replace + .replace .c,
55
- .rep_ace.rep_ace .rep_ace,
56
- .c.rep_ace + .rep_ace .rep_ace,
57
- .rep_ace.rep_ace .c,
58
- .c.rep_ace + .rep_ace .c {
59
- prop: copy-paste-replace;
60
- }
61
- .attributes [data="test"],
62
- .attributes .attributes .attribute-test {
63
- extend: attributes;
64
- }
65
- .attributes [data],
66
- .attributes .attributes .attribute-test2 {
67
- extend: attributes2;
68
- }
69
- .attributes [data="test3"],
70
- .attributes .attributes .attribute-test {
71
- extend: attributes2;
16
+ .c {
17
+ test: 3;
18
+ .d {
19
+ test: 4;
20
+ }
21
+ }
22
+ }
23
+ :is(.replace, .rep_ace):is(.replace, .rep_ace),
24
+ .c:is(.replace, .rep_ace) + :is(.replace, .rep_ace) {
25
+ .replace,
26
+ .c,
27
+ .rep_ace {
28
+ prop: copy-paste-replace;
29
+ }
30
+ }
31
+ .attributes {
32
+ [data="test"],
33
+ .attribute-test {
34
+ extend: attributes;
35
+ }
36
+ [data],
37
+ .attribute-test2 {
38
+ extend: attributes2;
39
+ }
40
+ [data="test3"],
41
+ .attribute-test {
42
+ extend: attributes2;
43
+ }
72
44
  }
73
45
  .header .header-nav,
74
46
  .footer .footer-nav {
75
47
  background: red;
76
- }
77
- .header .header-nav:before,
78
- .footer .footer-nav:before {
79
- background: blue;
48
+ &:before {
49
+ background: blue;
50
+ }
80
51
  }
81
52
  .issue-2586-bordered,
82
53
  .issue-2586-somepage .content {
83
54
  border: solid 1px black;
84
55
  }
85
- .issue-2586-somepage .content > span {
86
- margin-bottom: 10px;
56
+ .issue-2586-somepage {
57
+ .content {
58
+ & > span {
59
+ margin-bottom: 10px;
60
+ }
61
+ }
87
62
  }
@@ -1,18 +1,3 @@
1
- .error {
2
- border: 1px #f00;
3
- background: #fdd;
4
- }
5
- .error.intrusion {
6
- font-size: 1.3em;
7
- font-weight: bold;
8
- }
9
- .intrusion .error {
10
- display: none;
11
- }
12
- .badError:extend(.error all) {
13
- border-width: 3px;
14
- }
15
-
16
1
  .foo .bar, .foo .baz {
17
2
  display: none;
18
3
  }
@@ -0,0 +1,73 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .foo .bar,
5
+ .foo .baz,
6
+ .ext1 .ext2 .bar,
7
+ .ext1 .ext2 .baz,
8
+ .ext3 .bar,
9
+ .ext3 .baz,
10
+ .ext4 .bar,
11
+ .ext4 .baz {
12
+ display: none;
13
+ }
14
+ div.ext5,
15
+ .ext6 > .ext5,
16
+ div.ext7,
17
+ .ext6 > .ext7 {
18
+ width: 100px;
19
+ }
20
+ .ext,
21
+ .a .c,
22
+ .b .c {
23
+ test: 1;
24
+ }
25
+ .a,
26
+ .b {
27
+ test: 2;
28
+ }
29
+ .a .c,
30
+ .b .c {
31
+ test: 3;
32
+ }
33
+ .a .c .d,
34
+ .b .c .d {
35
+ test: 4;
36
+ }
37
+ .replace.replace .replace,
38
+ .c.replace + .replace .replace,
39
+ .replace.replace .c,
40
+ .c.replace + .replace .c,
41
+ .rep_ace.rep_ace .rep_ace,
42
+ .c.rep_ace + .rep_ace .rep_ace,
43
+ .rep_ace.rep_ace .c,
44
+ .c.rep_ace + .rep_ace .c {
45
+ prop: copy-paste-replace;
46
+ }
47
+ .attributes [data="test"],
48
+ .attributes .attributes .attribute-test {
49
+ extend: attributes;
50
+ }
51
+ .attributes [data],
52
+ .attributes .attributes .attribute-test2 {
53
+ extend: attributes2;
54
+ }
55
+ .attributes [data="test3"],
56
+ .attributes .attributes .attribute-test {
57
+ extend: attributes2;
58
+ }
59
+ .header .header-nav,
60
+ .footer .footer-nav {
61
+ background: red;
62
+ }
63
+ .header .header-nav:before,
64
+ .footer .footer-nav:before {
65
+ background: blue;
66
+ }
67
+ .issue-2586-bordered,
68
+ .issue-2586-somepage .content {
69
+ border: solid 1px black;
70
+ }
71
+ .issue-2586-somepage .content > span {
72
+ margin-bottom: 10px;
73
+ }
@@ -0,0 +1,5 @@
1
+ export default {
2
+ output: {
3
+ collapseNesting: false
4
+ }
5
+ }
@@ -15,7 +15,8 @@
15
15
  number-value: 12345678;
16
16
  color-value: blue;
17
17
  rgba-value: rgba(80, 160, 240, 0.67);
18
- --empty-value: ;
18
+ --empty-value: extract(~'', 1);
19
+ empty-value: ;
19
20
  name-length: 1;
20
21
  string-length: 1;
21
22
  number-length: 1;
@@ -28,12 +29,12 @@
28
29
  extract: c | b | a;
29
30
  }
30
31
  .mixin-arguments-2 {
31
- length: 4;
32
- extract: c | b | a;
32
+ length: 1;
33
+ extract: extract(a b c d, 3) | extract(a b c d, 2) | a b c d;
33
34
  }
34
35
  .mixin-arguments-3 {
35
- length: 4;
36
- extract: c | b | a;
36
+ length: 1;
37
+ extract: extract(a b c d, 3) | extract(a b c d, 2) | a b c d;
37
38
  }
38
39
  .mixin-arguments-4 {
39
40
  length: 0;
@@ -37,7 +37,12 @@
37
37
  number-value: extract(12345678, 1);
38
38
  color-value: extract(blue, 1);
39
39
  rgba-value: extract(rgba(80, 160, 240, 0.67), 1);
40
+ // Custom properties are preserved as authored unless interpolation is used.
41
+ // Less v5 guidance for evaluation:
42
+ // @tmp: extract(~'', 1);
43
+ // --empty-value: @{tmp};
40
44
  --empty-value: extract(~'', 1);
45
+ empty-value: extract(~'', 1);
41
46
 
42
47
  name-length: length(name);
43
48
  string-length: length("string");
@@ -122,9 +127,9 @@
122
127
  .md-3D {
123
128
  @a: a b c d, 1 2 3 4;
124
129
  @b: 5 6 7 8, e f g h;
125
- .3D(@a, @b);
130
+ .three-D(@a, @b);
126
131
 
127
- .3D(...) {
132
+ .three-D(...) {
128
133
 
129
134
  @v1: @arguments;
130
135
  length-1: length(@v1);