@less/test-data 4.1.0 → 4.2.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 (35) hide show
  1. package/css/_main/container.css +243 -0
  2. package/css/_main/css-3.css +0 -2
  3. package/css/_main/functions.css +6 -0
  4. package/css/_main/impor.css +1 -0
  5. package/css/_main/media.css +48 -0
  6. package/css/_main/permissive-parse.css +9 -0
  7. package/css/_main/plugi.css +1 -0
  8. package/css/_main/selectors.css +21 -0
  9. package/css/_main/variables.css +26 -0
  10. package/css/math/parens-division/parens.css +5 -0
  11. package/css/math/strict/parens.css +5 -0
  12. package/errors/parse/parse-error-media-no-block-1.txt +3 -3
  13. package/errors/parse/parse-error-media-no-block-2.txt +2 -2
  14. package/errors/parse/parse-error-media-no-block-3.txt +3 -3
  15. package/less/_main/container.less +291 -0
  16. package/less/_main/functions.less +10 -4
  17. package/less/_main/impor.less +5 -0
  18. package/less/_main/import-reference-issues/comments-2991.less +25 -0
  19. package/less/_main/import-reference-issues.less +3 -0
  20. package/less/_main/media.less +59 -1
  21. package/less/_main/permissive-parse.less +6 -1
  22. package/less/_main/plugi.less +5 -0
  23. package/less/_main/selectors.less +25 -0
  24. package/less/_main/variables.less +34 -0
  25. package/less/js-type-errors/js-type-error-2.txt +4 -0
  26. package/less/js-type-errors/js-type-error.less +3 -0
  27. package/less/js-type-errors/js-type-error.txt +4 -0
  28. package/less/math/parens-division/media-math.less +1 -1
  29. package/less/math/parens-division/parens.less +6 -0
  30. package/less/math/strict/parens.less +6 -0
  31. package/less/sourcemaps-variable-selector/basic.less +5 -0
  32. package/less/sourcemaps-variable-selector/vars.less +3 -0
  33. package/package.json +17 -16
  34. package/errors/eval/javascript-error.less +0 -3
  35. package/errors/eval/javascript-error.txt +0 -4
