abl-tmlanguage 1.3.26 → 1.3.28

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 (63) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +2 -1
  3. package/abl.tmLanguage.json +291 -112
  4. package/index.mjs +109 -11
  5. package/package.json +1 -1
  6. package/spec/blocks/block-options.spec.js +16 -16
  7. package/spec/blocks/finally-blocks.spec.js +5 -5
  8. package/spec/comments/comment-in-block-statement.spec.js +1 -1
  9. package/spec/comments/comment-in-for-each.spec.js +5 -5
  10. package/spec/comments/vscode-abl-issue#127.spec.js +20 -20
  11. package/spec/db-table-and-field/buffer-copy.spec.js +22 -22
  12. package/spec/db-table-and-field/create-alias.spec.js +39 -38
  13. package/spec/db-table-and-field/double-colon-access.spec.js +154 -0
  14. package/spec/db-table-and-field/field-in-function.spec.js +25 -25
  15. package/spec/db-table-and-field/fields-except.spec.js +1 -2
  16. package/spec/db-table-and-field/foreach.spec.js +6 -6
  17. package/spec/db-table-and-field/issue#88.spec.js +5 -4
  18. package/spec/db-table-and-field/new-record.spec.js +9 -9
  19. package/spec/db-table-and-field/query-get.spec.js +137 -0
  20. package/spec/define-buffer/create-buffer.spec.js +57 -0
  21. package/spec/define-frame/issue#173.spec.js +16 -16
  22. package/spec/define-property/property-getter.spec.js +8 -103
  23. package/spec/define-variable/simple-single-line.spec.js +1 -1
  24. package/spec/define-variable/var-statement.spec.js +21 -21
  25. package/spec/do/do-blocks.spec.js +22 -22
  26. package/spec/do/stop-after.spec.js +1 -1
  27. package/spec/function-call/can-find.spec.js +12 -12
  28. package/spec/function-call/include-in-argument.spec.js +120 -0
  29. package/spec/function-call/misc-abl-functions.spec.js +9 -9
  30. package/spec/function-call/nested-functions.spec.js +124 -124
  31. package/spec/function-call/vscode-abl-issue#19.spec.js +14 -14
  32. package/spec/function-definition/vscode-abl-issue#166.spec.js +1 -1
  33. package/spec/input-output/input-from.spec.js +116 -116
  34. package/spec/input-output/output-to.spec.js +105 -105
  35. package/spec/method-attribute-property-call/get-set-method-name.spec.js +1 -2
  36. package/spec/method-attribute-property-call/method-call.spec.js +1 -1
  37. package/spec/method-attribute-property-call/nested-property-call.spec.js +8 -25
  38. package/spec/method-attribute-property-call/unqualified-method-call.spec.js +27 -27
  39. package/spec/method-definition/constructor.spec.js +5 -5
  40. package/spec/misc-statements/class-in-var-name.spec.js +22 -22
  41. package/spec/misc-statements/copy-lob.spec.js +11 -4
  42. package/spec/misc-statements/do-in-name.spec.js +5 -5
  43. package/spec/misc-statements/guid.spec.js +10 -10
  44. package/spec/misc-statements/if-then.spec.js +38 -38
  45. package/spec/misc-statements/record-buffer-functions.spec.js +5 -5
  46. package/spec/misc-statements/return-statement.spec.js +15 -15
  47. package/spec/misc-statements/skip-statement-and-fuction.spec.js +6 -6
  48. package/spec/misc-statements/system-handles.spec.js +17 -3
  49. package/spec/numbers/scientific-notation.spec.js +7 -7
  50. package/spec/operators/operators.spec.js +6 -6
  51. package/spec/preprocesors/proparse-preprocessor.spec.js +7 -7
  52. package/spec/run-statement/run-statement.spec.js +30 -133
  53. package/spec/strings/translation-attribute.spec.js +7 -7
  54. package/spec/strings/vscode-abl-issue#11.spec.js +0 -53
  55. package/spec/strings/vscode-abl-issue#28.spec.js +16 -16
  56. package/spec/type-name/argument.spec.js +6 -7
  57. package/spec/type-name/define-property.spec.js +1 -1
  58. package/spec/type-name/define-temp-table.spec.js +4 -4
  59. package/spec/type-name/define-variable-property.spec.js +1 -1
  60. package/spec/type-name/define-variable.spec.js +1 -1
  61. package/spec/type-name/new.spec.js +8 -8
  62. package/spec/type-name/parameter-as.spec.js +50 -1
  63. package/spec/type-name/type-name.spec.js +20 -20
package/index.mjs CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  import * as fs from 'node:fs';
15
15
  import * as readline from 'node:readline';
16
- import {optimize} from 'oniguruma-parser/optimizer';
16
+ import { optimize } from 'oniguruma-parser/optimizer';
17
17
 
