abl-tmlanguage 1.3.21 → 1.3.22

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ 1.3.22
2
+ ======
3
+
4
+ - ✨ Annotations with dotted names
5
+ - ✨ Include file names (UNC path, FQDN, multiple dots, ...)
6
+
1
7
  1.3.21
2
8
  ======
3
9
  - ✨ Safe navigation operator
@@ -1800,16 +1800,16 @@
1800
1800
  "annotation": {
1801
1801
  "patterns": [
1802
1802
  {
1803
- "include": "#annotation-simple"
1803
+ "include": "#annotation-attributes"
1804
1804
  },
1805
1805
  {
1806
- "include": "#annotation-attributes"
1806
+ "include": "#annotation-simple"
1807
1807
  }
1808
1808
  ]
1809
1809
  },
1810
1810
  "annotation-simple": {
1811
1811
  "name": "meta.declaration.annotation.abl",
1812
- "match": "(^|\\s*)(\\@[a-zA-Z_][a-zA-Z0-9_#$\\-%&]*)\\s*(?=\\.)",
1812
+ "match": "(^|\\s*)(\\@[a-zA-Z_][a-zA-Z0-9_#$\\-%&\\.]+)\\s*(?=\\.)",
1813
1813
  "captures": {
1814
1814
  "2": {
1815
1815
  "name": "entity.name.tag.abl"
@@ -1818,7 +1818,7 @@
1818
1818
  },
1819
1819
  "annotation-attributes": {
1820
1820
  "name": "meta.declaration.annotation.abl",
1821
- "begin": "(^|\\s+)(\\@[a-zA-Z_][a-zA-Z0-9_#$\\-%&]*)\\s*(?=\\()",
1821
+ "begin": "(^|\\s+)(\\@[a-zA-Z_][a-zA-Z0-9_#$\\-%&\\.]*)\\s*(?=\\()",
1822
1822
  "beginCaptures": {
1823
1823
  "2": {
1824
1824
  "name": "entity.name.tag.abl"
@@ -3902,18 +3902,23 @@
3902
3902
  },
3903
3903
  "include-file": {
3904
3904
  "name": "meta.include.abl",
3905
- "comment": "https://docs.progress.com/bundle/abl-reference/page/Include-file-reference.html. Filesystem names can be unicode",
3906
- "begin": "({)\\s*(['\"]?([\\\\\\/\\w$\\-\\.]+)(\\.\\w+['\"]?)?)",
3907
- "beginCaptures": {
3905
+ "comment": "https://docs.progress.com/bundle/abl-reference/page/Include-file-reference.html. Filesystem names can be unicode",
3906
+ "begin": "({)\\s*(?!&)(([\"]?)([\\\\\/\\w$\\-\\.]+)([\"]?))",
3907
+ "beginCaptures": {
3908
3908
  "1": {
3909
3909
  "name": "punctuation.section.abl"
3910
3910
  },
3911
- "2": {
3912
- "name": "entity.name.include.abl",
3913
- "comment": "The include name may be quoted"
3911
+ "3": {
3912
+ "name": "punctuation.definition.string.begin.abl"
3913
+ },
3914
+ "4": {
3915
+ "name": "entity.name.include.abl"
3916
+ },
3917
+ "5": {
3918
+ "name": "punctuation.definition.string.end.abl"
3914
3919
  }
3915
3920
  },
3916
- "end": "\\s*(})\\s*",
3921
+ "end": "\\s*(\\s*})\\s*",
3917
3922
  "endCaptures": {
3918
3923
  "1": {
3919
3924
  "name": "punctuation.section.abl"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abl-tmlanguage",
3
- "version": "1.3.21",
3
+ "version": "1.3.22",
4
4
  "description": "TextMate grammar for Progress OpenEdge ABL Language",
5
5
  "main": "",
6
6
  "type": "commonjs",
@@ -207,7 +207,6 @@ describe('', () => {
207
207
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
208
208
  })
209
209
 
210
-
211
210
  describe('', () => {
212
211
  let statement = `@AnnotationName(attrib1="class-tag,store",
213
212
  attrib2="bob").`;
@@ -235,3 +234,133 @@ describe('', () => {
235
234
  ];
236
235
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
237
236
  })
237
+
238
+ describe('', () => {
239
+ let statement = ` @openapi.openedge.export(type="REST", useReturnValue="false", writeDataSetBeforeImage="true").
240
+ @progress.service.resourceMapping(type="REST", operation="read", URI="?filter=~{filter~}", alias="", mediaType="application/json").
241
+ @openapi.openedge.single.
242
+ @openapi.openedge.method.property (name="mappingType", value="JFP").
243
+ @openapi.openedge.method.property (name="capabilities", value="ablFilter,top,skip,id,orderBy").
244
+ @openapi.openedge.single.`;
245
+ let expectedTokens = [
246
+ [
247
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
248
+ { "startIndex": 4, "endIndex": 28, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.name.tag.abl"] }, // '@openapi.openedge.export'
249
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // '('
250
+ { "startIndex": 29, "endIndex": 33, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'type'
251
+ { "startIndex": 33, "endIndex": 34, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
252
+ { "startIndex": 34, "endIndex": 35, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
253
+ { "startIndex": 35, "endIndex": 39, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'REST'
254
+ { "startIndex": 39, "endIndex": 40, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
255
+ { "startIndex": 40, "endIndex": 41, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
256
+ { "startIndex": 41, "endIndex": 42, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
257
+ { "startIndex": 42, "endIndex": 56, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'useReturnValue'
258
+ { "startIndex": 56, "endIndex": 57, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
259
+ { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
260
+ { "startIndex": 58, "endIndex": 63, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'false'
261
+ { "startIndex": 63, "endIndex": 64, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
262
+ { "startIndex": 64, "endIndex": 65, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
263
+ { "startIndex": 65, "endIndex": 66, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
264
+ { "startIndex": 66, "endIndex": 89, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'writeDataSetBeforeImage'
265
+ { "startIndex": 89, "endIndex": 90, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
266
+ { "startIndex": 90, "endIndex": 91, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
267
+ { "startIndex": 91, "endIndex": 95, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'true'
268
+ { "startIndex": 95, "endIndex": 96, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
269
+ { "startIndex": 96, "endIndex": 97, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // ')'
270
+ { "startIndex": 97, "endIndex": 98, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
271
+ ],
272
+ [
273
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
274
+ { "startIndex": 4, "endIndex": 37, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.name.tag.abl"] }, // '@progress.service.resourceMapping'
275
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // '('
276
+ { "startIndex": 38, "endIndex": 42, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'type'
277
+ { "startIndex": 42, "endIndex": 43, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
278
+ { "startIndex": 43, "endIndex": 44, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
279
+ { "startIndex": 44, "endIndex": 48, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'REST'
280
+ { "startIndex": 48, "endIndex": 49, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
281
+ { "startIndex": 49, "endIndex": 50, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
282
+ { "startIndex": 50, "endIndex": 51, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
283
+ { "startIndex": 51, "endIndex": 60, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'operation'
284
+ { "startIndex": 60, "endIndex": 61, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
285
+ { "startIndex": 61, "endIndex": 62, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
286
+ { "startIndex": 62, "endIndex": 66, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'read'
287
+ { "startIndex": 66, "endIndex": 67, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
288
+ { "startIndex": 67, "endIndex": 68, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
289
+ { "startIndex": 68, "endIndex": 69, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
290
+ { "startIndex": 69, "endIndex": 72, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'URI'
291
+ { "startIndex": 72, "endIndex": 73, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
292
+ { "startIndex": 73, "endIndex": 74, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
293
+ { "startIndex": 74, "endIndex": 82, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // '?filter='
294
+ { "startIndex": 82, "endIndex": 84, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "constant.character.escape.abl"] }, // '~{'
295
+ { "startIndex": 84, "endIndex": 90, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'filter'
296
+ { "startIndex": 90, "endIndex": 92, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "constant.character.escape.abl"] }, // '~}'
297
+ { "startIndex": 92, "endIndex": 93, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
298
+ { "startIndex": 93, "endIndex": 94, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
299
+ { "startIndex": 94, "endIndex": 95, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
300
+ { "startIndex": 95, "endIndex": 100, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'alias'
301
+ { "startIndex": 100, "endIndex": 101, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
302
+ { "startIndex": 101, "endIndex": 102, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
303
+ { "startIndex": 102, "endIndex": 103, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
304
+ { "startIndex": 103, "endIndex": 104, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
305
+ { "startIndex": 104, "endIndex": 105, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
306
+ { "startIndex": 105, "endIndex": 114, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'mediaType'
307
+ { "startIndex": 114, "endIndex": 115, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
308
+ { "startIndex": 115, "endIndex": 116, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
309
+ { "startIndex": 116, "endIndex": 132, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'application/json'
310
+ { "startIndex": 132, "endIndex": 133, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
311
+ { "startIndex": 133, "endIndex": 134, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // ')'
312
+ { "startIndex": 134, "endIndex": 135, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
313
+ ],
314
+ [
315
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
316
+ { "startIndex": 4, "endIndex": 28, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.name.tag.abl"] }, // '@openapi.openedge.single'
317
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
318
+ ],
319
+ [
320
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
321
+ { "startIndex": 4, "endIndex": 37, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.name.tag.abl"] }, // '@openapi.openedge.method.property'
322
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
323
+ { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // '('
324
+ { "startIndex": 39, "endIndex": 43, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'name'
325
+ { "startIndex": 43, "endIndex": 44, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
326
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
327
+ { "startIndex": 45, "endIndex": 56, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'mappingType'
328
+ { "startIndex": 56, "endIndex": 57, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
329
+ { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
330
+ { "startIndex": 58, "endIndex": 59, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
331
+ { "startIndex": 59, "endIndex": 64, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'value'
332
+ { "startIndex": 64, "endIndex": 65, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
333
+ { "startIndex": 65, "endIndex": 66, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
334
+ { "startIndex": 66, "endIndex": 69, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'JFP'
335
+ { "startIndex": 69, "endIndex": 70, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
336
+ { "startIndex": 70, "endIndex": 71, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // ')'
337
+ { "startIndex": 71, "endIndex": 72, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
338
+ ],
339
+ [
340
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
341
+ { "startIndex": 4, "endIndex": 37, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.name.tag.abl"] }, // '@openapi.openedge.method.property'
342
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
343
+ { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // '('
344
+ { "startIndex": 39, "endIndex": 43, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'name'
345
+ { "startIndex": 43, "endIndex": 44, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
346
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
347
+ { "startIndex": 45, "endIndex": 57, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'capabilities'
348
+ { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
349
+ { "startIndex": 58, "endIndex": 59, "scopes": ["source.abl", "meta.declaration.annotation.abl", "punctuation.separator.comma.abl"] }, // ','
350
+ { "startIndex": 59, "endIndex": 60, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
351
+ { "startIndex": 60, "endIndex": 65, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.other.attribute-name.abl"] }, // 'value'
352
+ { "startIndex": 65, "endIndex": 66, "scopes": ["source.abl", "meta.declaration.annotation.abl", "keyword.operator.source.abl"] }, // '='
353
+ { "startIndex": 66, "endIndex": 67, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
354
+ { "startIndex": 67, "endIndex": 96, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl"] }, // 'ablFilter,top,skip,id,orderBy'
355
+ { "startIndex": 96, "endIndex": 97, "scopes": ["source.abl", "meta.declaration.annotation.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
356
+ { "startIndex": 97, "endIndex": 98, "scopes": ["source.abl", "meta.declaration.annotation.abl", "meta.brace.round.js"] }, // ')'
357
+ { "startIndex": 98, "endIndex": 99, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
358
+ ],
359
+ [
360
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.declaration.annotation.abl"] }, // ' '
361
+ { "startIndex": 4, "endIndex": 28, "scopes": ["source.abl", "meta.declaration.annotation.abl", "entity.name.tag.abl"] }, // '@openapi.openedge.single'
362
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
363
+ ]
364
+ ];
365
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
366
+ })
@@ -248,3 +248,20 @@ describe('UNC path, FQDN, and multiple dots in the filename', () => {
248
248
  ];
249
249
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
250
250
  });
251
+
252
+ describe('UNC path, FQDN, and multiple dots in the quoted filename', () => {
253
+ // see: https://github.com/vscode-abl/vscode-abl/issues/362
254
+ let statement = `{"\\\\fileserver.corp.company.com\\shared\\data\\config.backup.2024.07.29.i" &DEBUG=TRUE}`;
255
+ let expectedTokens = [
256
+ { "startIndex": 0, "endIndex": 1, "scopes": ["source.abl", "meta.include.abl", "punctuation.section.abl"] }, // '{'
257
+ { "startIndex": 1, "endIndex": 2, "scopes": ["source.abl", "meta.include.abl", "punctuation.definition.string.begin.abl"] }, // '"'
258
+ { "startIndex": 2, "endIndex": 70, "scopes": ["source.abl", "meta.include.abl", "entity.name.include.abl"] }, // '\\fileserver.corp.company.com\shared\data\config.backup.2024.07.29.i'
259
+ { "startIndex": 70, "endIndex": 71, "scopes": ["source.abl", "meta.include.abl", "punctuation.definition.string.end.abl"] }, // '"'
260
+ { "startIndex": 71, "endIndex": 72, "scopes": ["source.abl", "meta.include.abl"] }, // ' '
261
+ { "startIndex": 72, "endIndex": 78, "scopes": ["source.abl", "meta.include.abl", "meta.include.argument.abl", "support.other.argument.abl"] }, // '&DEBUG'
262
+ { "startIndex": 78, "endIndex": 79, "scopes": ["source.abl", "meta.include.abl", "meta.include.argument.abl", "keyword.operator.source.abl"] }, // '='
263
+ { "startIndex": 79, "endIndex": 83, "scopes": ["source.abl", "meta.include.abl", "support.other.argument.abl"] }, // 'TRUE'
264
+ { "startIndex": 83, "endIndex": 84, "scopes": ["source.abl", "meta.include.abl", "punctuation.section.abl"] } // '}'
265
+ ];
266
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
267
+ });