@@ -0,0 +1,243 @@
1
+ .widget.discoverresults,
2
+ .widget.repositoriesresults {
3
+ container-type: inline-size;
4
+ }
5
+ @container (max-width: 350px) {
6
+ .widget.discoverresults .cite .wdr-authors,
7
+ .widget.repositoriesresults .cite .wdr-authors {
8
+ display: none;
9
+ }
10
+ }
11
+ @container (min-width: 700px) {
12
+ .card h2 {
13
+ font-size: 2em;
14
+ }
15
+ }
16
+ @container sidebar (min-width: 700px) {
17
+ .card {
18
+ font-size: 2em;
19
+ }
20
+ }
21
+ @container (min-width: 60ch) {
22
+ .container:nth-child(odd) > article {
23
+ border: 1px solid grey;
24
+ }
25
+ }
26
+ @container size(min-width: 60ch) {
27
+ .article--post header {
28
+ grid-template-areas: "avatar name" "avatar headline";
29
+ align-items: start;
30
+ }
31
+ .article--post {
32
+ grid-template-areas: "header header" ". stats" ". content";
33
+ grid-auto-columns: 5rem 1fr;
34
+ column-gap: 1rem;
35
+ }
36
+ .article--post__title {
37
+ font-size: 1.75rem;
38
+ }
39
+ }
40
+ .card h2 {
41
+ container-type: inline-size;
42
+ margin: 0;
43
+ padding: 10px;
44
+ }
45
+ @container (min-width: 500px) {
46
+ .card h2 .card-content {
47
+ grid-template-columns: 1fr 2fr;
48
+ grid-template-rows: auto 1fr;
49
+ align-items: start;
50
+ column-gap: 20px;
51
+ }
52
+ .card h2 .card-content h2 {
53
+ padding: 0;
54
+ margin: 0.5em 0 0 0;
55
+ }
56
+ }
57
+ @container (width >= 500px) and (height >= 500px) {
58
+ .card-content h2 {
59
+ padding: 0;
60
+ margin: 0.5em 0 0 0;
61
+ }
62
+ }
63
+ @container (width > 760px) not (height > 670px) {
64
+ .card-content h2 {
65
+ padding: 0;
66
+ margin: 0.5em 0 0 0;
67
+ }
68
+ }
69
+ @container not (height <= 1080px) {
70
+ .card-content h2 {
71
+ padding: 0;
72
+ margin: 0.5em 0 0 0;
73
+ }
74
+ }
75
+ @container (width < 500px) or (height < 500px) {
76
+ .card-content h2 {
77
+ padding: 0;
78
+ margin: 0.5em 0 0 0;
79
+ }
80
+ }
81
+ @container (width < 500px) or (height < 500px) and (inline-size >= 0px) {
82
+ .card-content p {
83
+ padding: 0;
84
+ }
85
+ .card-content p h2 {
86
+ margin: 0.5em 0 0 0;
87
+ }
88
+ }
89
+ @container my-page-layout (width < 500px) or (height < 500px) and (block-size > 12em) {
90
+ .card-content p {
91
+ padding: 0;
92
+ }
93
+ .card-content p h2 {
94
+ margin: 0.5em 0 0 0;
95
+ }
96
+ }
97
+ @container (width < 500px) or (height < 500px) and (aspect-ratio: 3/2) {
98
+ .card-content p {
99
+ padding: 0;
100
+ }
101
+ .card-content p h2 {
102
+ margin: 0.5em 0 0 0;
103
+ }
104
+ }
105
+ @container (width < 500px) or (height < 500px) and (orientation: portrait) {
106
+ .card-content p {
107
+ padding: 0;
108
+ }
109
+ .card-content p h2 {
110
+ margin: 0.5em 0 0 0;
111
+ }
112
+ }
113
+ @container card (inline-size > 30em) {
114
+ .card-content p {
115
+ padding: 0;
116
+ }
117
+ .card-content p h2 {
118
+ margin: 0.5em 0 0 0;
119
+ }
120
+ }
121
+ @container card (inline-size > 30em) and style(--responsive: true) {
122
+ .card-content {
123
+ grid-template-columns: 1fr 2fr;
124
+ grid-template-rows: auto 1fr;
125
+ align-items: start;
126
+ column-gap: 20px;
127
+ }
128
+ .card-content h2 {
129
+ padding: 0;
130
+ margin: 0.5em 0 0 0;
131
+ }
132
+ }
133
+ @container (width < 500px) or (height < 500px) and (orientation: portrait) {
134
+ .card-content p {
135
+ padding: 0;
136
+ }
137
+ .card-content p h2 {
138
+ margin: 0.5em 0 0 0;
139
+ }
140
+ }
141
+ @container my-page-layout (width < 500px) or (height < 500px) and (block-size > 12em) {
142
+ .card-content p {
143
+ padding: 0;
144
+ }
145
+ .card-content p h2 {
146
+ margin: 0.5em 0 0 0;
147
+ }
148
+ }
149
+ .wrapper {
150
+ container-name: wrapper;
151
+ container-type: size;
152
+ }
153
+ @container wrapper (height < 100) {
154
+ a {
155
+ max-height: 100;
156
+ }
157
+ }
158
+ @container wrapper (height < 200) {
159
+ a {
160
+ max-height: 200;
161
+ }
162
+ }
163
+ @container wrapper (height < 300) {
164
+ a {
165
+ max-height: 300;
166
+ }
167
+ }
168
+ @media only screen and (min-width: 768px) {
169
+ @container (min-width: 500px) {
170
+ .primary-content {
171
+ font-size: 1rem;
172
+ }
173
+ }
174
+ }
175
+ @media only screen and (min-width: 768px) {
176
+ .media-1 {
177
+ font-size: 1.5rem;
178
+ }
179
+ @container (min-width: 500px) {
180
+ .primary-content {
181
+ font-size: 1rem;
182
+ }
183
+ }
184
+ }
185
+ @media only screen and (min-width: 768px) {
186
+ .media-1 {
187
+ font-size: 1.5rem;
188
+ }
189
+ @container (min-width: 500px) {
190
+ .primary-content {
191
+ font-size: 1rem;
192
+ }
193
+ }
194
+ .media-2 {
195
+ font-size: 2rem;
196
+ }
197
+ }
198
+ @media only screen and (min-width: 768px) {
199
+ .media-1 {
200
+ font-size: 1.5rem;
201
+ }
202
+ @container (min-width: 500px) {
203
+ .primary-content {
204
+ font-size: 1rem;
205
+ }
206
+ @media (hover: hover) {
207
+ font-size: 1.75rem;
208
+ }
209
+ }
210
+ .media-2 {
211
+ font-size: 2rem;
212
+ }
213
+ }
214
+ @media only screen and (min-width: 768px) {
215
+ .media-1 {
216
+ font-size: 1.5rem;
217
+ }
218
+ @container (min-width: 500px) {
219
+ .primary-content {
220
+ font-size: 1rem;
221
+ }
222
+ @media (hover: hover) {
223
+ font-size: 1.75rem;
224
+ @media not all and (hover: hover) {
225
+ color: limegreen;
226
+ }
227
+ .media-3 {
228
+ padding: 0.5rem;
229
+ }
230
+ }
231
+ }
232
+ .media-2 {
233
+ font-size: 2rem;
234
+ }
235
+ }
236
+ @container (min-width: 768px) {
237
+ @media only screen and (min-width: 768px) {
238
+ color: aliceblue;
239
+ }
240
+ .container-1 {
241
+ color: purple;
242
+ }
243
+ }
@@ -136,8 +136,6 @@ body > .shadow {
136
136
  symbols: ‣;
137
137
  suffix: " ";
138
138
  }