18
18
  let lineReaderMethods = readline.createInterface({
19
19
  input: fs.createReadStream('abl-methods.txt')
@@ -125,6 +125,67 @@ alsoFunctions.push('substitute');
125
125
  alsoFunctions.push('this-object');
126
126
  alsoFunctions.push('value');
127
127
 
128
+ let noParameterFunctions = [];
129
+ noParameterFunctions.push('accum');
130
+ noParameterFunctions.push('ambiguous');
131
+ noParameterFunctions.push('available');
132
+ noParameterFunctions.push('current-changed');
133
+ noParameterFunctions.push('current-language');
134
+ noParameterFunctions.push('dataservers');
135
+ noParameterFunctions.push('dbname');
136
+ noParameterFunctions.push('entered');
137
+ noParameterFunctions.push('etime');
138
+ noParameterFunctions.push('frame-col');
139
+ noParameterFunctions.push('frame-db');
140
+ noParameterFunctions.push('frame-down');
141
+ noParameterFunctions.push('frame-field');
142
+ noParameterFunctions.push('frame-file');
143
+ noParameterFunctions.push('frame-index');
144
+ noParameterFunctions.push('frame-line');
145
+ noParameterFunctions.push('frame-name');
146
+ noParameterFunctions.push('frame-row');
147
+ noParameterFunctions.push('frame-value');
148
+ noParameterFunctions.push('gateways');
149
+ noParameterFunctions.push('generate-pbe-salt');
150
+ noParameterFunctions.push('generate-random-key');
151
+ noParameterFunctions.push('generate-uuid');
152
+ noParameterFunctions.push('get-codepages');
153
+ noParameterFunctions.push('go-pending');
154
+ noParameterFunctions.push('guid');
155
+ noParameterFunctions.push('input');
156
+ noParameterFunctions.push('is-attr-space');
157
+ noParameterFunctions.push('lastkey');
158
+ noParameterFunctions.push('line-counter');
159
+ noParameterFunctions.push('locked');
160
+ noParameterFunctions.push('message-lines');
161
+ noParameterFunctions.push('not entered');
162
+ noParameterFunctions.push('now');
163
+ noParameterFunctions.push('num-aliases');
164
+ noParameterFunctions.push('num-dbs');
165
+ noParameterFunctions.push('opsys');
166
+ noParameterFunctions.push('os-drives');
167
+ noParameterFunctions.push('os-error');
168
+ noParameterFunctions.push('page-number');
169
+ noParameterFunctions.push('page-size');
170
+ noParameterFunctions.push('proc-handle');
171
+ noParameterFunctions.push('proc-status');
172
+ noParameterFunctions.push('process-architecture');
173
+ noParameterFunctions.push('progress');
174
+ noParameterFunctions.push('promsgs');
175
+ noParameterFunctions.push('propath');
176
+ noParameterFunctions.push('proversion');
177
+ noParameterFunctions.push('retry');
178
+ noParameterFunctions.push('return');
179
+ noParameterFunctions.push('return-value');
180
+ noParameterFunctions.push('screen-lines');
181
+ noParameterFunctions.push('skip');
182
+ noParameterFunctions.push('super');
183
+ noParameterFunctions.push('terminal');
184
+ noParameterFunctions.push('time');
185
+ noParameterFunctions.push('today');
186
+ noParameterFunctions.push('transaction');
187
+ noParameterFunctions.push('userid');
188
+
128
189
  let alsoKeywords = [];
129
190
  alsoKeywords.push('get-collation'); //plural version as key
130
191
 
@@ -136,7 +197,7 @@ minKeywords.set('&scop', '&scoped-define');
136
197
  minKeywords.set('glob', 'global');
137
198
  minKeywords.set('var', 'variable');
138
199
 
139
- // This may holds the keyword names and their regex entries
200
+ // This holds the keyword names and their regex entries
140
201
  let keywordEntries = new Map();
141
202
  keywordEntries.set('logical', 'logical|logica|logic|logi|log|lo');
142
203
  keywordEntries.set('&global-define', '&global-define|&global-defin|&global-defi|&global-def|&global-de|&global-d|&global-|&global|&globa|&glob)');
@@ -180,6 +241,13 @@ lineReaderFunctions.on('line', line => {
180
241
  let results;
181
242
  line = line.toLowerCase();
182
243
 
244
+ // NOT ENTERED function is captured
245
+ // as NOT , which is an operator and not
246
+ // a function
247
+ if (line.startsWith("not entered")) {
248
+ return;
249
+ }
250
+
183
251
  if (!line.startsWith("#")) {
184
252
 
185
253
  let kw = line.split(' ');
@@ -188,8 +256,10 @@ lineReaderFunctions.on('line', line => {
188
256
  if (kw.includes('function') && !kw.includes('statement')) {
189
257
  let kwName = kw[0];
190
258
 
259
+
191
260
  // CAPS letter alphabet
192
261
  let charIdx = kwName.charCodeAt(0) - 97;
262
+
193
263
  if (!functionBlocks[charIdx].includes(kwName)) {
194
264
  functionBlocks[charIdx].push(kwName);
195
265
  }
@@ -266,14 +336,14 @@ function addToBlock(charIdx, fullKw, minKw, kwRegex) {
266
336
  if (!minKeywords.has(minKw)) {
267
337
  minKeywords.set(minKw, fullKw);
268
338
  }
269
- if (!keywordEntries.has(fullKw)) {
339
+ if (!keywordEntries.has(fullKw)) {
270
340
  keywordEntries.set(fullKw, kwRegex);
271
341
  }
272
342
 
273
343
  if (!attributeBlocks[charIdx].includes(fullKw) &&
274
- !methodBlocks[charIdx].includes(fullKw) &&
275
- !functionBlocks[charIdx].includes(fullKw) &&
276
- !keywordBlocks[charIdx].includes(fullKw)) {
344
+ !methodBlocks[charIdx].includes(fullKw) &&
345
+ !functionBlocks[charIdx].includes(fullKw) &&
346
+ !keywordBlocks[charIdx].includes(fullKw)) {
277
347
  keywordBlocks[charIdx].push(fullKw);
278
348
  }
279
349
 
@@ -284,7 +354,7 @@ function addToBlock(charIdx, fullKw, minKw, kwRegex) {
284
354
  }
285
355
 
286
356
  // Replaces full keywords in an array with the regexes, if any
287
- function replaceKeywordsWithRegex (kwArray) {
357
+ function replaceKeywordsWithRegex(kwArray) {
288
358
  let regexBlocks = [];
289
359
 
290
360
  for (var idx in kwArray) {
@@ -378,6 +448,14 @@ lineReaderFunctions.on('close', () => {
378
448
  }
379
449
 
380
450
  result['abl-functions'] = { patterns: [] }
451
+
452
+ // turn noParameterFunctions into an alphabetically-sorted array
453
+ let noParameterFunctionBlocks = [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []];
454
+ for (var zz = 0; zz < noParameterFunctions.length; zz++) {
455
+ let charIdx = noParameterFunctions[zz].charCodeAt(0) - 97;
456
+ noParameterFunctionBlocks[charIdx].push(noParameterFunctions[zz]);
457
+ }
458
+
381
459
  for (var zz = 0; zz < 26; zz++) {
382
460
 
383
461
  if (functionBlocks[zz].length > 0) {
@@ -385,12 +463,11 @@ lineReaderFunctions.on('close', () => {
385
463
 
386
464
  result['abl-functions-' + String.fromCharCode(97 + zz).toUpperCase()] =
387
465
  {
388
- name: "meta.function-call.abl",
389
466
  begin: "(?i)\\s*(" + replaceKeywordsWithRegex(functionBlocks[zz]) + ")\\s*(?=\\()",
390
467
  beginCaptures: {
391
- 1: {
392
- name: "support.function.abl"
393
- }
468
+ 1: {
469
+ name: "support.function.abl"
470
+ }
394
471
  },
395
472
  end: "(\\))",
396
473
  endCaptures: {
@@ -406,5 +483,26 @@ lineReaderFunctions.on('close', () => {
406
483
  }
407
484
  }
408
485
  }
486
+
487
+ //Add functions without parens
488
+ let npfb = [];
489
+ for (var zz = 0; zz < 26; zz++) {
490
+ if (noParameterFunctionBlocks[zz].length > 0) {
491
+ npfb.push({
492
+ match: "(?i)\\b(" + replaceKeywordsWithRegex(noParameterFunctionBlocks[zz]) + ")(?!(\\.\\w+))(?=\\)|\\s|,|]|:|\\.)",
493
+ captures: {
494
+ 1: {
495
+ name: "support.function.abl"
496
+ }
497
+ }
498
+ });
499
+
500
+ }
501
+ }
502
+
503
+ result['abl-functions'].patterns.push({
504
+ comment: "ABL functions that can be called without parentheses. Some functions have optional arguments, some are never called with parens",
505
+ patterns: npfb});
506
+
409
507
  fs.writeFileSync(output, JSON.stringify(result, undefined, 4));
410
508
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abl-tmlanguage",
3
- "version": "1.3.26",
3
+ "version": "1.3.28",
4
4
  "description": "TextMate grammar for Progress OpenEdge ABL Language",
5
5
  "main": "",
6
6
  "type": "commonjs",
@@ -133,28 +133,28 @@ describe('', () => {
133
133
  { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl"] }, // ' '
134
134
  { "startIndex": 10, "endIndex": 15, "scopes": ["source.abl", "keyword.other.abl"] }, // 'throw'
135
135
  { "startIndex": 15, "endIndex": 16, "scopes": ["source.abl"] }, // ' '
136
- { "startIndex": 16, "endIndex": 19, "scopes": ["source.abl", "keyword.other.abl"] }, // 'new'
136
+ { "startIndex": 16, "endIndex": 19, "scopes": ["source.abl", "support.function.abl"] }, // 'new'
137
137
  { "startIndex": 19, "endIndex": 20, "scopes": ["source.abl"] }, // ' '
138
138
  { "startIndex": 20, "endIndex": 45, "scopes": ["source.abl", "entity.name.type.abl"] }, // 'ImportValidationException'
139
- { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
140
- { "startIndex": 46, "endIndex": 47, "scopes": ["source.abl", "meta.function.arguments.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
141
- { "startIndex": 47, "endIndex": 55, "scopes": ["source.abl", "meta.function.arguments.abl", "string.quoted.double.abl"] }, // 'custname'
142
- { "startIndex": 55, "endIndex": 56, "scopes": ["source.abl", "meta.function.arguments.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
143
- { "startIndex": 56, "endIndex": 57, "scopes": ["source.abl", "meta.function.arguments.abl", "punctuation.separator.comma.abl"] } // ','
139
+ { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "meta.brace.round.js"] }, // '('
140
+ { "startIndex": 46, "endIndex": 47, "scopes": ["source.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
141
+ { "startIndex": 47, "endIndex": 55, "scopes": ["source.abl", "string.quoted.double.abl"] }, // 'custname'
142
+ { "startIndex": 55, "endIndex": 56, "scopes": ["source.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
143
+ { "startIndex": 56, "endIndex": 57, "scopes": ["source.abl", "punctuation.separator.comma.abl"] } // ','
144
144
  ],
145
145
  [
146
- { "startIndex": 0, "endIndex": 48, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
147
- { "startIndex": 48, "endIndex": 65, "scopes": ["source.abl", "meta.function.arguments.abl", "storage.data.table.abl"] }, // 'pbAccount.CustKey'
148
- { "startIndex": 65, "endIndex": 66, "scopes": ["source.abl", "meta.function.arguments.abl", "punctuation.separator.comma.abl"] } // ','
146
+ { "startIndex": 0, "endIndex": 48, "scopes": ["source.abl"] }, // ' '
147
+ { "startIndex": 48, "endIndex": 65, "scopes": ["source.abl", "storage.data.table.abl"] }, // 'pbAccount.CustKey'
148
+ { "startIndex": 65, "endIndex": 66, "scopes": ["source.abl", "punctuation.separator.comma.abl"] } // ','
149
149
  ],
150
150
  [
151
- { "startIndex": 0, "endIndex": 48, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
152
- { "startIndex": 48, "endIndex": 72, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'SalesforceObjectTypeEnum'
153
- { "startIndex": 72, "endIndex": 73, "scopes": ["source.abl", "meta.function.arguments.abl", "punctuation.separator.colon.abl"] }, // ':'
154
- { "startIndex": 73, "endIndex": 80, "scopes": ["source.abl", "meta.function.arguments.abl", "entity.name.function.abl"] }, // 'Account'
155
- { "startIndex": 80, "endIndex": 81, "scopes": ["source.abl", "meta.function.arguments.abl", "punctuation.separator.colon.abl"] }, // ':'
156
- { "startIndex": 81, "endIndex": 89, "scopes": ["source.abl", "meta.function.arguments.abl", "entity.name.function.abl"] }, // 'ToString'
157
- { "startIndex": 89, "endIndex": 90, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
151
+ { "startIndex": 0, "endIndex": 48, "scopes": ["source.abl"] }, // ' '
152
+ { "startIndex": 48, "endIndex": 72, "scopes": ["source.abl", "variable.other.abl"] }, // 'SalesforceObjectTypeEnum'
153
+ { "startIndex": 72, "endIndex": 73, "scopes": ["source.abl", "punctuation.separator.colon.abl"] }, // ':'
154
+ { "startIndex": 73, "endIndex": 80, "scopes": ["source.abl", "entity.name.function.abl"] }, // 'Account'
155
+ { "startIndex": 80, "endIndex": 81, "scopes": ["source.abl", "punctuation.separator.colon.abl"] }, // ':'
156
+ { "startIndex": 81, "endIndex": 89, "scopes": ["source.abl", "entity.name.function.abl"] }, // 'ToString'
157
+ { "startIndex": 89, "endIndex": 90, "scopes": ["source.abl", "meta.brace.round.js"] }, // '('
158
158
  { "startIndex": 90, "endIndex": 91, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
159
159
  { "startIndex": 91, "endIndex": 92, "scopes": ["source.abl", "punctuation.separator.comma.abl"] } // ','
160
160
  ],
@@ -62,11 +62,11 @@ end finally.`;
62
62
  [
63
63
  { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl"] }, // ' '
64
64
  { "startIndex": 2, "endIndex": 4, "scopes": ["source.abl", "keyword.other.abl"] }, // 'if'
65
- { "startIndex": 4, "endIndex": 5, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
66
- { "startIndex": 5, "endIndex": 17, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'valid-object'
67
- { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
68
- { "startIndex": 18, "endIndex": 23, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'oMenu'
69
- { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
65
+ { "startIndex": 4, "endIndex": 5, "scopes": ["source.abl"] }, // ' '
66
+ { "startIndex": 5, "endIndex": 17, "scopes": ["source.abl", "support.function.abl"] }, // 'valid-object'
67
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
68
+ { "startIndex": 18, "endIndex": 23, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'oMenu'
69
+ { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
70
70
  { "startIndex": 24, "endIndex": 25, "scopes": ["source.abl"] }, // ' '
71
71
  { "startIndex": 25, "endIndex": 29, "scopes": ["source.abl", "keyword.other.abl"] }, // 'then'
72
72
  { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl"] }, // ' '
@@ -81,7 +81,7 @@ describe('', () => {
81
81
  { "startIndex": 63, "endIndex": 64, "scopes": ["source.abl", "meta.block.abl"] }, // ' '
82
82
  { "startIndex": 64, "endIndex": 69, "scopes": ["source.abl", "meta.block.abl", "keyword.other.abl"] }, // 'ERROR'
83
83
  { "startIndex": 69, "endIndex": 70, "scopes": ["source.abl", "meta.block.abl"] }, // ' '
84
- { "startIndex": 70, "endIndex": 73, "scopes": ["source.abl", "meta.block.abl", "keyword.other.abl"] }, // 'NEW'
84
+ { "startIndex": 70, "endIndex": 73, "scopes": ["source.abl", "meta.block.abl", "support.function.abl"] }, // 'NEW'
85
85
  { "startIndex": 73, "endIndex": 74, "scopes": ["source.abl", "meta.block.abl"] }, // ' '
86
86
  { "startIndex": 74, "endIndex": 96, "scopes": ["source.abl", "meta.block.abl", "entity.name.type.abl"] }, // 'StopConditionException'
87
87
  { "startIndex": 96, "endIndex": 97, "scopes": ["source.abl", "meta.block.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
@@ -46,11 +46,11 @@ describe('', () => {
46
46
  { "startIndex": 4, "endIndex": 20, "scopes": ["source.abl", "storage.data.table.abl"] }, // 'web-cart.web-key'
47
47
  { "startIndex": 20, "endIndex": 21, "scopes": ["source.abl"] }, // ' '
48
48
  { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
49
- { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
50
- { "startIndex": 23, "endIndex": 26, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'dec'
51
- { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
52
- { "startIndex": 27, "endIndex": 37, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'ip-web-key'
53
- { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
49
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl"] }, // ' '
50
+ { "startIndex": 23, "endIndex": 26, "scopes": ["source.abl", "support.function.abl"] }, // 'dec'
51
+ { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
52
+ { "startIndex": 27, "endIndex": 37, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'ip-web-key'
53
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
54
54
  { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl"] }, // ' '
55
55
  { "startIndex": 39, "endIndex": 42, "scopes": ["source.abl", "keyword.other.abl"] } // 'AND'
56
56
  ],
@@ -61,7 +61,7 @@ describe('', () => {
61
61
  ],
62
62
  [
63
63
  { "startIndex": 0, "endIndex": 10, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
64
- { "startIndex": 10, "endIndex": 16, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'return'
64
+ { "startIndex": 10, "endIndex": 16, "scopes": ["source.abl", "meta.define.abl", "support.function.abl"] }, // 'return'
65
65
  { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
66
66
  { "startIndex": 17, "endIndex": 27, "scopes": ["source.abl", "meta.define.abl", "variable.other.abl"] }, // 'mUTF8Value'
67
67
  { "startIndex": 27, "endIndex": 28, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
@@ -72,17 +72,17 @@ describe('', () => {
72
72
  ],
73
73
  [
74
74
  { "startIndex": 0, "endIndex": 10, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
75
- { "startIndex": 10, "endIndex": 16, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'return'
76
- { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl"] }, // ' '
77
- { "startIndex": 17, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "support.function.abl"] }, // 'codepage-convert'
78
- { "startIndex": 33, "endIndex": 34, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
79
- { "startIndex": 34, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'mUTF8Value'
80
- { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.function.arguments.abl", "punctuation.separator.comma.abl"] }, // ','
81
- { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.function.arguments.abl"] }, // ' '
82
- { "startIndex": 46, "endIndex": 57, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.language.abl"] }, // 'this-object'
83
- { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.function.arguments.abl", "punctuation.separator.colon.abl"] }, // ':'
84
- { "startIndex": 58, "endIndex": 66, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.function.arguments.abl", "entity.name.function.abl"] }, // 'Encoding'
85
- { "startIndex": 66, "endIndex": 67, "scopes": ["source.abl", "meta.define.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
75
+ { "startIndex": 10, "endIndex": 16, "scopes": ["source.abl", "meta.define.abl", "support.function.abl"] }, // 'return'
76
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
77
+ { "startIndex": 17, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl", "support.function.abl"] }, // 'codepage-convert'
78
+ { "startIndex": 33, "endIndex": 34, "scopes": ["source.abl", "meta.define.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
79
+ { "startIndex": 34, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'mUTF8Value'
80
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.define.abl", "meta.function.arguments.abl", "punctuation.separator.comma.abl"] }, // ','
81
+ { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "meta.define.abl", "meta.function.arguments.abl"] }, // ' '
82
+ { "startIndex": 46, "endIndex": 57, "scopes": ["source.abl", "meta.define.abl", "meta.function.arguments.abl", "variable.language.abl"] }, // 'this-object'
83
+ { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.define.abl", "meta.function.arguments.abl", "punctuation.separator.colon.abl"] }, // ':'
84
+ { "startIndex": 58, "endIndex": 66, "scopes": ["source.abl", "meta.define.abl", "meta.function.arguments.abl", "entity.name.function.abl"] }, // 'Encoding'
85
+ { "startIndex": 66, "endIndex": 67, "scopes": ["source.abl", "meta.define.abl", "meta.brace.round.js"] }, // ')'
86
86
  { "startIndex": 67, "endIndex": 68, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
87
87
  ],
88
88
  [
@@ -140,14 +140,14 @@ describe('', () => {
140
140
  { "startIndex": 13, "endIndex": 23, "scopes": ["source.abl", "variable.other.abl"] }, // 'mUTF8Value'
141
141
  { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl"] }, // ' '
142
142
  { "startIndex": 24, "endIndex": 25, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
143
- { "startIndex": 25, "endIndex": 26, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
144
- { "startIndex": 26, "endIndex": 36, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'right-trim'
145
- { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
146
- { "startIndex": 37, "endIndex": 46, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.function-call.abl", "support.function.abl"] }, // 'left-trim'
147
- { "startIndex": 46, "endIndex": 47, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
148
- { "startIndex": 47, "endIndex": 57, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'mUTF8Value'
149
- { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
150
- { "startIndex": 58, "endIndex": 59, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
143
+ { "startIndex": 25, "endIndex": 26, "scopes": ["source.abl"] }, // ' '
144
+ { "startIndex": 26, "endIndex": 36, "scopes": ["source.abl", "support.function.abl"] }, // 'right-trim'
145
+ { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
146
+ { "startIndex": 37, "endIndex": 46, "scopes": ["source.abl", "meta.function.arguments.abl", "support.function.abl"] }, // 'left-trim'
147
+ { "startIndex": 46, "endIndex": 47, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
148
+ { "startIndex": 47, "endIndex": 57, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'mUTF8Value'
149
+ { "startIndex": 57, "endIndex": 58, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // ')'
150
+ { "startIndex": 58, "endIndex": 59, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
151
151
  { "startIndex": 59, "endIndex": 60, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
152
152
  ],
153
153
  [
@@ -51,11 +51,11 @@ describe('', () => {
51
51
  { "startIndex": 23, "endIndex": 42, "scopes": ["source.abl", "storage.data.table.abl"] }, // 'ar-remit-from.state'
52
52
  { "startIndex": 42, "endIndex": 53, "scopes": ["source.abl"] }, // ' '
53
53
  { "startIndex": 53, "endIndex": 54, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
54
- { "startIndex": 54, "endIndex": 55, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
55
- { "startIndex": 55, "endIndex": 59, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'CAPS'
56
- { "startIndex": 59, "endIndex": 60, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
57
- { "startIndex": 60, "endIndex": 74, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "storage.data.table.abl"] }, // 'custname.state'
58
- { "startIndex": 74, "endIndex": 75, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
54
+ { "startIndex": 54, "endIndex": 55, "scopes": ["source.abl"] }, // ' '
55
+ { "startIndex": 55, "endIndex": 59, "scopes": ["source.abl", "support.function.abl"] }, // 'CAPS'
56
+ { "startIndex": 59, "endIndex": 60, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
57
+ { "startIndex": 60, "endIndex": 74, "scopes": ["source.abl", "meta.function.arguments.abl", "storage.data.table.abl"] }, // 'custname.state'
58
+ { "startIndex": 74, "endIndex": 75, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
59
59
  { "startIndex": 75, "endIndex": 76, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
60
60
  ]
61
61
  ];
@@ -100,13 +100,13 @@ EXCEPT f1 f4 af
100
100
  { "startIndex": 20, "endIndex": 30, "scopes": ["source.abl", "storage.data.table.abl"] }, // 'target.f23'
101
101
  { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl"] }, // ' '
102
102
  { "startIndex": 31, "endIndex": 32, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
103
- { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
104
- { "startIndex": 33, "endIndex": 37, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'caps'
105
- { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
106
- { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
107
- { "startIndex": 39, "endIndex": 42, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "string.quoted.double.abl"] }, // 'abf'
108
- { "startIndex": 42, "endIndex": 43, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
109
- { "startIndex": 43, "endIndex": 44, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] } // ')'
103
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl"] }, // ' '
104
+ { "startIndex": 33, "endIndex": 37, "scopes": ["source.abl", "support.function.abl"] }, // 'caps'
105
+ { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
106
+ { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl", "meta.function.arguments.abl", "string.quoted.double.abl", "punctuation.definition.string.begin.abl"] }, // '"'
107
+ { "startIndex": 39, "endIndex": 42, "scopes": ["source.abl", "meta.function.arguments.abl", "string.quoted.double.abl"] }, // 'abf'
108
+ { "startIndex": 42, "endIndex": 43, "scopes": ["source.abl", "meta.function.arguments.abl", "string.quoted.double.abl", "punctuation.definition.string.end.abl"] }, // '"'
109
+ { "startIndex": 43, "endIndex": 44, "scopes": ["source.abl", "meta.brace.round.js"] } // ')'
110
110
  ],
111
111
  [
112
112
  { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl"] }, // ' '
@@ -223,22 +223,22 @@ describe('', () => {
223
223
  { "startIndex": 16, "endIndex": 28, "scopes": ["source.abl", "storage.data.table.abl"] }, // '_TRG._pRECID'
224
224
  { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl"] }, // ' '
225
225
  { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
226
- { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
227
- { "startIndex": 31, "endIndex": 36, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'RECID'
228
- { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
229
- { "startIndex": 37, "endIndex": 39, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // '_P'
230
- { "startIndex": 39, "endIndex": 40, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] } // ')'
226
+ { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl"] }, // ' '
227
+ { "startIndex": 31, "endIndex": 36, "scopes": ["source.abl", "support.function.abl"] }, // 'RECID'
228
+ { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
229
+ { "startIndex": 37, "endIndex": 39, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // '_P'
230
+ { "startIndex": 39, "endIndex": 40, "scopes": ["source.abl", "meta.brace.round.js"] } // ')'
231
231
  ],
232
232
  [
233
233
  { "startIndex": 0, "endIndex": 16, "scopes": ["source.abl"] }, // ' '
234
234
  { "startIndex": 16, "endIndex": 28, "scopes": ["source.abl", "storage.data.table.abl"] }, // '_TRG._wRECID'
235
235
  { "startIndex": 28, "endIndex": 29, "scopes": ["source.abl"] }, // ' '
236
236
  { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "keyword.operator.source.abl"] }, // '='
237
- { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
238
- { "startIndex": 31, "endIndex": 36, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'RECID'
239
- { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
240
- { "startIndex": 37, "endIndex": 39, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // '_U'
241
- { "startIndex": 39, "endIndex": 40, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
237
+ { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl"] }, // ' '
238
+ { "startIndex": 31, "endIndex": 36, "scopes": ["source.abl", "support.function.abl"] }, // 'RECID'
239
+ { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
240
+ { "startIndex": 37, "endIndex": 39, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // '_U'
241
+ { "startIndex": 39, "endIndex": 40, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
242
242
  { "startIndex": 40, "endIndex": 41, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
243
243
  ]
244
244
  ];
@@ -27,51 +27,52 @@ describe('', () => {
27
27
  { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl"] }, // ' '
28
28
  { "startIndex": 7, "endIndex": 12, "scopes": ["source.abl", "keyword.other.abl"] }, // 'ALIAS'
29
29
  { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl"] }, // ' '
30
- { "startIndex": 13, "endIndex": 18, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'value'
31
- { "startIndex": 18, "endIndex": 19, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
32
- { "startIndex": 19, "endIndex": 20, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
33
- { "startIndex": 20, "endIndex": 21, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl"] }, // ' '
34
- { "startIndex": 21, "endIndex": 31, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'expression'
35
- { "startIndex": 31, "endIndex": 32, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl"] }, // ' '
36
- { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
30
+ { "startIndex": 13, "endIndex": 18, "scopes": ["source.abl", "support.function.abl"] }, // 'value'
31
+ { "startIndex": 18, "endIndex": 19, "scopes": ["source.abl"] }, // ' '
32
+ { "startIndex": 19, "endIndex": 20, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
33
+ { "startIndex": 20, "endIndex": 21, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
34
+ { "startIndex": 21, "endIndex": 31, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'expression'
35
+ { "startIndex": 31, "endIndex": 32, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
36
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
37
37
  { "startIndex": 33, "endIndex": 34, "scopes": ["source.abl"] }, // ' '
38
38
  { "startIndex": 34, "endIndex": 37, "scopes": ["source.abl", "keyword.other.abl"] }, // 'FOR'
39
39
  { "startIndex": 37, "endIndex": 38, "scopes": ["source.abl"] }, // ' '
40
40
  { "startIndex": 38, "endIndex": 46, "scopes": ["source.abl", "keyword.other.abl"] }, // 'DATABASE'
41
- { "startIndex": 46, "endIndex": 47, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
42
- { "startIndex": 47, "endIndex": 52, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'value'
43
- { "startIndex": 52, "endIndex": 53, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
44
- { "startIndex": 53, "endIndex": 54, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
45
- { "startIndex": 54, "endIndex": 55, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl"] }, // ' '
46
- { "startIndex": 55, "endIndex": 65, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'expression'
47
- { "startIndex": 65, "endIndex": 66, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl"] }, // ' '
48
- { "startIndex": 66, "endIndex": 67, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
41
+ { "startIndex": 46, "endIndex": 47, "scopes": ["source.abl"] }, // ' '
42
+ { "startIndex": 47, "endIndex": 52, "scopes": ["source.abl", "support.function.abl"] }, // 'value'
43
+ { "startIndex": 52, "endIndex": 53, "scopes": ["source.abl"] }, // ' '
44
+ { "startIndex": 53, "endIndex": 54, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
45
+ { "startIndex": 54, "endIndex": 55, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
46
+ { "startIndex": 55, "endIndex": 65, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'expression'
47
+ { "startIndex": 65, "endIndex": 66, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
48
+ { "startIndex": 66, "endIndex": 67, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
49
49
  { "startIndex": 67, "endIndex": 68, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
50
50
  ];
51
51
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
52
52
  })
53
53
 
54
54
  describe('', () => {
55
- let statement = `CREATE ALIAS ALIAS_STRING FOR DATABASE value ( tt.fld1 ).`;
55
+ let statement = ` CREATE ALIAS ALIAS_STRING FOR DATABASE value ( tt.fld1 ).`
56
56
  let expectedTokens = [
57
- { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "keyword.other.abl"] }, // 'CREATE'
58
- { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl"] }, // ' '
59
- { "startIndex": 7, "endIndex": 12, "scopes": ["source.abl", "keyword.other.abl"] }, // 'ALIAS'
60
- { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl"] }, // ' '
61
- { "startIndex": 13, "endIndex": 25, "scopes": ["source.abl", "storage.data.database.abl"] }, // 'ALIAS_STRING'
62
- { "startIndex": 25, "endIndex": 26, "scopes": ["source.abl"] }, // ' '
63
- { "startIndex": 26, "endIndex": 29, "scopes": ["source.abl", "keyword.other.abl"] }, // 'FOR'
57
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl"] }, // ' '
58
+ { "startIndex": 4, "endIndex": 10, "scopes": ["source.abl", "keyword.other.abl"] }, // 'CREATE'
59
+ { "startIndex": 10, "endIndex": 11, "scopes": ["source.abl"] }, // ' '
60
+ { "startIndex": 11, "endIndex": 16, "scopes": ["source.abl", "keyword.other.abl"] }, // 'ALIAS'
61
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl"] }, // ' '
62
+ { "startIndex": 17, "endIndex": 29, "scopes": ["source.abl", "storage.data.database.abl"] }, // 'ALIAS_STRING'
64
63
  { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl"] }, // ' '
65
- { "startIndex": 30, "endIndex": 38, "scopes": ["source.abl", "keyword.other.abl"] }, // 'DATABASE'
66
- { "startIndex": 38, "endIndex": 39, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
67
- { "startIndex": 39, "endIndex": 44, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'value'
68
- { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
69
- { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
70
- { "startIndex": 46, "endIndex": 47, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl"] }, // ' '
71
- { "startIndex": 47, "endIndex": 54, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "storage.data.table.abl"] }, // 'tt.fld1'
72
- { "startIndex": 54, "endIndex": 55, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl"] }, // ' '
73
- { "startIndex": 55, "endIndex": 56, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
74
- { "startIndex": 56, "endIndex": 57, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
64
+ { "startIndex": 30, "endIndex": 33, "scopes": ["source.abl", "keyword.other.abl"] }, // 'FOR'
65
+ { "startIndex": 33, "endIndex": 34, "scopes": ["source.abl"] }, // ' '
66
+ { "startIndex": 34, "endIndex": 42, "scopes": ["source.abl", "keyword.other.abl"] }, // 'DATABASE'
67
+ { "startIndex": 42, "endIndex": 43, "scopes": ["source.abl"] }, // ' '
68
+ { "startIndex": 43, "endIndex": 48, "scopes": ["source.abl", "support.function.abl"] }, // 'value'
69
+ { "startIndex": 48, "endIndex": 49, "scopes": ["source.abl"] }, // ' '
70
+ { "startIndex": 49, "endIndex": 50, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
71
+ { "startIndex": 50, "endIndex": 51, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
72
+ { "startIndex": 51, "endIndex": 58, "scopes": ["source.abl", "meta.function.arguments.abl", "storage.data.table.abl"] }, // 'tt.fld1'
73
+ { "startIndex": 58, "endIndex": 59, "scopes": ["source.abl", "meta.function.arguments.abl"] }, // ' '
74
+ { "startIndex": 59, "endIndex": 60, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
75
+ { "startIndex": 60, "endIndex": 61, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
75
76
  ];
76
77
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);
77
78
  })
@@ -90,11 +91,11 @@ describe('', () => {
90
91
  { "startIndex": 23, "endIndex": 26, "scopes": ["source.abl", "keyword.other.abl"] }, // 'FOR'
91
92
  { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl"] }, // ' '
92
93
  { "startIndex": 27, "endIndex": 35, "scopes": ["source.abl", "keyword.other.abl"] }, // 'DATABASE'
93
- { "startIndex": 35, "endIndex": 36, "scopes": ["source.abl", "meta.function-call.abl"] }, // ' '
94
- { "startIndex": 36, "endIndex": 41, "scopes": ["source.abl", "meta.function-call.abl", "support.function.abl"] }, // 'VALUE'
95
- { "startIndex": 41, "endIndex": 42, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
96
- { "startIndex": 42, "endIndex": 53, "scopes": ["source.abl", "meta.function-call.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'user_dbname'
97
- { "startIndex": 53, "endIndex": 54, "scopes": ["source.abl", "meta.function-call.abl", "meta.brace.round.js"] }, // ')'
94
+ { "startIndex": 35, "endIndex": 36, "scopes": ["source.abl"] }, // ' '
95
+ { "startIndex": 36, "endIndex": 41, "scopes": ["source.abl", "support.function.abl"] }, // 'VALUE'
96
+ { "startIndex": 41, "endIndex": 42, "scopes": ["source.abl", "meta.function.arguments.abl", "meta.brace.round.js"] }, // '('
97
+ { "startIndex": 42, "endIndex": 53, "scopes": ["source.abl", "meta.function.arguments.abl", "variable.other.abl"] }, // 'user_dbname'
98
+ { "startIndex": 53, "endIndex": 54, "scopes": ["source.abl", "meta.brace.round.js"] }, // ')'
98
99
  { "startIndex": 54, "endIndex": 55, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
99
100
  ];
100
101
  shared.itShouldMatchExpectedScopes(statement, expectedTokens);