@less/test-data 4.9.0 → 5.0.0-alpha.2

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 (211) 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/js-type-errors/js-type-error-2.txt +4 -0
  13. package/tests-config/js-type-errors/js-type-error.txt +1 -1
  14. package/tests-config/namespacing/legacy/namespacing-7.css +15 -0
  15. package/tests-config/namespacing/namespacing-5.less +3 -3
  16. package/tests-config/namespacing/namespacing-7.css +16 -8
  17. package/tests-config/namespacing/styles.config.cjs +4 -1
  18. package/tests-config/sourcemaps/styles.config.cjs +1 -1
  19. package/tests-config/sourcemaps-variable-selector/styles.config.cjs +1 -1
  20. package/tests-config/strict-imports/legacy/strict-imports.css +14 -0
  21. package/tests-config/strict-imports/strict-imports.css +4 -2
  22. package/tests-config/strict-imports/styles.config.cjs +6 -5
  23. package/tests-config/units/no-strict/legacy/no-strict.css +24 -0
  24. package/tests-config/units/no-strict/no-strict.css +3 -3
  25. package/tests-config/url-args/legacy/urls.css +58 -0
  26. package/tests-config/url-args/urls.css +2 -1
  27. package/tests-error/eval/ampersand-merge-template-invalid.less +7 -0
  28. package/tests-error/eval/ampersand-merge-template-invalid.txt +1 -0
  29. package/tests-error/eval/at-rules-undefined-var.less +1 -1
  30. package/tests-error/eval/property-undefined.txt +1 -0
  31. package/tests-error/eval/recursive-property.txt +1 -0
  32. package/tests-unit/at-rule-variable-deprecated/at-rule-variable-deprecated.css +0 -38
  33. package/tests-unit/at-rule-variable-deprecated/at-rule-variable-deprecated.less +0 -70
  34. package/tests-unit/at-rule-variable-interpolation/at-rule-variable-interpolation.css +45 -0
  35. package/tests-unit/at-rule-variable-interpolation/at-rule-variable-interpolation.less +72 -0
  36. package/tests-unit/at-rules/at-rules.css +8 -6
  37. package/tests-unit/at-rules/legacy/at-rules.css +110 -0
  38. package/tests-unit/at-rules/styles.config.ts +5 -0
  39. package/tests-unit/at-rules-bubbling/at-rules-bubbling.css +121 -0
  40. package/tests-unit/at-rules-bubbling/legacy/at-rules-bubbling.css +122 -0
  41. package/tests-unit/at-rules-keyword-comments/at-rules-keyword-comments.css +2 -5
  42. package/tests-unit/at-rules-keyword-comments/legacy/at-rules-keyword-comments.css +12 -0
  43. package/tests-unit/at-rules-targeted/at-rules-targeted.css +5 -3
  44. package/tests-unit/at-rules-targeted/legacy/at-rules-targeted.css +55 -0
  45. package/tests-unit/calc/calc.css +8 -8
  46. package/tests-unit/calc/calc.less +1 -0
  47. package/tests-unit/calc/legacy/calc.css +32 -0
  48. package/tests-unit/color-functions/basic.css +1 -1
  49. package/tests-unit/color-functions/comprehensive.css +5 -5
  50. package/tests-unit/color-functions/comprehensive.less +1 -0
  51. package/tests-unit/color-functions/formats.css +0 -12
  52. package/tests-unit/color-functions/formats.less +0 -15
  53. package/tests-unit/color-functions/legacy/basic.css +21 -0
  54. package/tests-unit/color-functions/legacy/comprehensive.css +48 -0
  55. package/tests-unit/color-functions/legacy/modern-syntax.css +9 -0
  56. package/tests-unit/color-functions/legacy/operations.css +18 -0
  57. package/tests-unit/color-functions/legacy/rgba.css +20 -0
  58. package/tests-unit/color-functions/modern-syntax.css +4 -4
  59. package/tests-unit/color-functions/modern-syntax.less +1 -0
  60. package/tests-unit/color-functions/operations.less +1 -0
  61. package/tests-unit/color-functions/rgba.css +3 -3
  62. package/tests-unit/color-functions/rgba.less +3 -1
  63. package/tests-unit/comments/comments.css +5 -6
  64. package/tests-unit/comments/comments.less +2 -1
  65. package/tests-unit/comments/comments2.css +4 -6
  66. package/tests-unit/comments/comments2.less +3 -0
  67. package/tests-unit/comments/legacy/comments.css +86 -0
  68. package/tests-unit/comments/legacy/comments2.css +21 -0
  69. package/tests-unit/container/container.css +40 -83
  70. package/tests-unit/container/container.less +28 -82
  71. package/tests-unit/container/legacy/container.css +273 -0
  72. package/tests-unit/container/styles.config.ts +8 -0
  73. package/tests-unit/css-3/css-3.css +4 -4
  74. package/tests-unit/css-3/legacy/css-3.css +147 -0
  75. package/tests-unit/css-escapes/css-escapes.css +4 -4
  76. package/tests-unit/css-escapes/legacy/css-escapes.css +34 -0
  77. package/tests-unit/css-escapes/styles.config.ts +5 -0
  78. package/tests-unit/css-grid/css-grid.css +4 -1
  79. package/tests-unit/css-grid/legacy/css-grid.css +27 -0
  80. package/tests-unit/css-guards/css-guards.less +2 -1
  81. package/tests-unit/detached-rulesets/detached-rulesets.css +26 -18
  82. package/tests-unit/detached-rulesets/legacy/detached-rulesets.css +79 -0
  83. package/tests-unit/directives-bubbling/directives-bubbling.css +16 -14
  84. package/tests-unit/extend/extend.css +22 -28
  85. package/tests-unit/extend/legacy/extend.css +79 -0
  86. package/tests-unit/extend/styles.config.ts +5 -0
  87. package/tests-unit/extend-chaining/extend-chaining.css +7 -10
  88. package/tests-unit/extend-chaining/legacy/extend-chaining.css +84 -0
  89. package/tests-unit/extend-clearfix/extend-clearfix.css +1 -3
  90. package/tests-unit/extend-clearfix/extend-clearfix.less +0 -1
  91. package/tests-unit/{extend → extend-clearfix/legacy}/extend-clearfix.css +3 -0
  92. package/tests-unit/extend-exact/extend-exact.css +25 -24
  93. package/tests-unit/extend-exact/legacy/extend-exact.css +40 -0
  94. package/tests-unit/extend-exact/styles.config.ts +5 -0
  95. package/tests-unit/extend-media/extend-media.css +9 -14
  96. package/tests-unit/extend-media/legacy/extend-media.css +27 -0
  97. package/tests-unit/extend-media/styles.config.ts +5 -0
  98. package/tests-unit/extend-nest/extend-nest.css +3 -22
  99. package/tests-unit/extend-nest/legacy/extend-nest.css +60 -0
  100. package/tests-unit/extend-selector/extend-selector.css +42 -67
  101. package/tests-unit/extend-selector/extend-selector.less +0 -15
  102. package/tests-unit/extend-selector/legacy/extend-selector.css +73 -0
  103. package/tests-unit/extend-selector/styles.config.ts +5 -0
  104. package/tests-unit/extract-and-length/extract-and-length.css +6 -5
  105. package/tests-unit/extract-and-length/extract-and-length.less +7 -2
  106. package/tests-unit/extract-and-length/legacy/extract-and-length.css +137 -0
  107. package/tests-unit/functions/functions.css +5 -16
  108. package/tests-unit/functions/functions.less +8 -21
  109. package/tests-unit/functions/legacy/functions.css +244 -0
  110. package/tests-unit/functions/legacy/functions.less +296 -0
  111. package/tests-unit/functions-each/functions-each.css +4 -2
  112. package/tests-unit/import/import-reference-issues.css +6 -6
  113. package/tests-unit/import/import-reference.css +4 -2
  114. package/tests-unit/import/legacy/import-reference-issues.css +27 -0
  115. package/tests-unit/import/legacy/import-reference.css +101 -0
  116. package/tests-unit/import/styles.config.cjs +5 -4
  117. package/tests-unit/layer/layer.css +30 -28
  118. package/tests-unit/layer/legacy/layer.css +136 -0
  119. package/tests-unit/layer/styles.config.ts +5 -0
  120. package/tests-unit/math-css-vars/math-css-vars.css +1 -0
  121. package/tests-unit/math-css-vars/math-css-vars.less +1 -0
  122. package/tests-unit/media/legacy/media.css +274 -0
  123. package/tests-unit/media/media.css +49 -43
  124. package/tests-unit/media/media.less +0 -2
  125. package/tests-unit/media/styles.config.cjs +5 -0
  126. package/tests-unit/merge/merge.css +2 -2
  127. package/tests-unit/mixin-noparens/legacy/mixin-noparens.css +10 -0
  128. package/tests-unit/mixin-noparens/mixin-noparens.css +4 -2
  129. package/tests-unit/mixin-noparens/styles.config.ts +5 -0
  130. package/tests-unit/mixins/legacy/maps.css +9 -0
  131. package/tests-unit/mixins/legacy/mixins.css +147 -0
  132. package/tests-unit/mixins/maps.css +7 -5
  133. package/tests-unit/mixins/mixins.css +7 -5
  134. package/tests-unit/mixins/styles.config.ts +5 -0
  135. package/tests-unit/mixins-closure/legacy/mixins-closure.css +12 -0
  136. package/tests-unit/mixins-closure/mixins-closure.css +4 -2
  137. package/tests-unit/mixins-closure/styles.config.ts +5 -0
  138. package/tests-unit/mixins-guards/legacy/mixins-guards.css +214 -0
  139. package/tests-unit/mixins-guards/mixins-guards.css +21 -5
  140. package/tests-unit/mixins-guards/mixins-guards.less +0 -1
  141. package/tests-unit/mixins-guards/styles.config.ts +5 -0
  142. package/tests-unit/mixins-guards-default-func/legacy/mixins-guards-default-func.css +132 -0
  143. package/tests-unit/mixins-guards-default-func/mixins-guards-default-func.css +0 -2
  144. package/tests-unit/mixins-important/mixins-important.css +33 -19
  145. package/tests-unit/mixins-interpolated/legacy/mixins-interpolated.css +42 -0
  146. package/tests-unit/mixins-interpolated/mixins-interpolated.css +24 -14
  147. package/tests-unit/mixins-interpolated/styles.config.ts +5 -0
  148. package/tests-unit/mixins-nested/legacy/mixins-nested.css +17 -0
  149. package/tests-unit/mixins-nested/mixins-nested.css +16 -12
  150. package/tests-unit/mixins-nested/styles.config.ts +5 -0
  151. package/tests-unit/nesting/legacy/nesting.css +27 -0
  152. package/tests-unit/nesting/nesting-uncollapsed.css +26 -0
  153. package/tests-unit/nesting/nesting.css +1 -1
  154. package/tests-unit/nesting/styles.config.ts +6 -0
  155. package/tests-unit/operations/legacy/operations-advanced.css +36 -0
  156. package/tests-unit/operations/operations-advanced.css +1 -1
  157. package/tests-unit/operations/operations.css +4 -2
  158. package/tests-unit/parse-interpolation/legacy/parse-interpolation.css +39 -0
  159. package/tests-unit/parse-interpolation/parse-interpolation.css +72 -35
  160. package/tests-unit/parse-interpolation/parse-interpolation.less +73 -25
  161. package/tests-unit/parse-interpolation/styles.config.ts +5 -0
  162. package/tests-unit/parser-property-interp/parser-property-interp.css +1 -1
  163. package/tests-unit/parser-property-interp/parser-property-interp.less +2 -2
  164. package/tests-unit/parser-slashed-combinator/parser-slashed-combinator.css +1 -9
  165. package/tests-unit/parser-slashed-combinator/parser-slashed-combinator.less +11 -11
  166. package/tests-unit/plugin/styles.config.ts +11 -0
  167. package/tests-unit/property-accessors/legacy/property-accessors.css +60 -0
  168. package/tests-unit/property-accessors/property-accessors.css +15 -7
  169. package/tests-unit/property-name-interp/legacy/property-name-interp.css +24 -0
  170. package/tests-unit/property-name-interp/property-name-interp.css +1 -1
  171. package/tests-unit/property-name-interp/property-name-interp.less +4 -2
  172. package/tests-unit/property-targeted/legacy/property-targeted.css +7 -0
  173. package/tests-unit/property-targeted/property-targeted.css +1 -1
  174. package/tests-unit/rulesets/legacy/rulesets.css +31 -0
  175. package/tests-unit/rulesets/rulesets.css +30 -30
  176. package/tests-unit/rulesets/styles.config.ts +5 -0
  177. package/tests-unit/scope/legacy/scope.css +41 -0
  178. package/tests-unit/scope/scope.css +1 -1
  179. package/tests-unit/selectors/selectors.css +13 -41
  180. package/tests-unit/styles.config.cjs +1 -1
  181. package/tests-unit/styles.config.ts +8 -0
  182. package/tests-unit/variables/legacy/variable-advanced.css +58 -0
  183. package/tests-unit/variables/variable-advanced.css +9 -12
  184. package/tests-unit/variables/variable-advanced.less +5 -4
  185. package/tests-unit/variables/variables.css +1 -1
  186. package/tests-unit/variables-in-at-rules/variables-in-at-rules.less +3 -2
  187. package/tests-unit/whitespace/legacy/whitespace.css +45 -0
  188. package/tests-unit/whitespace/whitespace.css +3 -2
  189. package/tests-warnings/parentless-ampersand-nested.less +6 -0
  190. package/tests-warnings/parentless-ampersand-nested.txt +42 -0
  191. package/tests-warnings/parentless-ampersand.less +3 -0
  192. package/tests-warnings/parentless-ampersand.txt +21 -0
  193. package/tests-config/rootpath-escape-interpolation/rootpath-escape-interpolation.css +0 -8
  194. package/tests-config/rootpath-escape-interpolation/rootpath-escape-interpolation.less +0 -24
  195. package/tests-config/rootpath-escape-interpolation/styles.config.cjs +0 -8
  196. package/tests-config/sourcemaps/url-interpolation/styles.config.cjs +0 -9
  197. package/tests-config/sourcemaps/url-interpolation/url-interpolation.css +0 -13
  198. package/tests-config/sourcemaps/url-interpolation/url-interpolation.less +0 -24
  199. package/tests-error/parse/property-interpolation-lookup.less +0 -8
  200. package/tests-error/parse/property-interpolation-lookup.txt +0 -4
  201. package/tests-unit/extend/extend-clearfix.less +0 -19
  202. package/tests-unit/lookup-interpolation/lookup-interpolation.css +0 -60
  203. package/tests-unit/lookup-interpolation/lookup-interpolation.less +0 -127
  204. package/tests-unit/media-nested-type/media-nested-type.css +0 -40
  205. package/tests-unit/media-nested-type/media-nested-type.less +0 -51
  206. /package/tests-unit/{directives-bubbling/directives-bubbling.less → at-rules-bubbling/at-rules-bubbling.less} +0 -0
  207. /package/tests-unit/{ie-filters → ie-filters-REMOVED/legacy}/ie-filters.css +0 -0
  208. /package/tests-unit/{ie-filters → ie-filters-REMOVED/legacy}/ie-filters.less +0 -0
  209. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/javascript.css +0 -0
  210. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/javascript.less +0 -0
  211. /package/tests-unit/{javascript → javascript-REMOVED/legacy}/styles.config.cjs +0 -0