139
- @-ms-viewport {
140
- }
141
139
  @unknown foo 42 (bar) {
142
140
  x {
143
141
  y: z;
@@ -109,8 +109,14 @@
109
109
  min: 5;
110
110
  min: 1pt;
111
111
  min: 3mm;
112
+ min: min(1, 4ex, 2pt);
113
+ min: min(calc(1 + 1), 1);
114
+ min: min(var(--width), 802px);
112
115
  max: 3;
113
116
  max: 5em;
117
+ max: max(5m, 3em);
118
+ max: min(var(--body-max-width), calc(100vw - 20px));
119
+ max: max(1, calc(1 + 1));
114
120
  max-native: max(10vw, 100px);
115
121
  percentage: 20%;
116
122
  color-quoted-digit: #dda0dd;
@@ -0,0 +1 @@
1
+ @impor "impor-typo-dont-parse-as-@import.less";
@@ -221,3 +221,51 @@
221
221
  foo: bar;
222
222
  }
223
223
  }
224
+ @media screen and (color), projection and (color) {
225
+ .selector {
226
+ color: #eee;
227
+ }
228
+ }
229
+ @media not (width <= -100px) {
230
+ body {
231
+ background: green;
232
+ }
233
+ }
234
+ @media (height > -100px) {
235
+ body {
236
+ background: green;
237
+ }
238
+ }
239
+ @media not (resolution: -300dpi) {
240
+ body {
241
+ background: green;
242
+ }
243
+ }
244
+ @media (example, all), speech {
245
+ body {
246
+ background: green;
247
+ }
248
+ }
249
+ @media (min-orientation: portrait) {
250
+ body {
251
+ background: green;
252
+ }
253
+ }
254
+ @media print and (min-resolution: 118dpcm) {
255
+ body {
256
+ background: green;
257
+ }
258
+ }
259
+ @media (200px <= width <= 500px) {
260
+ .test-range-syntax {
261
+ padding: 0;
262
+ }
263
+ }
264
+ .selector {
265
+ color: #eee;
266
+ }
267
+ @media (200px <= width <= 500px) {
268
+ .selector .test-range-syntax {
269
+ padding: 0;
270
+ }
271
+ }
@@ -35,3 +35,12 @@ foo[attr="blah"] {
35
35
  --value: a /* { ; } */;
36
36
  --comment-within: ( /* okay?; comment; */ );
37
37
  }
