abl-tmlanguage 1.3.13 → 1.3.15

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.
@@ -498,4 +498,93 @@ describe('', () => {
498
498
  ]
499
499
  ];
500
500
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
501
+ })
502
+
503
+ describe('', () => {
504
+ let statement = `define temp-table item no-undo
505
+ field id as decimal decimals 0 xml-data-type "integer" xml-node-type "ATTRIBUTE"
506
+ index idx1 as primary /*unique*/ CustomerCode
507
+ index idx2 as /*unique*/ CustKey
508
+ index idx3 as unique ObjectId.`;
509
+ let expectedTokens = [
510
+ [
511
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
512
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
513
+ { "startIndex": 7, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'temp-table'
514
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
515
+ { "startIndex": 18, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'item'
516
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
517
+ { "startIndex": 23, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] } // 'no-undo'
518
+ ],
519
+ [
520
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
521
+ { "startIndex": 3, "endIndex": 8, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'field'
522
+ { "startIndex": 8, "endIndex": 9, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
523
+ { "startIndex": 9, "endIndex": 11, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'id'
524
+ { "startIndex": 11, "endIndex": 12, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
525
+ { "startIndex": 12, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
526
+ { "startIndex": 14, "endIndex": 15, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
527
+ { "startIndex": 15, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "storage.type.abl"] }, // 'decimal'
528
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
529
+ { "startIndex": 23, "endIndex": 31, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'decimals'
530
+ { "startIndex": 31, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
531
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl", "constant.numeric.source.abl"] }, // '0'
532
+ { "startIndex": 33, "endIndex": 34, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
533
+ { "startIndex": 34, "endIndex": 47, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'xml-data-type'
534
+ { "startIndex": 47, "endIndex": 48, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
535
+ { "startIndex": 48, "endIndex": 49, "scopes": ["source.abl", "meta.define.abl", "string.double.complex.abl", "punctuation.definition.string.begin.abl"] }, // '"'
536
+ { "startIndex": 49, "endIndex": 56, "scopes": ["source.abl", "meta.define.abl", "string.double.complex.abl"] }, // 'integer'
537
+ { "startIndex": 56, "endIndex": 57, "scopes": ["source.abl", "meta.define.abl", "string.double.complex.abl", "punctuation.definition.string.end.abl"] }, // '"'
538
+ { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
539
+ { "startIndex": 58, "endIndex": 71, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'xml-node-type'
540
+ { "startIndex": 71, "endIndex": 72, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
541
+ { "startIndex": 72, "endIndex": 73, "scopes": ["source.abl", "meta.define.abl", "string.double.complex.abl", "punctuation.definition.string.begin.abl"] }, // '"'
542
+ { "startIndex": 73, "endIndex": 82, "scopes": ["source.abl", "meta.define.abl", "string.double.complex.abl"] }, // 'ATTRIBUTE'
543
+ { "startIndex": 82, "endIndex": 83, "scopes": ["source.abl", "meta.define.abl", "string.double.complex.abl", "punctuation.definition.string.end.abl"] } // '"'
544
+ ],
545
+ [
546
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
547
+ { "startIndex": 6, "endIndex": 11, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'index'
548
+ { "startIndex": 11, "endIndex": 12, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
549
+ { "startIndex": 12, "endIndex": 16, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'idx1'
550
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
551
+ { "startIndex": 17, "endIndex": 19, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
552
+ { "startIndex": 19, "endIndex": 20, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
553
+ { "startIndex": 20, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'primary'
554
+ { "startIndex": 27, "endIndex": 28, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
555
+ { "startIndex": 28, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl", "comment.block.source.abl"] }, // '/*'
556
+ { "startIndex": 30, "endIndex": 36, "scopes": ["source.abl", "meta.define.abl", "comment.block.source.abl", "comment"] }, // 'unique'
557
+ { "startIndex": 36, "endIndex": 38, "scopes": ["source.abl", "meta.define.abl", "comment.block.source.abl"] }, // '*/'
558
+ { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
559
+ { "startIndex": 39, "endIndex": 51, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] } // 'CustomerCode'
560
+ ],
561
+ [
562
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
563
+ { "startIndex": 4, "endIndex": 9, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'index'
564
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
565
+ { "startIndex": 10, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'idx2'
566
+ { "startIndex": 14, "endIndex": 15, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
567
+ { "startIndex": 15, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
568
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
569
+ { "startIndex": 18, "endIndex": 20, "scopes": ["source.abl", "meta.define.abl", "comment.block.source.abl"] }, // '/*'
570
+ { "startIndex": 20, "endIndex": 26, "scopes": ["source.abl", "meta.define.abl", "comment.block.source.abl", "comment"] }, // 'unique'
571
+ { "startIndex": 26, "endIndex": 28, "scopes": ["source.abl", "meta.define.abl", "comment.block.source.abl"] }, // '*/'
572
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
573
+ { "startIndex": 29, "endIndex": 36, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] } // 'CustKey'
574
+ ],
575
+ [
576
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
577
+ { "startIndex": 4, "endIndex": 9, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'index'
578
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
579
+ { "startIndex": 10, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'idx3'
580
+ { "startIndex": 14, "endIndex": 15, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
581
+ { "startIndex": 15, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
582
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
583
+ { "startIndex": 18, "endIndex": 24, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'unique'
584
+ { "startIndex": 24, "endIndex": 25, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
585
+ { "startIndex": 25, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'ObjectId'
586
+ { "startIndex": 33, "endIndex": 34, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
587
+ ]
588
+ ];
589
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
501
590
  })
@@ -373,3 +373,29 @@ describe('', () => {
373
373
  ]
374
374
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
375
375
  })
376
+
377
+ describe('', () => {
378
+ let statement = `var decimal pie = 22/3, piIsh = 3.1415927.`;
379
+ let expectedTokens = [
380
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'var'
381
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
382
+ { "startIndex": 4, "endIndex": 11, "scopes": ["source.abl", "meta.define.abl", "storage.type.abl"] }, // 'decimal'
383
+ { "startIndex": 11, "endIndex": 12, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
384
+ { "startIndex": 12, "endIndex": 15, "scopes": ["source.abl", "meta.define.abl", "variable.other.abl"] }, // 'pie'
385
+ { "startIndex": 15, "endIndex": 16, "scopes": ["source.abl"] }, // ' '
386
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
387
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl"] }, // ' '
388
+ { "startIndex": 18, "endIndex": 20, "scopes": ["source.abl", "constant.numeric.source.abl"] }, // '22'
389
+ { "startIndex": 20, "endIndex": 21, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '/'
390
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl", "constant.numeric.source.abl"] }, // '3'
391
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "punctuation.separator.comma.abl"] }, // ','
392
+ { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl"] }, // ' '
393
+ { "startIndex": 24, "endIndex": 29, "scopes": ["source.abl", "variable.other.abl"] }, // 'piIsh'
394
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl"] }, // ' '
395
+ { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
396
+ { "startIndex": 31, "endIndex": 32, "scopes": ["source.abl"] }, // ' '
397
+ { "startIndex": 32, "endIndex": 41, "scopes": ["source.abl", "constant.numeric.source.abl"] }, // '3.1415927'
398
+ { "startIndex": 41, "endIndex": 42, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
399
+ ]
400
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
401
+ })
@@ -222,3 +222,17 @@ describe('', () => {
222
222
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
223
223
  })
224
224
 
225
+ describe('UNC path, FQDN, and multiple dots in the filename', () => {
226
+ // see: https://github.com/vscode-abl/vscode-abl/issues/362
227
+ let statement = `{\\\\fileserver.corp.company.com\\shared\\data\\config.backup.2024.07.29.i &DEBUG=TRUE}`;
228
+ let expectedTokens = [
229
+ { "startIndex": 0, "endIndex": 1, "scopes": ["source.abl", "meta.include.abl", "punctuation.section.abl"] }, // '{'
230
+ { "startIndex": 1, "endIndex": 69, "scopes": ["source.abl", "meta.include.abl", "entity.name.include.abl"] }, // '\\fileserver.corp.company.com\shared\data\config.backup.2024.07.29.i'
231
+ { "startIndex": 69, "endIndex": 70, "scopes": ["source.abl", "meta.include.abl"] }, // ' '
232
+ { "startIndex": 70, "endIndex": 76, "scopes": ["source.abl", "meta.include.abl", "meta.include.argument.abl", "support.other.argument.abl"] }, // '&DEBUG'
233
+ { "startIndex": 76, "endIndex": 77, "scopes": ["source.abl", "meta.include.abl", "meta.include.argument.abl", "keyword.operator.source.abl"] }, // '='
234
+ { "startIndex": 77, "endIndex": 81, "scopes": ["source.abl", "meta.include.abl", "support.other.argument.abl"] }, // 'TRUE'
235
+ { "startIndex": 81, "endIndex": 82, "scopes": ["source.abl", "meta.include.abl", "punctuation.section.abl"] } // '}'
236
+ ];
237
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
238
+ });
@@ -0,0 +1,126 @@
1
+ const { assert, expect } = require('chai');
2
+ const shared = require('../shared.js');
3
+
4
+ describe('', () => {
5
+ let statement =
6
+ `trigger procedure for write of {&file} old buffer old-{&file}.`;
7
+
8
+ let expectedTokens = [
9
+ { "startIndex": 0, "endIndex": 7, "scopes": ["source.abl", "keyword.other.abl"] }, // 'trigger'
10
+ { "startIndex": 7, "endIndex": 8, "scopes": ["source.abl"] }, // ' '
11
+ { "startIndex": 8, "endIndex": 17, "scopes": ["source.abl", "keyword.other.abl"] }, // 'procedure'
12
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl"] }, // ' '
13
+ { "startIndex": 18, "endIndex": 21, "scopes": ["source.abl", "keyword.other.abl"] }, // 'for'
14
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl"] }, // ' '
15
+ { "startIndex": 22, "endIndex": 27, "scopes": ["source.abl", "keyword.other.abl"] }, // 'write'
16
+ { "startIndex": 27, "endIndex": 28, "scopes": ["source.abl"] }, // ' '
17
+ { "startIndex": 28, "endIndex": 30, "scopes": ["source.abl", "keyword.other.abl"] }, // 'of'
18
+ { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl"] }, // ' '
19
+ { "startIndex": 31, "endIndex": 38, "scopes": ["source.abl", "storage.type.function.abl"] }, // '{&file}'
20
+ { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl"] }, // ' '
21
+ { "startIndex": 39, "endIndex": 42, "scopes": ["source.abl", "keyword.other.abl"] }, // 'old'
22
+ { "startIndex": 42, "endIndex": 43, "scopes": ["source.abl"] }, // ' '
23
+ { "startIndex": 43, "endIndex": 49, "scopes": ["source.abl", "keyword.other.abl"] }, // 'buffer'
24
+ { "startIndex": 49, "endIndex": 50, "scopes": ["source.abl"] }, // ' '
25
+ { "startIndex": 50, "endIndex": 54, "scopes": ["source.abl", "storage.data.table.abl"] }, // 'old-'
26
+ { "startIndex": 54, "endIndex": 61, "scopes": ["source.abl", "storage.type.function.abl"] }, // '{&file}'
27
+ { "startIndex": 61, "endIndex": 62, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
28
+ ];
29
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
30
+ })
31
+
32
+ describe('', () => {
33
+ let statement =
34
+ `TRIGGER PROCEDURE FOR ASSIGN OF Customer.NAME.`;
35
+
36
+ let expectedTokens = [
37
+ { "startIndex": 0, "endIndex": 7, "scopes": ["source.abl", "keyword.other.abl"] }, // 'TRIGGER'
38
+ { "startIndex": 7, "endIndex": 8, "scopes": ["source.abl"] }, // ' '
39
+ { "startIndex": 8, "endIndex": 17, "scopes": ["source.abl", "keyword.other.abl"] }, // 'PROCEDURE'
40
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl"] }, // ' '
41
+ { "startIndex": 18, "endIndex": 21, "scopes": ["source.abl", "keyword.other.abl"] }, // 'FOR'
42
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl"] }, // ' '
43
+ { "startIndex": 22, "endIndex": 28, "scopes": ["source.abl", "keyword.other.abl"] }, // 'ASSIGN'
44
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl"] }, // ' '
45
+ { "startIndex": 29, "endIndex": 31, "scopes": ["source.abl", "keyword.other.abl"] }, // 'OF'
46
+ { "startIndex": 31, "endIndex": 32, "scopes": ["source.abl"] }, // ' '
47
+ { "startIndex": 32, "endIndex": 45, "scopes": ["source.abl", "storage.data.table.abl"] }, // 'Customer.NAME'
48
+ { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
49
+ ];
50
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
51
+ })
52
+
53
+ describe('', () => {
54
+ let statement =
55
+ `TRIGGER PROCEDURE FOR ASSIGN NEW VALUE value1 AS CHARACTER.`;
56
+
57
+ let expectedTokens = [
58
+ { "startIndex": 0, "endIndex": 7, "scopes": ["source.abl", "keyword.other.abl"] }, // 'TRIGGER'
59
+ { "startIndex": 7, "endIndex": 8, "scopes": ["source.abl"] }, // ' '
60
+ { "startIndex": 8, "endIndex": 17, "scopes": ["source.abl", "keyword.other.abl"] }, // 'PROCEDURE'
61
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl"] }, // ' '
62
+ { "startIndex": 18, "endIndex": 21, "scopes": ["source.abl", "keyword.other.abl"] }, // 'FOR'
63
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl"] }, // ' '
64
+ { "startIndex": 22, "endIndex": 28, "scopes": ["source.abl", "keyword.other.abl"] }, // 'ASSIGN'
65
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl"] }, // ' '
66
+ { "startIndex": 29, "endIndex": 32, "scopes": ["source.abl", "keyword.other.abl"] }, // 'NEW'
67
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl"] }, // ' '
68
+ { "startIndex": 33, "endIndex": 38, "scopes": ["source.abl", "keyword.other.abl"] }, // 'VALUE'
69
+ { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl"] }, // ' '
70
+ { "startIndex": 39, "endIndex": 45, "scopes": ["source.abl", "variable.other.abl"] }, // 'value1'
71
+ { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl"] }, // ' '
72
+ { "startIndex": 46, "endIndex": 48, "scopes": ["source.abl", "keyword.other.abl"] }, // 'AS'
73
+ { "startIndex": 48, "endIndex": 49, "scopes": ["source.abl"] }, // ' '
74
+ { "startIndex": 49, "endIndex": 58, "scopes": ["source.abl", "storage.type.abl"] }, // 'CHARACTER'
75
+ { "startIndex": 58, "endIndex": 59, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
76
+ ];
77
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
78
+ })
79
+
80
+ describe('', () => {
81
+ let statement =
82
+ `TRIGGER PROCEDURE FOR ASSIGN OF table1.field1
83
+ NEW VALUE newText LIKE table1.field1
84
+ oLD VALUE oldText LIKE table1.field1 .`;
85
+
86
+ let expectedTokens = [
87
+ [
88
+ { "startIndex": 0, "endIndex": 7, "scopes": ["source.abl", "keyword.other.abl"] }, // 'TRIGGER'
89
+ { "startIndex": 7, "endIndex": 8, "scopes": ["source.abl"] }, // ' '
90
+ { "startIndex": 8, "endIndex": 17, "scopes": ["source.abl", "keyword.other.abl"] }, // 'PROCEDURE'
91
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl"] }, // ' '
92
+ { "startIndex": 18, "endIndex": 21, "scopes": ["source.abl", "keyword.other.abl"] }, // 'FOR'
93
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl"] }, // ' '
94
+ { "startIndex": 22, "endIndex": 28, "scopes": ["source.abl", "keyword.other.abl"] }, // 'ASSIGN'
95
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl"] }, // ' '
96
+ { "startIndex": 29, "endIndex": 31, "scopes": ["source.abl", "keyword.other.abl"] }, // 'OF'
97
+ { "startIndex": 31, "endIndex": 32, "scopes": ["source.abl"] }, // ' '
98
+ { "startIndex": 32, "endIndex": 45, "scopes": ["source.abl", "storage.data.table.abl"] } // 'table1.field1'
99
+ ],
100
+ [
101
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "keyword.other.abl"] }, // 'NEW'
102
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
103
+ { "startIndex": 4, "endIndex": 9, "scopes": ["source.abl", "keyword.other.abl"] }, // 'VALUE'
104
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl"] }, // ' '
105
+ { "startIndex": 10, "endIndex": 17, "scopes": ["source.abl", "variable.other.abl"] }, // 'newText'
106
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl"] }, // ' '
107
+ { "startIndex": 18, "endIndex": 22, "scopes": ["source.abl", "keyword.other.abl"] }, // 'LIKE'
108
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl"] }, // ' '
109
+ { "startIndex": 23, "endIndex": 36, "scopes": ["source.abl", "storage.data.table.abl"] } // 'table1.field1'
110
+ ],
111
+ [
112
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "keyword.other.abl"] }, // 'oLD'
113
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
114
+ { "startIndex": 4, "endIndex": 9, "scopes": ["source.abl", "keyword.other.abl"] }, // 'VALUE'
115
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl"] }, // ' '
116
+ { "startIndex": 10, "endIndex": 17, "scopes": ["source.abl", "variable.other.abl"] }, // 'oldText'
117
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl"] }, // ' '
118
+ { "startIndex": 18, "endIndex": 22, "scopes": ["source.abl", "keyword.other.abl"] }, // 'LIKE'
119
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl"] }, // ' '
120
+ { "startIndex": 23, "endIndex": 36, "scopes": ["source.abl", "storage.data.table.abl"] }, // 'table1.field1'
121
+ { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl"] }, // ' '
122
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
123
+ ]
124
+ ];
125
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
126
+ })
@@ -54,11 +54,11 @@ describe('', () => {
54
54
  let expectedTokens = [
55
55
  { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl"] }, // ' '
56
56
  { "startIndex": 3, "endIndex": 6, "scopes": ["source.abl", "keyword.other.abl"] }, // 'run'
57
- { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
57
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl"] }, // ' '
58
58
  { "startIndex": 7, "endIndex": 12, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'value'
59
59
  { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
60
60
  { "startIndex": 13, "endIndex": 22, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'cPriogram'
61
- { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'ss
61
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
62
62
  { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
63
63
  ];
64
64
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
@@ -98,7 +98,9 @@ describe('', () => {
98
98
  { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl"] }, // ' '
99
99
  { "startIndex": 3, "endIndex": 6, "scopes": ["source.abl", "keyword.other.abl"] }, // 'run'
100
100
  { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl"] }, // ' '
101
- { "startIndex": 7, "endIndex": 20, "scopes": ["source.abl", "entity.name.procedure.abl"] }, // '"a/program.p"'
101
+ { "startIndex": 7, "endIndex": 8, "scopes": ["source.abl", "string.double.complex.abl", "punctuation.definition.string.begin.abl"] }, // '"'
102
+ { "startIndex": 8, "endIndex": 19, "scopes": ["source.abl", "string.double.complex.abl"] }, // 'a/program.p'
103
+ { "startIndex": 19, "endIndex": 20, "scopes": ["source.abl", "string.double.complex.abl", "punctuation.definition.string.end.abl"] }, // '"'
102
104
  { "startIndex": 20, "endIndex": 21, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
103
105
  ];
104
106
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
@@ -195,7 +197,9 @@ describe('', () => {
195
197
  let expectedTokens = [
196
198
  { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "keyword.other.abl"] }, // 'run'
197
199
  { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
198
- { "startIndex": 4, "endIndex": 38, "scopes": ["source.abl", "entity.name.procedure.abl"] }, // '"$SYSSYS/P/TestServerSockAppSrv.p"'
200
+ { "startIndex": 4, "endIndex": 5, "scopes": ["source.abl", "string.double.complex.abl", "punctuation.definition.string.begin.abl"] }, // '"'
201
+ { "startIndex": 5, "endIndex": 37, "scopes": ["source.abl", "string.double.complex.abl"] }, // '$SYSSYS/P/TestServerSockAppSrv.p'
202
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "string.double.complex.abl", "punctuation.definition.string.end.abl"] }, // '"'
199
203
  { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
200
204
  { "startIndex": 39, "endIndex": 44, "scopes": ["source.abl", "meta.function.arguments.abl", "constant.numeric.source.abl"] }, // '31000'
201
205
  { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
@@ -210,7 +214,9 @@ describe('', () => {
210
214
  let expectedTokens = [
211
215
  { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "keyword.other.abl"] }, // 'run'
212
216
  { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
213
- { "startIndex": 4, "endIndex": 38, "scopes": ["source.abl", "entity.name.procedure.abl"] }, // ''$SYSSYS/P/TestServerSockAppSrv.p''
217
+ { "startIndex": 4, "endIndex": 5, "scopes": ["source.abl", "string.single.complex.abl", "punctuation.definition.string.begin.abl"] }, // '''
218
+ { "startIndex": 5, "endIndex": 37, "scopes": ["source.abl", "string.single.complex.abl"] }, // '$SYSSYS/P/TestServerSockAppSrv.p'
219
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "string.single.complex.abl", "punctuation.definition.string.end.abl"] }, // '''
214
220
  { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl"] }, // ' '
215
221
  { "startIndex": 39, "endIndex": 40, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
216
222
  { "startIndex": 40, "endIndex": 45, "scopes": ["source.abl", "meta.function.arguments.abl", "constant.numeric.source.abl"] }, // '31000'
@@ -225,7 +231,7 @@ describe('', () => {
225
231
 
226
232
  let expectedTokens = [
227
233
  { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "keyword.other.abl"] }, // 'run'
228
- { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
234
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
229
235
  { "startIndex": 4, "endIndex": 9, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'value'
230
236
  { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
231
237
  { "startIndex": 10, "endIndex": 16, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'SYSSYS'
@@ -285,3 +291,37 @@ describe('', () => {
285
291
  ];
286
292
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
287
293
  })
294
+
295
+ describe('', () => {
296
+ let statement = `RUN {&rhdr}brslsag3.p{&rtrl} .`;
297
+
298
+ let expectedTokens = [
299
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "keyword.other.abl"] }, // 'RUN'
300
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
301
+ { "startIndex": 4, "endIndex": 11, "scopes": ["source.abl", "support.other.argument.abl"] }, // '{&rhdr}'
302
+ { "startIndex": 11, "endIndex": 21, "scopes": ["source.abl", "entity.name.procedure.abl"] }, // 'brslsag3.p'
303
+ { "startIndex": 21, "endIndex": 28, "scopes": ["source.abl", "support.other.argument.abl"] }, // '{&rtrl}'
304
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl"] }, // ' '
305
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
306
+ ];
307
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
308
+ })
309
+
310
+ describe('', () => {
311
+ let statement = `RUN /*debug remove / path */ {&rhdr}brslsag3.p{&rtrl} .`;
312
+
313
+ let expectedTokens = [
314
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "keyword.other.abl"] }, // 'RUN'
315
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
316
+ { "startIndex": 4, "endIndex": 6, "scopes": ["source.abl", "comment.block.source.abl"] }, // '/*'
317
+ { "startIndex": 6, "endIndex": 26, "scopes": ["source.abl", "comment.block.source.abl", "comment"] }, // 'debug remove / path '
318
+ { "startIndex": 26, "endIndex": 28, "scopes": ["source.abl", "comment.block.source.abl"] }, // '*/'
319
+ { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl"] }, // ' '
320
+ { "startIndex": 29, "endIndex": 36, "scopes": ["source.abl", "support.other.argument.abl"] }, // '{&rhdr}'
321
+ { "startIndex": 36, "endIndex": 46, "scopes": ["source.abl", "entity.name.procedure.abl"] }, // 'brslsag3.p'
322
+ { "startIndex": 46, "endIndex": 53, "scopes": ["source.abl", "support.other.argument.abl"] }, // '{&rtrl}'
323
+ { "startIndex": 53, "endIndex": 54, "scopes": ["source.abl"] }, // ' '
324
+ { "startIndex": 54, "endIndex": 55, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
325
+ ];
326
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
327
+ })
@@ -195,7 +195,7 @@ describe('', () => {
195
195
  { "startIndex": 16, "endIndex": 26, "scopes": ["source.abl", "meta.define.abl", "variable.other.abl"] }, // 'ListString'
196
196
  { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
197
197
  { "startIndex": 27, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
198
- { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
198
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl"] }, // ' '
199
199
  { "startIndex": 30, "endIndex": 55, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'Progress.Collections.List'
200
200
  { "startIndex": 55, "endIndex": 56, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "punctuation.definition.generic.begin.abl"] }, // '<'
201
201
  { "startIndex": 56, "endIndex": 62, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'String'
@@ -219,7 +219,7 @@ describe('', () => {
219
219
  { "startIndex": 16, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl", "variable.other.abl"] }, // 'strList'
220
220
  { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
221
221
  { "startIndex": 24, "endIndex": 26, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
222
- { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
222
+ { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl"] }, // ' '
223
223
  { "startIndex": 27, "endIndex": 52, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'Progress.Collections.List'
224
224
  { "startIndex": 52, "endIndex": 53, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "punctuation.definition.generic.begin.abl"] }, // '<'
225
225
  { "startIndex": 53, "endIndex": 59, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'String'
@@ -237,7 +237,7 @@ describe('', () => {
237
237
  { "startIndex": 18, "endIndex": 26, "scopes": ["source.abl", "meta.define.abl", "variable.other.abl"] }, // 'strList2'
238
238
  { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
239
239
  { "startIndex": 27, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
240
- { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
240
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl"] }, // ' '
241
241
  { "startIndex": 30, "endIndex": 55, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'Progress.Collections.List'
242
242
  { "startIndex": 55, "endIndex": 56, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "punctuation.definition.generic.begin.abl"] }, // '<'
243
243
  { "startIndex": 56, "endIndex": 62, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'String'
@@ -264,7 +264,7 @@ describe('', () => {
264
264
  { "startIndex": 16, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl", "variable.other.abl"] }, // 'strList'
265
265
  { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
266
266
  { "startIndex": 24, "endIndex": 26, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
267
- { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
267
+ { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl"] }, // ' '
268
268
  { "startIndex": 27, "endIndex": 40, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'Franwork.List'
269
269
  { "startIndex": 40, "endIndex": 41, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "punctuation.definition.generic.begin.abl"] }, // '<'
270
270
  { "startIndex": 41, "endIndex": 47, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'String'
@@ -282,7 +282,7 @@ describe('', () => {
282
282
  { "startIndex": 18, "endIndex": 26, "scopes": ["source.abl", "meta.define.abl", "variable.other.abl"] }, // 'strList2'
283
283
  { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
284
284
  { "startIndex": 27, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
285
- { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
285
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl"] }, // ' '
286
286
  { "startIndex": 30, "endIndex": 34, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'List'
287
287
  { "startIndex": 34, "endIndex": 35, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "punctuation.definition.generic.begin.abl"] }, // '<'
288
288
  { "startIndex": 35, "endIndex": 41, "scopes": ["source.abl", "meta.define.abl", "meta.generic.abl", "entity.name.type.abl"] }, // 'String'