@@ -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);
@@ -0,0 +1,137 @@
1
+ /* Less 4.x output, recorded when this fixture graduated to v5.
2
+ Historical record only — no test reads this file. */
3
+
4
+ .multiunit {
5
+ length: 6;
6
+ extract: abc "abc" 1 1px 1% #123;
7
+ }
8
+ .incorrect-index {
9
+ v1: extract(a b c, 5);
10
+ v2: extract(a, b, c, -2);
11
+ }
12
+ .scalar {
13
+ var-value: variable;
14
+ var-length: 1;
15
+ ill-index: extract(variable, 2);
16
+ name-value: name;
17
+ string-value: "string";
18
+ number-value: 12345678;
19
+ color-value: blue;
20
+ rgba-value: rgba(80, 160, 240, 0.67);
21
+ --empty-value: extract(~'', 1);
22
+ empty-value: ;
23
+ name-length: 1;
24
+ string-length: 1;
25
+ number-length: 1;
26
+ color-length: 1;
27
+ rgba-length: 1;
28
+ empty-length: 1;
29
+ }
30
+ .mixin-arguments-1 {
31
+ length: 4;
32
+ extract: c | b | a;
33
+ }
34
+ .mixin-arguments-2 {
35
+ length: 4;
36
+ extract: c | b | a;
37
+ }
38
+ .mixin-arguments-3 {
39
+ length: 4;
40
+ extract: c | b | a;
41
+ }
42
+ .mixin-arguments-4 {
43
+ length: 0;
44
+ extract: extract(, 2) | extract(, 1);
45
+ }
46
+ .mixin-arguments-2 {
47
+ length: 4;
48
+ extract: c | b | a;
49
+ }
50
+ .mixin-arguments-3 {
51
+ length: 4;
52
+ extract: c | b | a;
53
+ }
54
+ .mixin-arguments-4 {
55
+ length: 3;
56
+ extract: c | b;
57
+ }
58
+ .mixin-arguments-2 {
59
+ length: 4;
60
+ extract: 3 | 2 | 1;
61
+ }
62
+ .mixin-arguments-3 {
63
+ length: 4;
64
+ extract: 3 | 2 | 1;
65
+ }
66
+ .mixin-arguments-4 {
67
+ length: 3;
68
+ extract: 3 | 2;
69
+ }
70
+ .md-space-comma {
71
+ length-1: 3;
72
+ extract-1: 1 2 3;
73
+ length-2: 3;
74
+ extract-2: 2;
75
+ }
76
+ .md-space-comma-as-args-2 {
77
+ length: 3;
78
+ extract: "x" "y" "z" | 1 2 3 | a b c;
79
+ }
80
+ .md-space-comma-as-args-3 {
81
+ length: 3;
82
+ extract: "x" "y" "z" | 1 2 3 | a b c;
83
+ }
84
+ .md-space-comma-as-args-4 {
85
+ length: 2;
86
+ extract: "x" "y" "z" | 1 2 3;
87
+ }
88
+ .md-cat-space-comma {
89
+ length-1: 3;
90
+ extract-1: 1 2 3;
91
+ length-2: 3;
92
+ extract-2: 2;
93
+ }
94
+ .md-cat-space-comma-as-args-2 {
95
+ length: 3;
96
+ extract: "x" "y" "z" | 1 2 3 | a b c;
97
+ }
98
+ .md-cat-space-comma-as-args-3 {
99
+ length: 3;
100
+ extract: "x" "y" "z" | 1 2 3 | a b c;
101
+ }
102
+ .md-cat-space-comma-as-args-4 {
103
+ length: 2;
104
+ extract: "x" "y" "z" | 1 2 3;
105
+ }
106
+ .md-cat-comma-space {
107
+ length-1: 3;
108
+ extract-1: 1, 2, 3;
109
+ length-2: 3;
110
+ extract-2: 2;
111
+ }
112
+ .md-cat-comma-space-as-args-1 {
113
+ length: 3;
114
+ extract: "x", "y", "z" | 1, 2, 3 | a, b, c;
115
+ }
116
+ .md-cat-comma-space-as-args-2 {
117
+ length: 3;
118
+ extract: "x", "y", "z" | 1, 2, 3 | a, b, c;
119
+ }
120
+ .md-cat-comma-space-as-args-3 {
121
+ length: 3;
122
+ extract: "x", "y", "z" | 1, 2, 3 | a, b, c;
123
+ }
124
+ .md-cat-comma-space-as-args-4 {
125
+ length: 0;
126
+ extract: extract(, 2) | extract(, 1);
127
+ }
128
+ .md-3D {
129
+ length-1: 2;
130
+ extract-1: a b c d, 1 2 3 4;
131
+ length-2: 2;
132
+ extract-2: 5 6 7 8;
133
+ length-3: 4;
134
+ extract-3: 7;
135
+ length-4: 1;
136
+ extract-4: 8;
137
+ }
@@ -1,15 +1,5 @@
1
- #functions {
2
- color: #660000;
3
- width: 16;
4
- height: undefined("self");
5
- border-width: 5;
6
- variable: 11;
7
- background: linear-gradient(#000, #fff);
8
- }
9
1
  #built-in {