38
+ .test-no-trailing-semicolon {
39
+ --value: foo;
40
+ }
41
+ .test-no-trailing-semicolon2 {
42
+ --value: foo;
43
+ }
44
+ .test-no-trailing-semicolon3 {
45
+ --value: foo;
46
+ }
@@ -0,0 +1 @@
1
+ @plugi "plugi-typo-dont-parse-as-@plugin";
@@ -143,6 +143,21 @@ p a span {
143
143
  [p] {
144
144
  attributes: yes;
145
145
  }
146
+ /**
147
+ * https://www.w3.org/TR/selectors-4/#attribute-case
148
+ */
149
+ a[href*="insensitive" i] {
150
+ color: cyan;
151
+ }
152
+ a[href*="cAsE" s] {
153
+ color: pink;
154
+ }
155
+ a[href*="less" I] {
156
+ background-color: silver;
157
+ }
158
+ a[href*="less" S] {
159
+ background-color: red;
160
+ }
146
161
  /*
147
162
  Large comment means chunk will be emitted after } which means chunk will begin with whitespace...
148
163
  blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank
@@ -168,3 +183,9 @@ blank blank blank blank blank blank blank blank blank blank blank blank blank bl
168
183
  .first-level .second-level.active2 {
169
184
  content: '\2661';
170
185
  }
186
+ a:is(.b, :is(.c)) {
187
+ color: blue;
188
+ }
189
+ a:is(.b, :is(.c), :has(div)) {
190
+ color: red;
191
+ }
@@ -69,3 +69,29 @@
69
69
  mul-px-2: 140px;
70
70
  mul-px-3: 140px;
71
71
  }
72
+ *,
73
+ ::before,
74
+ ::after {
75
+ --tw-pan-x: ;
76
+ --tw-pan-y: ;
77
+ --tw-pinch-zoom: ;
78
+ --tw-scroll-snap-strictness: proximity;
79
+ }
80
+ .radio_checked {
81
+ border-color: #fff;
82
+ }
83
+ div#apple {
84
+ color: blue;
85
+ }
86
+ div#banana {
87
+ color: blue;
88
+ }
89
+ div#cherry {
90
+ color: blue;
91
+ }
92
+ div#carrot {
93
+ color: blue;
94
+ }
95
+ div#potato {
96
+ color: blue;
97
+ }
@@ -1,3 +1,8 @@
1
+ .parens-issues-3616 {
2
+ bar: 888 / 444;
3
+ bar2: 2;
4
+ bar3: 2;
5
+ }
1
6
  .parens {
2
7
  border: 2px solid black;
3
8
  margin: 1px 3px 16 3;
@@ -1,3 +1,8 @@
1
+ .parens-issues-3616 {
2
+ bar: 888 / 444;
3
+ bar2: 2;
4
+ bar3: 2;
5
+ }
1
6
  .parens {
2
7
  border: 2px solid black;
3
8
  margin: 1px 3px 16 3;
@@ -1,3 +1,3 @@
1
- SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-1.less on line 1, column 24:
2
- 1 @media (extra: bracket)) {
3
- 2 body {
1
+ SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-1.less on line 1, column 24:
2
+ 1 @media (extra: bracket)) {
3
+ 2 body {
@@ -1,2 +1,2 @@
1
- SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-2.less on line 1, column 7:
2
- 1 @media
1
+ SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-2.less on line 1, column 7:
2
+ 1 @media
@@ -1,3 +1,3 @@
1
- SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-3.less on line 4, column 4:
2
- 3 font-size: 5000px;
3
- 4 }
1
+ SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-3.less on line 4, column 4:
2
+ 3 font-size: 5000px;
3
+ 4 }
@@ -0,0 +1,291 @@
1
+ .widget.discoverresults, .widget.repositoriesresults {
2
+ container-type: inline-size;
3
+
4
+ @container (max-width: 350px) {
5
+ .cite {
6
+ .wdr-authors {
7
+ display: none;
8
+ }
9
+ }
10
+ }
11
+ }
12
+
13
+ @container (min-width: 700px) {
14
+ .card h2 {
15
+ font-size: 2em;
16
+ }
17
+ }
18
+
19
+ @container sidebar (min-width: 700px) {
20
+ .card {
21
+ font-size: 2em;
22
+ }
23
+ }
24
+
25
+ @container (min-width: 60ch) {
26
+ .container:nth-child(odd) > article {
27
+ border: 1px solid grey;
28
+ }
29
+ }
30
+
31
+ @container size(min-width: 60ch) {
32
+ .article--post header {
33
+ grid-template-areas:
34
+ "avatar name"
35
+ "avatar headline";
36
+ align-items: start;
37
+ }
38
+
39
+ .article--post {
40
+ grid-template-areas: "header header" ". stats" ". content";
41
+ grid-auto-columns: 5rem 1fr;
42
+ column-gap: 1rem;
43
+ }
44
+
45
+ .article--post__title {
46
+ font-size: 1.75rem;
47
+ }
48
+ }
49
+
50
+ .card h2 {
51
+ container-type: inline-size;
52
+ margin: 0;
53
+ padding: 10px;
54
+
55
+ @container (min-width: 500px) {
56
+ .card-content {
57
+ grid-template-columns: 1fr 2fr;
58
+ grid-template-rows: auto 1fr;
59
+ align-items: start;
60
+ column-gap: 20px;
61
+ }
62
+
63
+ .card-content h2 {
64
+ padding: 0;
65
+ margin: 0.5em 0 0 0;
66
+ }
67
+ }
68
+ }
69
+
70
+ @container (width >= 500px) and (height >= 500px) {
71
+ .card-content h2 {
72
+ padding: 0;
73
+ margin: 0.5em 0 0 0;
74
+ }
75
+ }
76
+
77
+ @container (width > 760px) not (height > 670px) {
78
+ .card-content h2 {
79
+ padding: 0;
80
+ margin: 0.5em 0 0 0;
81
+ }
82
+ }
83
+
84
+ @container not (height <= 1080px) {
85
+ .card-content h2 {
86
+ padding: 0;
87
+ margin: 0.5em 0 0 0;
88
+ }
89
+ }
90
+
91
+ @container (width < 500px) or (height < 500px) {
92
+ .card-content h2 {
93
+ padding: 0;
94
+ margin: 0.5em 0 0 0;
95
+ }
96
+ }
97
+
98
+ @container (width < 500px) or (height < 500px) and (inline-size >= 0px) {
99
+ .card-content p {
100
+ padding: 0;
101
+
102
+ h2 {
103
+ margin: 0.5em 0 0 0;
104
+ }
105
+ }
106
+ }
107
+
108
+ @container my-page-layout (width < 500px) or (height < 500px) and (block-size > 12em) {
109
+ .card-content p {
110
+ padding: 0;
111
+
112
+ h2 {
113
+ margin: 0.5em 0 0 0;
114
+ }
115
+ }
116
+ }
117
+
118
+ @container (width < 500px) or (height < 500px) and (aspect-ratio: 3/2) {
119
+ .card-content p {
120
+ padding: 0;
121
+
122
+ h2 {
123
+ margin: 0.5em 0 0 0;
124
+ }
125
+ }
126
+ }
127
+
128
+ @container (width < 500px) or (height < 500px) and (orientation: portrait) {
129
+ .card-content p {
130
+ padding: 0;
131
+
132
+ h2 {
133
+ margin: 0.5em 0 0 0;
134
+ }
135
+ }
136
+ }
137
+
138
+ @container card (inline-size > 30em) {
139
+ .card-content p {
140
+ padding: 0;
141
+
142
+ h2 {
143
+ margin: 0.5em 0 0 0;
144
+ }
145
+ }
146
+
147
+ @container style(--responsive: true) {
148
+ .card-content {
149
+ grid-template-columns: 1fr 2fr;
150
+ grid-template-rows: auto 1fr;
151
+ align-items: start;
152
+ column-gap: 20px;
153
+ }
154
+
155
+ .card-content h2 {
156
+ padding: 0;
157
+ margin: 0.5em 0 0 0;
158
+ }
159
+ }
160
+ }
161
+
162
+ @container ( width < 500px ) or (height<500px) and (orientation: portrait) {
163
+ .card-content p {
164
+ padding: 0;
165
+
166
+ h2 {
167
+ margin: 0.5em 0 0 0;
168
+ }
169
+ }
170
+ }
171
+
172
+ @container my-page-layout ( width< 500px) or ( height<500px) and ( block-size>12em ) {
173
+ .card-content p {
174
+ padding: 0;
175
+
176
+ h2 {
177
+ margin: 0.5em 0 0 0;
178
+ }
179
+ }
180
+ }
181
+
182
+ .wrapper {
183
+ container-name: wrapper;
184
+ container-type: size;
185
+ }
186
+
187
+ .my_mixin(@height) {
188
+ @container wrapper (height < @height) {
189
+ a {
190
+ max-height: @height;
191
+ }
192
+ }
193
+ }
194
+
195
+ .my_mixin(100);
196
+ .my_mixin(200);
197
+ .my_mixin(300);
198
+
199
+ @media only screen and (min-width: 768px) {
200
+ @container (min-width: 500px) {
201
+ .primary-content {
202
+ font-size: 1rem;
203
+ }
204
+ }
205
+ }
206
+
207
+ @media only screen and (min-width: 768px) {
208
+ .media-1 {
209
+ font-size: 1.5rem;
210
+ }
211
+
212
+ @container (min-width: 500px) {
213
+ .primary-content {
214
+ font-size: 1rem;
215
+ }
216
+ }
217
+ }
218
+
219
+ @media only screen and (min-width: 768px) {
220
+ .media-1 {
221
+ font-size: 1.5rem;
222
+ }
223
+
224
+ @container (min-width: 500px) {
225
+ .primary-content {
226
+ font-size: 1rem;
227
+ }
228
+ }
229
+
230
+ .media-2 {
231
+ font-size: 2rem;
232
+ }
233
+ }
234
+
235
+ @media only screen and (min-width: 768px) {
236
+ .media-1 {
237
+ font-size: 1.5rem;
238
+ }
239
+
240
+ @container (min-width: 500px) {
241
+ .primary-content {
242
+ font-size: 1rem;
243
+ }
244
+
245
+ @media (hover: hover) {
246
+ font-size: 1.75rem;
247
+ }
248
+ }
249
+
250
+ .media-2 {
251
+ font-size: 2rem;
252
+ }
253
+ }
254
+
255
+ @media only screen and (min-width: 768px) {
256
+ .media-1 {
257
+ font-size: 1.5rem;
258
+ }
259
+
260
+ @container (min-width: 500px) {
261
+ .primary-content {
262
+ font-size: 1rem;
263
+ }
264
+
265
+ @media (hover: hover) {
266
+ font-size: 1.75rem;
267
+
268
+ @media not all and (hover: hover) {
269
+ color: limegreen;
270
+ }
271
+
272
+ .media-3 {
273
+ padding: 0.5rem;
274
+ }
275
+ }
276
+ }
277
+
278
+ .media-2 {
279
+ font-size: 2rem;
280
+ }
281
+ }
282
+
283
+ @container (min-width: 768px) {
284
+ @media only screen and (min-width: 768px) {
285
+ color: aliceblue;
286
+ }
287
+
288
+ .container-1 {
289
+ color: purple;
290
+ }
291
+ }
@@ -116,8 +116,14 @@
116
116
  min: min(6, 5);
117
117
  min: min(1pt, 3pt);
118
118
  min: min(1cm, 3mm);
119
+ min: min(6em, 5, 4ex, 3, 2pt, 1);
120
+ min: min(calc(1 + 1), 1);
121
+ min: min(~'var(--width), 802px');
119
122
  max: max(1, 3);
120
123
  max: max(3em, 1em, 2em, 5em);
124
+ max: max(1px, 2, 3em, 4, 5m, 6);
125
+ max: min(var(--body-max-width), calc(100vw - 20px));
126
+ max: max(1, calc(1 + 1));
121
127
  max-native: max(10vw, 100px);
122
128
  percentage: percentage((10px / 50));
123
129
  color-quoted-digit: color("#dda0dd");
@@ -135,11 +141,11 @@
135
141
 
136
142
  fade-out: fadeout(red, 5%); // support fadeOut and fadeout
137
143
  fade-in: fadein(fadeout(red, 10%), 5%);
138
- fade-out-relative: fadeout(red, 5%,relative);
144
+ fade-out-relative: fadeout(red, 5%,relative);
139
145
  fade-in-relative: fadein(fadeout(red, 10%, relative), 5%, relative);
140
- fade-out2: fadeout(fadeout(red, 50%), 50%);
146
+ fade-out2: fadeout(fadeout(red, 50%), 50%);
141
147
  fade-out2-relative: fadeout(fadeout(red, 50%, relative), 50%, relative);
142
-
148
+
143
149
  hsv: hsv(5, 50%, 30%);
144
150
  hsva: hsva(3, 50%, 30%, 0.2);
145
151
 
@@ -269,7 +275,7 @@ html {
269
275
  // see: https://github.com/less/less.js/issues/3371
270
276
  @some: foo;
271
277
  l: if((iscolor(@some)), darken(@some, 10%), black);
272
-
278
+
273
279
 
274
280
  if((false), {g: 7}); /* results in void */
275
281
 
@@ -0,0 +1,5 @@
1
+ // https://github.com/less/less.js/issues/3660
2
+ // const dir = parserInput.$re(/^@import?\s+/);
3
+ // correct regexp is /^@import\s+/
4
+ // so follow code will change nothing, parse result is same with raw less code
5
+ @impor "impor-typo-dont-parse-as-@import.less";
@@ -0,0 +1,25 @@
1
+ .referenced {
2
+ // This file should not output anything if referenced.
3
+ @media (hover) {
4
+ // This file should not output anything if referenced.
5
+ }
6
+ // This file should not output anything if referenced.
7
+ @media (hover) {
8
+ // This file should not output anything if referenced.
9
+ }
10
+ // This file should not output anything if referenced.
11
+ @media (hover) {
12
+ /* This file should not output anything if referenced. */
13
+ }
14
+ // This file should not output anything if referenced.
15
+ @media (hover) {
16
+ color: #000000;
17
+ }
18
+ }
19
+ // This file should not output anything if referenced.
20
+ @media (hover) {
21
+ // This file should not output anything if referenced.
22
+ }
23
+ @media (hover) {
24
+ /* This file should not output anything if referenced. */
25
+ }
@@ -5,6 +5,7 @@
5
5
  // * #2716 - A file imported by reference and then normally - multiple imports should be independent
6
6
  // * #1968 - When using an @import (reference), mixins that contain an & selector get added to the compiled output improperly
7
7
  // * #2162 - Cannot put import by reference inside of a mixin (also doubles #1896)
8
+ // * #2991 - Empty @media queries generated through line comments when compiling less file with (reference)
8
9
 
9
10
  // #1878: extend inside referenced file should not extend outside selectors
10
11
  @import (reference) "import-reference-issues/global-scope-import.less";
@@ -48,3 +49,5 @@ show-all-content {
48
49
  call-mixin-with-import-by-reference-inside {
49
50
  .mixin-with-import-by-reference-inside();
50
51
  }
52
+
53
+ @import (reference) "import-reference-issues/comments-2991.less";
@@ -238,4 +238,62 @@
238
238
  .selector {
239
239
  foo: bar;
240
240
  }
241
- }
241
+ }
242
+
243
+ @media screen and (color), projection and (color) {
244
+ .selector {
245
+ color: #eee;
246
+ }
247
+ }
248
+
249
+ @media not (width <= -100px) {
250
+ body {
251
+ background: green;
252
+ }
253
+ }
254
+
255
+ @media (height > -100px) {
256
+ body {
257
+ background: green;
258
+ }
259
+ }
260
+
261
+ @media not (resolution: -300dpi) {
262
+ body {
263
+ background: green;
264
+ }
265
+ }
266
+
267
+ @media (example, all,), speech {
268
+ body {
269
+ background: green;
270
+ }
271
+ }
272
+
273
+ @media (min-orientation:portrait) {
274
+ body {
275
+ background: green;
276
+ }
277
+ }
278
+
279
+ @media print and (min-resolution: 118dpcm) {
280
+ body {
281
+ background: green;
282
+ }
283
+ }
284
+
285
+ @media (200px <= width <= 500px) {
286
+ .test-range-syntax {
287
+ padding: 0;
288
+ }
289
+ }
290
+
291
+ .selector {
292
+ color: #eee;
293
+
294
+ @media (200px <= width <= 500px) {
295
+ .test-range-syntax {
296
+ padding: 0;
297
+ }
298
+ }
299
+ }
@@ -47,4 +47,9 @@
47
47
  .test-rule-comment {
48
48
  --value: a/* { ; } */;
49
49
  --comment-within: ( /* okay?; comment; */ );
50
- }
50
+ }
51
+ .test-no-trailing-semicolon {
52
+ --value: foo
53
+ }
54
+ .test-no-trailing-semicolon2 {--value: foo}
55
+ .test-no-trailing-semicolon3 { --value: foo }
@@ -0,0 +1,5 @@
1
+ // https://github.com/less/less.js/issues/3660
2
+ // const dir = parserInput.$re(/^@plugin?\s+/);
3
+ // correct regexp is /^@plugin\s+/
4
+ // so follow code will change nothing, parse result is same with raw less code
5
+ @plugi "plugi-typo-dont-parse-as-@plugin";
@@ -147,6 +147,23 @@ a {
147
147
  attributes: yes;
148
148
  }
