abl-tmlanguage 1.1.3 → 1.3.0

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 (71) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +54 -1
  3. package/abl.tmLanguage.json +3534 -230
  4. package/azure-pipelines.yml +3 -2
  5. package/package.json +7 -6
  6. package/spec/analyze-suspend-resume/analyze-suspend-resume.spec.js +10 -10
  7. package/spec/annotations/annotation.spec.js +232 -0
  8. package/spec/array-extent/issue#5.spec.js +18 -18
  9. package/spec/blocks/finally-blocks.spec.js +90 -0
  10. package/spec/blocks/on-quit.spec.js +59 -0
  11. package/spec/comments/vscode-abl-issue#127.spec.js +165 -0
  12. package/spec/db-table-and-field/fields-except.spec.js +69 -0
  13. package/spec/db-table-and-field/foreach.spec.js +588 -0
  14. package/spec/db-table-and-field/issue#88.spec.js +120 -0
  15. package/spec/define-buffer/create-buffer.spec.js +110 -0
  16. package/spec/define-buffer/simple-single-line.spec.js +138 -0
  17. package/spec/define-parameter/simple-single-line.spec.js +140 -100
  18. package/spec/define-stream/simple-single-line.spec.js +32 -31
  19. package/spec/define-temp-table/define-index.spec.js +138 -0
  20. package/spec/define-variable/extent.spec.js +228 -0
  21. package/spec/define-variable/issue#6.spec.js +256 -198
  22. package/spec/define-variable/issue#9.spec.js +38 -32
  23. package/spec/define-variable/simple-single-line.spec.js +168 -87
  24. package/spec/define-variable/single-line-with-a-comment-at-the-end.spec.js +62 -62
  25. package/spec/define-variable/single-line-with-a-space-and-a-comment-at-the-end.spec.js +56 -56
  26. package/spec/define-variable/tm-issue#2.spec.js +20 -20
  27. package/spec/do/do-blocks.spec.js +224 -0
  28. package/spec/do/issue#3.spec.js +69 -60
  29. package/spec/function-call/nested-functions.spec.js +128 -0
  30. package/spec/function-call/vscode-abl-issue#19.spec.js +110 -107
  31. package/spec/global-scoped-define/global-define.spec.js +11 -11
  32. package/spec/global-scoped-define/scoped-define-with-procedure-keyword.spec.js +26 -26
  33. package/spec/include/abl-tmlanguage-issues#5.spec.js +40 -57
  34. package/spec/include/vscode-abl-issue#45.spec.js +15 -15
  35. package/spec/include/vscode-abl-issue#77.spec.js +129 -0
  36. package/spec/include/vscode-abl-issue#80.spec.js +40 -27
  37. package/spec/method-attribute-property-call/abl-method-attribute-call.spec.js +99 -0
  38. package/spec/method-attribute-property-call/connected-method.spec.js +30 -0
  39. package/spec/method-attribute-property-call/get-set-method-name.spec.js +96 -0
  40. package/spec/method-attribute-property-call/method-call.spec.js +112 -0
  41. package/spec/method-definition/constructor.spec.js +174 -0
  42. package/spec/method-definition/method.spec.js +320 -0
  43. package/spec/misc-statements/case-statement.spec.js +96 -0
  44. package/spec/misc-statements/copy-lob.spec.js +137 -0
  45. package/spec/misc-statements/if-then.spec.js +170 -0
  46. package/spec/misc-statements/return-statement.spec.js +53 -0
  47. package/spec/operators/operators.spec.js +78 -0
  48. package/spec/procedure-definition/empty-proc.spec.js +101 -18
  49. package/spec/procedure-definition/vscode-abl-issue#22.spec.js +46 -42
  50. package/spec/procedure-definition/vscode-abl-issue#26.spec.js +23 -16
  51. package/spec/procedure-definition/vscode-abl-issue#62.spec.js +36 -0
  52. package/spec/run-statement/run-statement.spec.js +162 -0
  53. package/spec/shared.js +84 -42
  54. package/spec/strings/translation-attribute.spec.js +52 -0
  55. package/spec/strings/vscode-abl-issue#11.spec.js +110 -114
  56. package/spec/strings/vscode-abl-issue#28.spec.js +27 -27
  57. package/spec/type-name/argument.spec.js +209 -0
  58. package/spec/type-name/cast.spec.js +165 -0
  59. package/spec/type-name/define-class.spec.js +468 -0
  60. package/spec/type-name/define-enum.spec.js +44 -0
  61. package/spec/type-name/define-interface.spec.js +159 -0
  62. package/spec/type-name/define-property.spec.js +301 -0
  63. package/spec/type-name/define-temp-table.spec.js +434 -0
  64. package/spec/type-name/define-type-spec.js +435 -0
  65. package/spec/type-name/define-variable-property.spec.js +264 -0
  66. package/spec/type-name/define-variable.spec.js +504 -0
  67. package/spec/type-name/get-class.spec.js +91 -0
  68. package/spec/type-name/new.spec.js +126 -0
  69. package/spec/type-name/parameter-as.spec.js +838 -0
  70. package/spec/type-name/type-name.spec.js +879 -0
  71. package/spec/type-name/using.spec.js +115 -0