10
2
  escaped: -Some::weird(#thing, y);
11
- escaped-direct: a%20b%28c%29%3Dd%3Ae%23f%3Bg;
12
- escaped-svg-literal: url("data:image/svg+xml,%3Csvg%20fill%3D%22red%22%3E%3C/svg%3E");
13
3
  lighten: #ffcccc;
14
4
  lighten-relative: #ff6666;
15
5
  darken: #330000;
@@ -19,7 +9,7 @@
19
9
  desaturate: #29332f;
20
10
  desaturate-relative: #233930;
21
11
  greyscale: #2e2e2e;
22
- hsl-clamp: hsl(0, 0%, 100%);
12
+ hsl-clamp: hsl(380, 150%, 150%);
23
13
  spin-p: hsl(20, 50%, 50%);
24
14
  spin-n: hsl(350, 50%, 50%);
25
15
  luma-white: 100%;
@@ -112,13 +102,13 @@
112
102
  min: 1pt;
113
103
  min: 3mm;
114
104
  min: min(1, 4ex, 2pt);
115
- min: min(calc(1 + 1), 1);
105
+ min: min(calc(1em + 1vw), 1);
116
106
  min: min(var(--width), 802px);
117
107
  max: 3;
118
108
  max: 5em;
119
109
  max: max(5m, 3em);
120
110
  max: min(var(--body-max-width), calc(100vw - 20px));
121
- max: max(1, calc(1 + 1));
111
+ max: max(1, calc(1em + 1vw));
122
112
  max-native: max(10vw, 100px);
123
113
  percentage: 20%;
124
114
  color-quoted-digit: #dda0dd;
@@ -228,13 +218,12 @@ html {
228
218
  c: false;
229
219
  d: true;
230
220
  e: false;
231
- f: true;
232
221
  }
233
222
  #if {
234
223
  a: 1;
235
224
  b: 2;
236
225
  c: 3;
237
- --e: ;
226
+ e: ;
238
227
  f: 6;
239
228
  g: 3;
240
229
  h: 5;
@@ -250,7 +239,7 @@ html {
250
239
  }
251
240
  .paren-escapes {
252
241
  list-1: 1, 2, 3;
253
- length-1: 3;
242
+ length-1: 1;
254
243
  item-1: 4;
255
244
  item-2: 5;
256
245
  item-3: 6;
@@ -1,20 +1,6 @@
1
- #functions {
2
- @var: 10;
3
- @colors: #000, #fff;
4
- color: _color("evil red"); // #660000
5
- width: increment(15);
6
- height: undefined("self");
7
- border-width: add(2, 3);
8
- variable: increment(@var);
9
- background: linear-gradient(@colors);
10
- }
11
-
12
1
  #built-in {
13
2
  @r: 32;
14
- @escaped-svg-literal: escape('<svg fill="red"></svg>');
15
3
  escaped: e("-Some::weird(#thing, y)");
16
- escaped-direct: escape('a b(c)=d:e#f;g');
17
- escaped-svg-literal: url("data:image/svg+xml,@{escaped-svg-literal}");
18
4
  lighten: lighten(#ff0000, 40%);
19
5
  lighten-relative: lighten(#ff0000, 40%, relative);
20
6
  darken: darken(#ff0000, 40%);
@@ -120,17 +106,17 @@
120
106
  min: min(1pt, 3pt);
121
107
  min: min(1cm, 3mm);
122
108
  min: min(6em, 5, 4ex, 3, 2pt, 1);
123
- min: min(calc(1 + 1), 1);
109
+ min: min(calc(1em + 1vw), 1);
124
110
  min: min(~'var(--width), 802px');
125
111
  max: max(1, 3);
126
112
  max: max(3em, 1em, 2em, 5em);
127
113
  max: max(1px, 2, 3em, 4, 5m, 6);
128
114
  max: min(var(--body-max-width), calc(100vw - 20px));
129
- max: max(1, calc(1 + 1));
115
+ max: max(1, calc(1em + 1vw));
130
116
  max-native: max(10vw, 100px);
131
117
  percentage: percentage((10px / 50));
132
118
  color-quoted-digit: color("#dda0dd");
133
- color-quoted-keyword: color("plum");
119
+ color-quoted-keyword: color("plum") + #000000;
134
120
  color-color: color(#dda0dd);
135
121
  color-keyword: color(plum);
136
122
  tint: tint(#777777, 13);
@@ -262,15 +248,14 @@ html {
262
248
  // not without parentheses (should behave the same as with parentheses)
263
249
  d: boolean(not false);
264
250
  e: boolean(not true);
265
- f: boolean((2 > 1) = (3 > 2));
266
251
  }
267
252
 
268
253
  #if {
269
254
  a: if(not(false), 1, 2);
270
255
  b: if(not(true), 1, 2);
271
- @1: if(not(false), {c: 3}, {d: 4}); @1();
256
+ @block1: if(not(false), {c: 3}, {d: 4}); @block1();
272
257
 
273
- --e: if(not(true), 5);
258
+ e: if(not(true), 5);
274
259
  @f: boolean(3 = 4);
275
260
  f: if(not(@f), 6);
276
261
  g: if(true, 3, 5);
@@ -313,5 +298,7 @@ html {
313
298
  list-2: @list-1;
314
299
  list-3: @list-2;
315
300
  }
316
- .mixin($list-1, ~(7; 8; 9));
301
+ // the following list was semi-colon-separated, but this was never an
302
+ // explicitly supported syntax / feature
303
+ .mixin($list-1, ~(7, 8, 9));
317
304
  }