149
149
 
150
+ /**
151
+ * https://www.w3.org/TR/selectors-4/#attribute-case
152
+ */
153
+ @pattern: less;
154
+ a[href*="insensitive" i] {
155
+ color: cyan;
156
+ }
157
+ a[href*="cAsE" s] {
158
+ color: pink;
159
+ }
160
+ a[href*="@{pattern}" I] {
161
+ background-color: silver;
162
+ }
163
+ a[href*="@{pattern}" S] {
164
+ background-color: red;
165
+ }
166
+
150
167
  /*
151
168
  Large comment means chunk will be emitted after } which means chunk will begin with whitespace...
152
169
  blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank
@@ -183,3 +200,11 @@ blank blank blank blank blank blank blank blank blank blank blank blank blank bl
183
200
  &.active2:extend(.extend-this) { }
184
201
  }
185
202
  }
203
+
204
+ a:is(.b, :is(.c)) {
205
+ color: blue;
206
+ }
207
+
208
+ a:is(.b, :is(.c), :has(div)) {
209
+ color: red;
210
+ }
@@ -125,3 +125,37 @@
125
125
  mul-px-3: ((@px * 1) * @cm);
126
126
  }
127
127
  }
128
+
129
+ *, ::before, ::after {
130
+ --tw-pan-x: ;
131
+ --tw-pan-y: ;
132
+ --tw-pinch-zoom: ;
133
+ --tw-scroll-snap-strictness: proximity;
134
+ }
135
+
136
+ @a1: 1px;
137
+ @b2: 2px;
138
+ @c3: @a1 + @b2;
139
+
140
+ @radio-cls: radio;
141
+ @radio-cls-checked: @{radio-cls}_checked;
142
+
143
+ .@{radio-cls-checked} {
144
+ border-color: #fff;
145
+ }
146
+
147
+ @items:
148
+ // Fruit
149
+ apple,
150
+ banana,
151
+ cherry,
152
+ // Vegetables
153
+ carrot,
154
+ potato,
155
+ ;
156
+
157
+ each(@items, {
158
+ div#@{value} {
159
+ color: blue;
160
+ }
161
+ })
@@ -0,0 +1,4 @@
1
+ SyntaxError: JavaScript evaluation error: 'TypeError: Cannot read properties of undefined (reading 'toJS')' in {path}js-type-error.less on line 2, column 8:
2
+ 1 .scope {
3
+ 2 var: `this.foo.toJS`;
4
+ 3 }
@@ -0,0 +1,3 @@
1
+ .scope {
2
+ var: `this.foo.toJS`;
3
+ }
@@ -0,0 +1,4 @@
1
+ SyntaxError: JavaScript evaluation error: 'TypeError: Cannot read property 'toJS' of undefined' in {path}js-type-error.less on line 2, column 8:
2
+ 1 .scope {
3
+ 2 var: `this.foo.toJS`;
4
+ 3 }
@@ -1,4 +1,4 @@
1
- @var: 16;
1
+ @var: 10 + 6;
2
2
 
3
3
  @media (min-width: @var + 1) {
4
4
  .foo { bar: 1; }
@@ -1,3 +1,9 @@
1
+ .parens-issues-3616 {
2
+ bar: if(false, 666, 888 / 444);
3
+ bar2: if(false, 666, (666 / 333));
4
+ bar3: if(false, 666, ((444 / 222)));
5
+ }
6
+
1
7
  .parens {
2
8
  @var: 1px;
3
9
  border: (@var * 2) solid black;
@@ -1,3 +1,9 @@
1
+ .parens-issues-3616 {
2
+ bar: if(false, 666, 888 / 444);
3
+ bar2: if(false, 666, (666 / 333));
4
+ bar3: if(false, 666, ((444 / 222)));
5
+ }
6
+
1
7
  .parens {
2
8
  @var: 1px;
3
9
  border: (@var * 2) solid black;
@@ -0,0 +1,5 @@
1
+ @import (reference) "./vars.less";
2
+
3
+ .@{hello}-class {
4
+ font-size: @font-size;
5
+ }
@@ -0,0 +1,3 @@
1
+ @foo: bar;
2
+ @font-size: 12px;
3
+ @hello: world;
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
- {
2
- "name": "@less/test-data",
3
- "publishConfig": {
4
- "access": "public"
5
- },
6
- "version": "4.1.0",
7
- "description": "Less files and CSS results",
8
- "author": {
9
- "name": "Alexis Sellier",
10
- "email": "self@cloudhead.net"
11
- },
12
- "contributors": [
13
- "The Core Less Team"
14
- ],
15
- "license": "Apache-2.0"
16
- }
1
+ {
2
+ "name": "@less/test-data",
3
+ "publishConfig": {
4
+ "access": "public"
5
+ },
6
+ "version": "4.2.2",
7
+ "description": "Less files and CSS results",
8
+ "author": {
9
+ "name": "Alexis Sellier",
10
+ "email": "self@cloudhead.net"
11
+ },
12
+ "contributors": [
13
+ "The Core Less Team"
14
+ ],
15
+ "license": "Apache-2.0",
16
+ "gitHead": "1df9072ee9ebdadc791bf35dfb1dbc3ef9f1948f"
17
+ }
@@ -1,3 +0,0 @@
1
- .scope {
2
- var: `this.foo.toJS`;
3
- }
@@ -1,4 +0,0 @@
1
- SyntaxError: JavaScript evaluation error: 'TypeError: Cannot read property 'toJS' of undefined' in {path}javascript-error.less on line 2, column 10:
2
- 1 .scope {
3
- 2 var: `this.foo.toJS`;
4
- 3 }