@@ -61,46 +61,73 @@ void main() {
61
61
.foo
62
62
color: red
63
63
64
+ .bar
65
+ color: blue
66
+
64
67
''' , uri: 'index.sass' );
65
68
66
69
var result = ls.findDocumentSymbols (document);
67
- var nameRange = result.first.selectionRange;
68
- var symbolRange = result.first.range;
69
70
70
- expect (nameRange , StartsAtLine (0 ));
71
- expect (nameRange , StartsAtCharacter (0 ));
71
+ expect (result.first.selectionRange , StartsAtLine (0 ));
72
+ expect (result.first.selectionRange , StartsAtCharacter (0 ));
72
73
73
- expect (nameRange , EndsAtLine (0 ));
74
- expect (nameRange , EndsAtCharacter (4 ));
74
+ expect (result.first.selectionRange , EndsAtLine (0 ));
75
+ expect (result.first.selectionRange , EndsAtCharacter (4 ));
75
76
76
- expect (symbolRange , StartsAtLine (0 ));
77
- expect (symbolRange , StartsAtCharacter (0 ));
77
+ expect (result.first.range , StartsAtLine (0 ));
78
+ expect (result.first.range , StartsAtCharacter (0 ));
78
79
79
- expect (symbolRange, EndsAtLine (1 ));
80
- expect (symbolRange, EndsAtCharacter (12 ));
80
+ expect (result.first.range, EndsAtLine (1 ));
81
+ expect (result.first.range, EndsAtCharacter (12 ));
82
+
83
+ expect (result.last.selectionRange, StartsAtLine (3 ));
84
+ expect (result.last.selectionRange, StartsAtCharacter (0 ));
85
+
86
+ expect (result.last.selectionRange, EndsAtLine (3 ));
87
+ expect (result.last.selectionRange, EndsAtCharacter (4 ));
88
+
89
+ expect (result.last.range, StartsAtLine (3 ));
90
+ expect (result.last.range, StartsAtCharacter (0 ));
91
+
92
+ expect (result.last.range, EndsAtLine (4 ));
93
+ expect (result.last.range, EndsAtCharacter (13 ));
81
94
});
82
95
83
96
test ('placeholder selector ranges are correct' , () {
84
97
var document = fs.createDocument ('''
85
98
%waitforit {
86
99
color: red;
87
100
}
101
+
102
+ %waaaaaitforit {
103
+ color: blue;
104
+ }
88
105
''' );
89
106
var result = ls.findDocumentSymbols (document);
90
- var nameRange = result.first.selectionRange;
91
- var symbolRange = result.first.range;
92
107
93
- expect (nameRange , StartsAtLine (0 ));
94
- expect (nameRange , StartsAtCharacter (0 ));
108
+ expect (result.first.selectionRange , StartsAtLine (0 ));
109
+ expect (result.first.selectionRange , StartsAtCharacter (0 ));
95
110
96
- expect (nameRange , EndsAtLine (0 ));
97
- expect (nameRange , EndsAtCharacter (10 ));
111
+ expect (result.first.selectionRange , EndsAtLine (0 ));
112
+ expect (result.first.selectionRange , EndsAtCharacter (10 ));
98
113
99
- expect (symbolRange, StartsAtLine (0 ));
100
- expect (symbolRange, StartsAtCharacter (0 ));
114
+ expect (result.first.range, StartsAtLine (0 ));
115
+ expect (result.first.range, StartsAtCharacter (0 ));
116
+
117
+ expect (result.first.range, EndsAtLine (2 ));
118
+ expect (result.first.range, EndsAtCharacter (1 ));
101
119
102
- expect (symbolRange, EndsAtLine (2 ));
103
- expect (symbolRange, EndsAtCharacter (1 ));
120
+ expect (result.last.selectionRange, StartsAtLine (4 ));
121
+ expect (result.last.selectionRange, StartsAtCharacter (0 ));
122
+
123
+ expect (result.last.selectionRange, EndsAtLine (4 ));
124
+ expect (result.last.selectionRange, EndsAtCharacter (14 ));
125
+
126
+ expect (result.last.range, StartsAtLine (4 ));
127
+ expect (result.last.range, StartsAtCharacter (0 ));
128
+
129
+ expect (result.last.range, EndsAtLine (6 ));
130
+ expect (result.last.range, EndsAtCharacter (1 ));
104
131
});
105
132
});
106
133
@@ -169,23 +196,38 @@ $world: blue;
169
196
$value: $a + $b;
170
197
@return $value;
171
198
}
199
+
200
+ @function doOtherStuff($a: 1, $b: 2) {
201
+ $value: $a + $b;
202
+ @return $value;
203
+ }
172
204
''' );
173
205
174
206
var result = ls.findDocumentSymbols (document);
175
- var nameRange = result.first.selectionRange;
176
- var symbolRange = result.first.range;
177
207
178
- expect (nameRange , StartsAtLine (0 ));
179
- expect (nameRange , StartsAtCharacter (10 ));
208
+ expect (result.first.selectionRange , StartsAtLine (0 ));
209
+ expect (result.first.selectionRange , StartsAtCharacter (10 ));
180
210
181
- expect (nameRange , EndsAtLine (0 ));
182
- expect (nameRange , EndsAtCharacter (17 ));
211
+ expect (result.first.selectionRange , EndsAtLine (0 ));
212
+ expect (result.first.selectionRange , EndsAtCharacter (17 ));
183
213
184
- expect (symbolRange, StartsAtLine (0 ));
185
- expect (symbolRange, StartsAtCharacter (0 ));
214
+ expect (result.first.range, StartsAtLine (0 ));
215
+ expect (result.first.range, StartsAtCharacter (0 ));
216
+
217
+ expect (result.first.range, EndsAtLine (3 ));
218
+ expect (result.first.range, EndsAtCharacter (1 ));
219
+
220
+ expect (result.last.selectionRange, StartsAtLine (5 ));
221
+ expect (result.last.selectionRange, StartsAtCharacter (10 ));
186
222
187
- expect (symbolRange, EndsAtLine (3 ));
188
- expect (symbolRange, EndsAtCharacter (1 ));
223
+ expect (result.last.selectionRange, EndsAtLine (5 ));
224
+ expect (result.last.selectionRange, EndsAtCharacter (22 ));
225
+
226
+ expect (result.last.range, StartsAtLine (5 ));
227
+ expect (result.last.range, StartsAtCharacter (0 ));
228
+
229
+ expect (result.last.range, EndsAtLine (8 ));
230
+ expect (result.last.range, EndsAtCharacter (1 ));
189
231
});
190
232
191
233
test ('mixin ranges are correct' , () {
@@ -194,23 +236,38 @@ $world: blue;
194
236
$value: 1;
195
237
line-height: $value;
196
238
}
239
+
240
+ @mixin mixin2 {
241
+ $value: 1;
242
+ line-height: $value;
243
+ }
197
244
''' );
198
245
199
246
var result = ls.findDocumentSymbols (document);
200
- var nameRange = result.first.selectionRange;
201
- var symbolRange = result.first.range;
202
247
203
- expect (nameRange , StartsAtLine (0 ));
204
- expect (nameRange , StartsAtCharacter (7 ));
248
+ expect (result.first.selectionRange , StartsAtLine (0 ));
249
+ expect (result.first.selectionRange , StartsAtCharacter (7 ));
205
250
206
- expect (nameRange , EndsAtLine (0 ));
207
- expect (nameRange , EndsAtCharacter (13 ));
251
+ expect (result.first.selectionRange , EndsAtLine (0 ));
252
+ expect (result.first.selectionRange , EndsAtCharacter (13 ));
208
253
209
- expect (symbolRange, StartsAtLine (0 ));
210
- expect (symbolRange, StartsAtCharacter (0 ));
254
+ expect (result.first.range, StartsAtLine (0 ));
255
+ expect (result.first.range, StartsAtCharacter (0 ));
256
+
257
+ expect (result.first.range, EndsAtLine (3 ));
258
+ expect (result.first.range, EndsAtCharacter (1 ));
259
+
260
+ expect (result.last.selectionRange, StartsAtLine (5 ));
261
+ expect (result.last.selectionRange, StartsAtCharacter (7 ));
211
262
212
- expect (symbolRange, EndsAtLine (3 ));
213
- expect (symbolRange, EndsAtCharacter (1 ));
263
+ expect (result.last.selectionRange, EndsAtLine (5 ));
264
+ expect (result.last.selectionRange, EndsAtCharacter (13 ));
265
+
266
+ expect (result.last.range, StartsAtLine (5 ));
267
+ expect (result.last.range, StartsAtCharacter (0 ));
268
+
269
+ expect (result.last.range, EndsAtLine (8 ));
270
+ expect (result.last.range, EndsAtCharacter (1 ));
214
271
});
215
272
});
216
273
@@ -221,72 +278,114 @@ $world: blue;
221
278
222
279
test ('@media ranges are correct' , () {
223
280
var document = fs.createDocument (r'''
224
- @media screen, print
281
+ @media screen
282
+ body
283
+ font-size: 16px
284
+
285
+ @media print
225
286
body
226
287
font-size: 14pt
227
288
''' , uri: 'index.sass' );
228
289
229
290
var result = ls.findDocumentSymbols (document);
230
- var nameRange = result.first.selectionRange;
231
- var symbolRange = result.first.range;
232
291
233
- expect (nameRange , StartsAtLine (0 ));
234
- expect (nameRange , StartsAtCharacter (7 ));
292
+ expect (result.first.selectionRange , StartsAtLine (0 ));
293
+ expect (result.first.selectionRange , StartsAtCharacter (7 ));
235
294
236
- expect (nameRange , EndsAtLine (0 ));
237
- expect (nameRange , EndsAtCharacter (20 ));
295
+ expect (result.first.selectionRange , EndsAtLine (0 ));
296
+ expect (result.first.selectionRange , EndsAtCharacter (13 ));
238
297
239
- expect (symbolRange, StartsAtLine (0 ));
240
- expect (symbolRange, StartsAtCharacter (0 ));
298
+ expect (result.first.range, StartsAtLine (0 ));
299
+ expect (result.first.range, StartsAtCharacter (0 ));
300
+
301
+ expect (result.first.range, EndsAtLine (2 ));
302
+ expect (result.first.range, EndsAtCharacter (19 ));
303
+
304
+ expect (result.last.selectionRange, StartsAtLine (4 ));
305
+ expect (result.last.selectionRange, StartsAtCharacter (7 ));
241
306
242
- expect (symbolRange, EndsAtLine (2 ));
243
- expect (symbolRange, EndsAtCharacter (19 ));
307
+ expect (result.last.selectionRange, EndsAtLine (4 ));
308
+ expect (result.last.selectionRange, EndsAtCharacter (12 ));
309
+
310
+ expect (result.last.range, StartsAtLine (4 ));
311
+ expect (result.last.range, StartsAtCharacter (0 ));
312
+
313
+ expect (result.last.range, EndsAtLine (6 ));
314
+ expect (result.last.range, EndsAtCharacter (19 ));
244
315
});
245
316
246
317
test ('@font-face ranges are correct' , () {
247
318
var document = fs.createDocument (r'''
248
319
@font-face {
249
320
font-family: "Vulf Mono", monospace;
250
321
}
322
+
323
+ @font-face {
324
+ font-family: "Vulf", serif;
325
+ }
251
326
''' );
252
327
var result = ls.findDocumentSymbols (document);
253
- var nameRange = result.first.selectionRange;
254
- var symbolRange = result.first.range;
255
328
256
- expect (nameRange , StartsAtLine (0 ));
257
- expect (nameRange , StartsAtCharacter (1 ));
329
+ expect (result.first.selectionRange , StartsAtLine (0 ));
330
+ expect (result.first.selectionRange , StartsAtCharacter (1 ));
258
331
259
- expect (nameRange , EndsAtLine (0 ));
260
- expect (nameRange , EndsAtCharacter (10 ));
332
+ expect (result.first.selectionRange , EndsAtLine (0 ));
333
+ expect (result.first.selectionRange , EndsAtCharacter (10 ));
261
334
262
- expect (symbolRange , StartsAtLine (0 ));
263
- expect (symbolRange , StartsAtCharacter (0 ));
335
+ expect (result.first.range , StartsAtLine (0 ));
336
+ expect (result.first.range , StartsAtCharacter (0 ));
264
337
265
- expect (symbolRange, EndsAtLine (2 ));
266
- expect (symbolRange, EndsAtCharacter (1 ));
338
+ expect (result.first.range, EndsAtLine (2 ));
339
+ expect (result.first.range, EndsAtCharacter (1 ));
340
+
341
+ expect (result.last.selectionRange, StartsAtLine (4 ));
342
+ expect (result.last.selectionRange, StartsAtCharacter (1 ));
343
+
344
+ expect (result.last.selectionRange, EndsAtLine (4 ));
345
+ expect (result.last.selectionRange, EndsAtCharacter (10 ));
346
+
347
+ expect (result.last.range, StartsAtLine (4 ));
348
+ expect (result.last.range, StartsAtCharacter (0 ));
349
+
350
+ expect (result.last.range, EndsAtLine (6 ));
351
+ expect (result.last.range, EndsAtCharacter (1 ));
267
352
});
268
353
269
354
test ('@keyframes' , () {
270
355
var document = fs.createDocument (r'''
271
356
@keyframes animation {
272
357
358
+ }
359
+
360
+ @keyframes spinner {
361
+
273
362
}
274
363
''' );
275
364
var result = ls.findDocumentSymbols (document);
276
- var nameRange = result.first.selectionRange;
277
- var symbolRange = result.first.range;
278
365
279
- expect (nameRange , StartsAtLine (0 ));
280
- expect (nameRange , StartsAtCharacter (11 ));
366
+ expect (result.first.selectionRange , StartsAtLine (0 ));
367
+ expect (result.first.selectionRange , StartsAtCharacter (11 ));
281
368
282
- expect (nameRange , EndsAtLine (0 ));
283
- expect (nameRange , EndsAtCharacter (20 ));
369
+ expect (result.first.selectionRange , EndsAtLine (0 ));
370
+ expect (result.first.selectionRange , EndsAtCharacter (20 ));
284
371
285
- expect (symbolRange, StartsAtLine (0 ));
286
- expect (symbolRange, StartsAtCharacter (0 ));
372
+ expect (result.first.range, StartsAtLine (0 ));
373
+ expect (result.first.range, StartsAtCharacter (0 ));
374
+
375
+ expect (result.first.range, EndsAtLine (2 ));
376
+ expect (result.first.range, EndsAtCharacter (1 ));
377
+
378
+ expect (result.last.selectionRange, StartsAtLine (4 ));
379
+ expect (result.last.selectionRange, StartsAtCharacter (11 ));
380
+
381
+ expect (result.last.selectionRange, EndsAtLine (4 ));
382
+ expect (result.last.selectionRange, EndsAtCharacter (18 ));
383
+
384
+ expect (result.last.range, StartsAtLine (4 ));
385
+ expect (result.last.range, StartsAtCharacter (0 ));
287
386
288
- expect (symbolRange , EndsAtLine (2 ));
289
- expect (symbolRange , EndsAtCharacter (1 ));
387
+ expect (result.last.range , EndsAtLine (6 ));
388
+ expect (result.last.range , EndsAtCharacter (1 ));
290
389
});
291
390
});
292
391
}
0 commit comments