@@ -0,0 +1,159 @@
1
+ const { assert, expect } = require('chai');
2
+ const shared = require('../shared.js');
3
+
4
+
5
+ describe('', () => {
6
+ let statement = `interface foo.IBar inherits bar.IFoo:`;
7
+
8
+ let expectedTokens = [
9
+ { "startIndex": 0, "endIndex": 9, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
10
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.define.interface.abl"] },
11
+ { "startIndex": 10, "endIndex": 18, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
12
+ { "startIndex": 18, "endIndex": 19, "scopes": ["source.abl", "meta.define.interface.abl"] },
13
+ { "startIndex": 19, "endIndex": 27, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
14
+ { "startIndex": 27, "endIndex": 28, "scopes": ["source.abl", "meta.define.interface.abl"] },
15
+ { "startIndex": 28, "endIndex": 36, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
16
+ { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.terminator.abl"] }
17
+ ];
18
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
19
+ })
20
+
21
+ describe('', () => {
22
+ let statement = `interface foo.IBar inherits bar.IFoo,baz,IBaz:`;
23
+
24
+ let expectedTokens = [
25
+ { "startIndex": 0, "endIndex": 9, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
26
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.define.interface.abl"] },
27
+ { "startIndex": 10, "endIndex": 18, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
28
+ { "startIndex": 18, "endIndex": 19, "scopes": ["source.abl", "meta.define.interface.abl"] },
29
+ { "startIndex": 19, "endIndex": 27, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
30
+ { "startIndex": 27, "endIndex": 28, "scopes": ["source.abl", "meta.define.interface.abl"] },
31
+ { "startIndex": 28, "endIndex": 36, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
32
+ { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] },
33
+ { "startIndex": 37, "endIndex": 40, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
34
+ { "startIndex": 40, "endIndex": 41, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] },
35
+ { "startIndex": 41, "endIndex": 45, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
36
+ { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.terminator.abl"] }
37
+ ];
38
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
39
+ })
40
+
41
+ describe('', () => {
42
+ let statement = `INTERFACE foo.IBar INHERITS bar.IFoo,baz,IBaz:`;
43
+
44
+ let expectedTokens = [
45
+ { "startIndex": 0, "endIndex": 9, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
46
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.define.interface.abl"] },
47
+ { "startIndex": 10, "endIndex": 18, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
48
+ { "startIndex": 18, "endIndex": 19, "scopes": ["source.abl", "meta.define.interface.abl"] },
49
+ { "startIndex": 19, "endIndex": 27, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
50
+ { "startIndex": 27, "endIndex": 28, "scopes": ["source.abl", "meta.define.interface.abl"] },
51
+ { "startIndex": 28, "endIndex": 36, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
52
+ { "startIndex": 36, "endIndex": 37, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] },
53
+ { "startIndex": 37, "endIndex": 40, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
54
+ { "startIndex": 40, "endIndex": 41, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] },
55
+ { "startIndex": 41, "endIndex": 45, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
56
+ { "startIndex": 45, "endIndex": 46, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.terminator.abl"] }
57
+ ];
58
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
59
+ })
60
+
61
+ describe('', () => {
62
+ let statement = `interface foo.IBar
63
+ inherits bar.IFoo,
64
+ baz,
65
+ IBaz
66
+ :`;
67
+
68
+ let expectedTokens = [
69
+ [
70
+ { "startIndex": 0, "endIndex": 9, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
71
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.define.interface.abl"] },
72
+ { "startIndex": 10, "endIndex": 18, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
73
+ { "startIndex": 18, "endIndex": 20, "scopes": ["source.abl", "meta.define.interface.abl"] }
74
+ ],
75
+ [
76
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.define.interface.abl"] },
77
+ { "startIndex": 4, "endIndex": 12, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
78
+ { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
79
+ { "startIndex": 13, "endIndex": 21, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
80
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] }
81
+ ],
82
+ [
83
+ { "startIndex": 0, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
84
+ { "startIndex": 13, "endIndex": 16, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
85
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] }
86
+ ],
87
+ [
88
+ { "startIndex": 0, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
89
+ { "startIndex": 13, "endIndex": 17, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] }
90
+ ],
91
+ [
92
+ { "startIndex": 0, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
93
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.terminator.abl"] }
94
+ ]
95
+ ];
96
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
97
+ })
98
+
99
+
100
+ describe('', () => {
101
+ let statement = `interface foo.IBar
102
+ inherits bar.IFoo,
103
+ baz,another.ISpa,thing
104
+ IBaz,
105
+ IYes, Inow
106
+ :`
107
+
108
+ let expectedTokens = [
109
+ [
110
+ { "startIndex": 0, "endIndex": 9, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
111
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "meta.define.interface.abl"] },
112
+ { "startIndex": 10, "endIndex": 18, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
113
+ { "startIndex": 18, "endIndex": 20, "scopes": ["source.abl", "meta.define.interface.abl"] }
114
+ ],
115
+ [
116
+ { "startIndex": 0, "endIndex": 4, "scopes": ["source.abl", "meta.define.interface.abl"] },
117
+ { "startIndex": 4, "endIndex": 12, "scopes": ["source.abl", "meta.define.interface.abl", "keyword.other.abl"] },
118
+ { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
119
+ { "startIndex": 13, "endIndex": 21, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
120
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] }
121
+ ],
122
+ [
123
+ { "startIndex": 0, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
124
+ { "startIndex": 13, "endIndex": 16, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
125
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] },
126
+ { "startIndex": 17, "endIndex": 29, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
127
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] },
128
+ { "startIndex": 30, "endIndex": 35, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] }
129
+ ],
130
+ [
131
+ { "startIndex": 0, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
132
+ { "startIndex": 13, "endIndex": 17, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
133
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] }
134
+ ],
135
+ [
136
+ { "startIndex": 0, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
137
+ { "startIndex": 13, "endIndex": 17, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
138
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.separator.comma.abl"] },
139
+ { "startIndex": 18, "endIndex": 19, "scopes": ["source.abl", "meta.define.interface.abl"] },
140
+ { "startIndex": 19, "endIndex": 23, "scopes": ["source.abl", "meta.define.interface.abl", "entity.name.type.abl"] },
141
+ { "startIndex": 23, "endIndex": 25, "scopes": ["source.abl", "meta.define.interface.abl"] }
142
+ ],
143
+ [
144
+ //{ "startIndex": 0, "endIndex": 15, "scopes": ["source.abl", "meta.define.interface.abl" ] }
145
+ { "startIndex": 0, "endIndex": 13, "scopes": ["source.abl", "meta.define.interface.abl"] },
146
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.interface.abl", "punctuation.terminator.abl"] }
147
+ ]
148
+ ];
149
+
150
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
151
+ })
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
@@ -0,0 +1,301 @@
1
+ const { assert, expect } = require('chai');
2
+ const shared = require('../shared.js');
3
+
4
+
5
+
6
+ describe('', () => {
7
+ let statement = `define public property AThing as IHttpClient no-undo
8
+ get():
9
+ return this-object:AThing.
10
+ end.
11
+ set(pVal as IHttpClient):
12
+ AThing = pVal.
13
+ end set.
14
+ `;
15
+
16
+ let expectedTokens = [
17
+ [
18
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
19
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
20
+ { "startIndex": 7, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
21
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
22
+ { "startIndex": 14, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'property'
23
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
24
+ { "startIndex": 23, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "entity.name.function.abl"] }, // 'AThing'
25
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
26
+ { "startIndex": 30, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
27
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
28
+ { "startIndex": 33, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "entity.name.type.abl"] }, // 'IHttpClient'
29
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
30
+ { "startIndex": 45, "endIndex": 52, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] } // 'no-undo'
31
+ ],
32
+ [
33
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
34
+ { "startIndex": 2, "endIndex": 5, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "keyword.other.abl"] }, // 'get'
35
+ { "startIndex": 5, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "meta.function.parameters", "meta.brace.round.js"] }, // '('
36
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "meta.function.parameters", "meta.brace.round.js"] }, // ')'
37
+ { "startIndex": 7, "endIndex": 8, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "punctuation.terminator.abl"] } // ':'
38
+ ],
39
+ [
40
+ { "startIndex": 0, "endIndex": 5, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
41
+ { "startIndex": 5, "endIndex": 11, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "keyword.other.abl"] }, // 'return'
42
+ { "startIndex": 11, "endIndex": 12, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
43
+ { "startIndex": 12, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "variable.language.abl"] }, // 'this-object'
44
+ { "startIndex": 23, "endIndex": 24, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "punctuation.separator.colon.abl"] }, // ':'
45
+ { "startIndex": 24, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "entity.name.function.abl"] }, // 'AThing'
46
+ { "startIndex": 30, "endIndex": 31, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "punctuation.terminator.abl"] } // '.'
47
+ ],
48
+ [
49
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
50
+ { "startIndex": 2, "endIndex": 5, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "keyword.other.abl"] }, // 'end'
51
+ { "startIndex": 5, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
52
+ ],
53
+ [
54
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.setter.abl"] }, // ' '
55
+ { "startIndex": 2, "endIndex": 5, "scopes": ["source.abl", "meta.define.setter.abl", "keyword.other.abl"] }, // 'set'
56
+ { "startIndex": 5, "endIndex": 6, "scopes": ["source.abl", "meta.define.setter.abl", "meta.function.parameters", "meta.brace.round.js"] }, // '('
57
+ { "startIndex": 6, "endIndex": 10, "scopes": ["source.abl", "meta.define.setter.abl", "meta.function.parameters", "variable.parameter.abl"] }, // 'pVal'
58
+ { "startIndex": 10, "endIndex": 11, "scopes": ["source.abl", "meta.define.setter.abl", "meta.function.parameters"] }, // ' '
59
+ { "startIndex": 11, "endIndex": 13, "scopes": ["source.abl", "meta.define.setter.abl", "meta.function.parameters", "keyword.other.abl"] }, // 'as'
60
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.setter.abl", "meta.function.parameters"] }, // ' '
61
+ { "startIndex": 14, "endIndex": 25, "scopes": ["source.abl", "meta.define.setter.abl", "meta.function.parameters", "entity.name.type.abl"] }, // 'IHttpClient'
62
+ { "startIndex": 25, "endIndex": 26, "scopes": ["source.abl", "meta.define.setter.abl", "meta.function.parameters", "meta.brace.round.js"] }, // ')'
63
+ { "startIndex": 26, "endIndex": 27, "scopes": ["source.abl", "meta.define.setter.abl", "punctuation.terminator.abl"] } // ':'
64
+ ],
65
+ [
66
+ { "startIndex": 0, "endIndex": 5, "scopes": ["source.abl", "meta.define.setter.abl"] }, // ' '
67
+ { "startIndex": 5, "endIndex": 11, "scopes": ["source.abl", "meta.define.setter.abl", "variable.other.abl"] }, // 'AThing'
68
+ { "startIndex": 11, "endIndex": 12, "scopes": ["source.abl", "meta.define.setter.abl"] }, // ' '
69
+ { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl", "meta.define.setter.abl", "keyword.operator.source.abl"] }, // '='
70
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.setter.abl"] }, // ' '
71
+ { "startIndex": 14, "endIndex": 18, "scopes": ["source.abl", "meta.define.setter.abl", "variable.other.abl"] }, // 'pVal'
72
+ { "startIndex": 18, "endIndex": 19, "scopes": ["source.abl", "meta.define.setter.abl", "punctuation.terminator.abl"] } // '.'
73
+ ],
74
+ [
75
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.setter.abl"] }, // ' '
76
+ { "startIndex": 2, "endIndex": 5, "scopes": ["source.abl", "meta.define.setter.abl", "keyword.other.abl"] }, // 'end'
77
+ { "startIndex": 5, "endIndex": 6, "scopes": ["source.abl", "meta.define.setter.abl"] }, // ' '
78
+ { "startIndex": 6, "endIndex": 9, "scopes": ["source.abl", "meta.define.setter.abl", "keyword.other.abl"] }, // 'set'
79
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
80
+ ],
81
+ [
82
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl"] } // ' '
83
+ ]
84
+ ];
85
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
86
+ })
87
+
88
+ describe('', () => {
89
+ let statement = `define public property AThing as IHttpClient no-undo
90
+ get .
91
+ set. `;
92
+
93
+ let expectedTokens = [
94
+ [
95
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
96
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
97
+ { "startIndex": 7, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
98
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
99
+ { "startIndex": 14, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'property'
100
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
101
+ { "startIndex": 23, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "entity.name.function.abl"] }, // 'AThing'
102
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
103
+ { "startIndex": 30, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
104
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
105
+ { "startIndex": 33, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "entity.name.type.abl"] }, // 'IHttpClient'
106
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
107
+ { "startIndex": 45, "endIndex": 52, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] } // 'no-undo'
108
+ ],
109
+ [
110
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
111
+ { "startIndex": 2, "endIndex": 5, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "keyword.other.abl"] }, // 'get'
112
+ { "startIndex": 5, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
113
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
114
+ ],
115
+ [
116
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.setter.abl"] }, // ' '
117
+ { "startIndex": 2, "endIndex": 5, "scopes": ["source.abl", "meta.define.setter.abl", "keyword.other.abl"] }, // 'set'
118
+ { "startIndex": 5, "endIndex": 6, "scopes": ["source.abl", "punctuation.terminator.abl"] }, // '.'
119
+ { "startIndex": 6, "endIndex": 8, "scopes": ["source.abl"] } // ' '
120
+ ]
121
+ ];
122
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
123
+ })
124
+
125
+
126
+
127
+ describe('', () => {
128
+ let statement = `define public property AThing as IHttpClient no-undo
129
+ public get .
130
+ private set.
131
+
132
+ define buffer b for temp-table tt.`;
133
+
134
+ let expectedTokens = [
135
+ [
136
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
137
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
138
+ { "startIndex": 7, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
139
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
140
+ { "startIndex": 14, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'property'
141
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
142
+ { "startIndex": 23, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "entity.name.function.abl"] }, // 'AThing'
143
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
144
+ { "startIndex": 30, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
145
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
146
+ { "startIndex": 33, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "entity.name.type.abl"] }, // 'IHttpClient'
147
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
148
+ { "startIndex": 45, "endIndex": 52, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] } // 'no-undo'
149
+ ],
150
+ [
151
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
152
+ { "startIndex": 2, "endIndex": 8, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
153
+ { "startIndex": 8, "endIndex": 9, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
154
+ { "startIndex": 9, "endIndex": 12, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "keyword.other.abl"] }, // 'get'
155
+ { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
156
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
157
+ ],
158
+ [
159
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl"] }, // ' '
160
+ { "startIndex": 2, "endIndex": 9, "scopes": ["source.abl", "keyword.other.abl"] }, // 'private'
161
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl"] }, // ' '
162
+ { "startIndex": 10, "endIndex": 13, "scopes": ["source.abl", "meta.define.setter.abl", "keyword.other.abl"] }, // 'set'
163
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
164
+ ],
165
+ [
166
+ { "startIndex": 0, "endIndex": 1, "scopes": ["source.abl"] } // ' '
167
+ ],
168
+ [
169
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
170
+ { "startIndex": 2, "endIndex": 8, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
171
+ { "startIndex": 8, "endIndex": 9, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
172
+ { "startIndex": 9, "endIndex": 15, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'buffer'
173
+ { "startIndex": 15, "endIndex": 16, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
174
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'b'
175
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
176
+ { "startIndex": 18, "endIndex": 21, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'for'
177
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
178
+ { "startIndex": 22, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'temp-table'
179
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
180
+ { "startIndex": 33, "endIndex": 35, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'tt'
181
+ { "startIndex": 35, "endIndex": 36, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
182
+ ]
183
+ ];
184
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
185
+ })
186
+
187
+ describe('', () => {
188
+ let statement = `define public property AThing as IHttpClient
189
+ public get .
190
+ private set.
191
+
192
+ define buffer b for temp-table tt.`;
193
+
194
+ let expectedTokens = [
195
+ [
196
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
197
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
198
+ { "startIndex": 7, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
199
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
200
+ { "startIndex": 14, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'property'
201
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
202
+ { "startIndex": 23, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "entity.name.function.abl"] }, // 'AThing'
203
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
204
+ { "startIndex": 30, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
205
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
206
+ { "startIndex": 33, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "entity.name.type.abl"] } // 'IHttpClient'
207
+ ],
208
+ [
209
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
210
+ { "startIndex": 2, "endIndex": 8, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
211
+ { "startIndex": 8, "endIndex": 9, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
212
+ { "startIndex": 9, "endIndex": 12, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "keyword.other.abl"] }, // 'get'
213
+ { "startIndex": 12, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
214
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
215
+ ],
216
+ [
217
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl"] }, // ' '
218
+ { "startIndex": 2, "endIndex": 9, "scopes": ["source.abl", "keyword.other.abl"] }, // 'private'
219
+ { "startIndex": 9, "endIndex": 10, "scopes": ["source.abl"] }, // ' '
220
+ { "startIndex": 10, "endIndex": 13, "scopes": ["source.abl", "meta.define.setter.abl", "keyword.other.abl"] }, // 'set'
221
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "punctuation.terminator.abl"] } // '.'
222
+ ],
223
+ [
224
+ { "startIndex": 0, "endIndex": 1, "scopes": ["source.abl"] } // ''
225
+ ],
226
+ [
227
+ { "startIndex": 0, "endIndex": 2, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
228
+ { "startIndex": 2, "endIndex": 8, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
229
+ { "startIndex": 8, "endIndex": 9, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
230
+ { "startIndex": 9, "endIndex": 15, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'buffer'
231
+ { "startIndex": 15, "endIndex": 16, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
232
+ { "startIndex": 16, "endIndex": 17, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'b'
233
+ { "startIndex": 17, "endIndex": 18, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
234
+ { "startIndex": 18, "endIndex": 21, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'for'
235
+ { "startIndex": 21, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
236
+ { "startIndex": 22, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'temp-table'
237
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
238
+ { "startIndex": 33, "endIndex": 35, "scopes": ["source.abl", "meta.define.abl", "storage.data.table.abl"] }, // 'tt'
239
+ { "startIndex": 35, "endIndex": 36, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
240
+ ]
241
+ ];
242
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
243
+ })
244
+
245
+ describe('', () => {
246
+ let statement = `define public property AThing as IHttpClient no-undo
247
+ get .`;
248
+
249
+ let expectedTokens = [
250
+ [
251
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
252
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
253
+ { "startIndex": 7, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
254
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
255
+ { "startIndex": 14, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'property'
256
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
257
+ { "startIndex": 23, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "entity.name.function.abl"] }, // 'AThing'
258
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
259
+ { "startIndex": 30, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
260
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
261
+ { "startIndex": 33, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "entity.name.type.abl"] }, // 'IHttpClient'
262
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
263
+ { "startIndex": 45, "endIndex": 52, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] } // 'no-undo'
264
+ ],
265
+ [
266
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl", "keyword.other.abl"] }, // 'get'
267
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl", "meta.define.abl", "meta.define.getter.abl"] }, // ' '
268
+ { "startIndex": 4, "endIndex": 5, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] } // '.'
269
+ ]
270
+ ];
271
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
272
+ })
273
+
274
+ describe('', () => {
275
+ let statement = `define public property AThing as IHttpClient no-undo
276
+ set. `;
277
+
278
+ let expectedTokens = [
279
+ [
280
+ { "startIndex": 0, "endIndex": 6, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'define'
281
+ { "startIndex": 6, "endIndex": 7, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
282
+ { "startIndex": 7, "endIndex": 13, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'public'
283
+ { "startIndex": 13, "endIndex": 14, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
284
+ { "startIndex": 14, "endIndex": 22, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'property'
285
+ { "startIndex": 22, "endIndex": 23, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
286
+ { "startIndex": 23, "endIndex": 29, "scopes": ["source.abl", "meta.define.abl", "entity.name.function.abl"] }, // 'AThing'
287
+ { "startIndex": 29, "endIndex": 30, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
288
+ { "startIndex": 30, "endIndex": 32, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] }, // 'as'
289
+ { "startIndex": 32, "endIndex": 33, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
290
+ { "startIndex": 33, "endIndex": 44, "scopes": ["source.abl", "meta.define.abl", "entity.name.type.abl"] }, // 'IHttpClient'
291
+ { "startIndex": 44, "endIndex": 45, "scopes": ["source.abl", "meta.define.abl"] }, // ' '
292
+ { "startIndex": 45, "endIndex": 52, "scopes": ["source.abl", "meta.define.abl", "keyword.other.abl"] } // 'no-undo'
293
+ ],
294
+ [
295
+ { "startIndex": 0, "endIndex": 3, "scopes": ["source.abl", "meta.define.abl", "meta.define.setter.abl", "keyword.other.abl"] }, // 'set'
296
+ { "startIndex": 3, "endIndex": 4, "scopes": ["source.abl", "meta.define.abl", "punctuation.terminator.abl"] }, // '.'
297
+ { "startIndex": 4, "endIndex": 6, "scopes": ["source.abl"] } // ' '
298
+ ]
299
+ ];
300
+ shared.itShouldMatchExpectedScopes(statement, expectedTokens);
301
+ })