@abaplint/core 2.113.126 → 2.113.128

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 (205) hide show
  1. package/build/abaplint.d.ts +17 -3
  2. package/build/src/abap/3_structures/structures/dynpro_loop.js +1 -1
  3. package/build/src/abap/5_syntax/_builtin.js +10 -10
  4. package/build/src/abap/5_syntax/_procedural.js +2 -2
  5. package/build/src/abap/5_syntax/_type_utils.js +16 -7
  6. package/build/src/abap/5_syntax/basic_types.js +10 -10
  7. package/build/src/abap/5_syntax/expressions/attribute_chain.js +6 -7
  8. package/build/src/abap/5_syntax/expressions/attribute_name.js +6 -6
  9. package/build/src/abap/5_syntax/expressions/cast.js +9 -9
  10. package/build/src/abap/5_syntax/expressions/compare.js +4 -4
  11. package/build/src/abap/5_syntax/expressions/component_chain.js +8 -8
  12. package/build/src/abap/5_syntax/expressions/component_compare.js +3 -3
  13. package/build/src/abap/5_syntax/expressions/component_compare_simple.js +3 -3
  14. package/build/src/abap/5_syntax/expressions/component_cond.js +3 -3
  15. package/build/src/abap/5_syntax/expressions/component_name.js +4 -4
  16. package/build/src/abap/5_syntax/expressions/cond.js +3 -3
  17. package/build/src/abap/5_syntax/expressions/cond_body.js +5 -5
  18. package/build/src/abap/5_syntax/expressions/constant.js +1 -1
  19. package/build/src/abap/5_syntax/expressions/conv_body.js +4 -4
  20. package/build/src/abap/5_syntax/expressions/corresponding_body.js +3 -3
  21. package/build/src/abap/5_syntax/expressions/data_definition.js +3 -3
  22. package/build/src/abap/5_syntax/expressions/database_table.js +1 -1
  23. package/build/src/abap/5_syntax/expressions/default.js +3 -3
  24. package/build/src/abap/5_syntax/expressions/dereference.js +2 -2
  25. package/build/src/abap/5_syntax/expressions/dynamic.js +2 -2
  26. package/build/src/abap/5_syntax/expressions/field_assignment.js +2 -2
  27. package/build/src/abap/5_syntax/expressions/field_chain.js +19 -19
  28. package/build/src/abap/5_syntax/expressions/field_length.js +2 -2
  29. package/build/src/abap/5_syntax/expressions/field_offset.js +2 -2
  30. package/build/src/abap/5_syntax/expressions/filter_body.js +3 -3
  31. package/build/src/abap/5_syntax/expressions/for.js +8 -8
  32. package/build/src/abap/5_syntax/expressions/form_param.js +2 -2
  33. package/build/src/abap/5_syntax/expressions/fstarget.js +2 -2
  34. package/build/src/abap/5_syntax/expressions/inline_data.js +1 -1
  35. package/build/src/abap/5_syntax/expressions/inline_field_definition.js +3 -3
  36. package/build/src/abap/5_syntax/expressions/inline_fs.js +1 -1
  37. package/build/src/abap/5_syntax/expressions/inline_loop_definition.js +2 -2
  38. package/build/src/abap/5_syntax/expressions/let.js +2 -2
  39. package/build/src/abap/5_syntax/expressions/loop_group_by.js +6 -6
  40. package/build/src/abap/5_syntax/expressions/message_source.js +2 -2
  41. package/build/src/abap/5_syntax/expressions/method_call_body.js +3 -3
  42. package/build/src/abap/5_syntax/expressions/method_call_chain.js +21 -19
  43. package/build/src/abap/5_syntax/expressions/method_call_param.js +2 -2
  44. package/build/src/abap/5_syntax/expressions/method_def_returning.js +1 -1
  45. package/build/src/abap/5_syntax/expressions/method_param.js +4 -4
  46. package/build/src/abap/5_syntax/expressions/method_parameters.js +7 -7
  47. package/build/src/abap/5_syntax/expressions/method_source.js +20 -20
  48. package/build/src/abap/5_syntax/expressions/new_object.js +10 -10
  49. package/build/src/abap/5_syntax/expressions/raise_with.js +2 -2
  50. package/build/src/abap/5_syntax/expressions/reduce_body.js +7 -7
  51. package/build/src/abap/5_syntax/expressions/reduce_next.js +3 -3
  52. package/build/src/abap/5_syntax/expressions/select.js +25 -25
  53. package/build/src/abap/5_syntax/expressions/select_loop.js +2 -2
  54. package/build/src/abap/5_syntax/expressions/source.js +63 -60
  55. package/build/src/abap/5_syntax/expressions/source_field.js +2 -2
  56. package/build/src/abap/5_syntax/expressions/source_field_symbol.js +2 -2
  57. package/build/src/abap/5_syntax/expressions/sql_compare.js +6 -6
  58. package/build/src/abap/5_syntax/expressions/sql_for_all_entries.js +2 -2
  59. package/build/src/abap/5_syntax/expressions/sql_from.js +3 -3
  60. package/build/src/abap/5_syntax/expressions/sql_in.js +4 -4
  61. package/build/src/abap/5_syntax/expressions/sql_order_by.js +2 -2
  62. package/build/src/abap/5_syntax/expressions/sql_source.js +3 -3
  63. package/build/src/abap/5_syntax/expressions/string_template.js +6 -6
  64. package/build/src/abap/5_syntax/expressions/switch_body.js +4 -4
  65. package/build/src/abap/5_syntax/expressions/table_expression.js +2 -2
  66. package/build/src/abap/5_syntax/expressions/target.js +25 -23
  67. package/build/src/abap/5_syntax/expressions/type_table.js +2 -2
  68. package/build/src/abap/5_syntax/expressions/type_table_key.js +1 -1
  69. package/build/src/abap/5_syntax/expressions/value_body.js +10 -10
  70. package/build/src/abap/5_syntax/statements/add.js +2 -2
  71. package/build/src/abap/5_syntax/statements/add_corresponding.js +2 -2
  72. package/build/src/abap/5_syntax/statements/append.js +6 -6
  73. package/build/src/abap/5_syntax/statements/assert.js +1 -1
  74. package/build/src/abap/5_syntax/statements/assign.js +8 -8
  75. package/build/src/abap/5_syntax/statements/authority_check.js +1 -1
  76. package/build/src/abap/5_syntax/statements/call.js +3 -3
  77. package/build/src/abap/5_syntax/statements/call_badi.js +3 -3
  78. package/build/src/abap/5_syntax/statements/call_function.js +6 -6
  79. package/build/src/abap/5_syntax/statements/call_kernel.js +1 -1
  80. package/build/src/abap/5_syntax/statements/call_transaction.js +2 -2
  81. package/build/src/abap/5_syntax/statements/call_transformation.js +4 -4
  82. package/build/src/abap/5_syntax/statements/case.js +1 -1
  83. package/build/src/abap/5_syntax/statements/case_type.js +1 -1
  84. package/build/src/abap/5_syntax/statements/catch.js +2 -2
  85. package/build/src/abap/5_syntax/statements/check.js +1 -1
  86. package/build/src/abap/5_syntax/statements/class_data.js +2 -2
  87. package/build/src/abap/5_syntax/statements/class_implementation.js +1 -1
  88. package/build/src/abap/5_syntax/statements/clear.js +2 -2
  89. package/build/src/abap/5_syntax/statements/close_dataset.js +1 -1
  90. package/build/src/abap/5_syntax/statements/collect.js +3 -3
  91. package/build/src/abap/5_syntax/statements/commit_entities.js +3 -3
  92. package/build/src/abap/5_syntax/statements/concatenate.js +5 -5
  93. package/build/src/abap/5_syntax/statements/condense.js +1 -1
  94. package/build/src/abap/5_syntax/statements/convert.js +7 -7
  95. package/build/src/abap/5_syntax/statements/create_data.js +3 -3
  96. package/build/src/abap/5_syntax/statements/create_object.js +9 -6
  97. package/build/src/abap/5_syntax/statements/data.js +2 -2
  98. package/build/src/abap/5_syntax/statements/delete_cluster.js +1 -1
  99. package/build/src/abap/5_syntax/statements/delete_database.js +4 -4
  100. package/build/src/abap/5_syntax/statements/delete_internal.js +4 -4
  101. package/build/src/abap/5_syntax/statements/delete_memory.js +1 -1
  102. package/build/src/abap/5_syntax/statements/delete_report.js +1 -1
  103. package/build/src/abap/5_syntax/statements/describe.js +10 -10
  104. package/build/src/abap/5_syntax/statements/divide.js +2 -2
  105. package/build/src/abap/5_syntax/statements/do.js +2 -2
  106. package/build/src/abap/5_syntax/statements/editor_call.js +2 -2
  107. package/build/src/abap/5_syntax/statements/else_if.js +1 -1
  108. package/build/src/abap/5_syntax/statements/export.js +2 -2
  109. package/build/src/abap/5_syntax/statements/find.js +5 -5
  110. package/build/src/abap/5_syntax/statements/format.js +1 -1
  111. package/build/src/abap/5_syntax/statements/get_badi.js +3 -3
  112. package/build/src/abap/5_syntax/statements/get_bit.js +3 -3
  113. package/build/src/abap/5_syntax/statements/get_cursor.js +1 -1
  114. package/build/src/abap/5_syntax/statements/get_locale.js +2 -2
  115. package/build/src/abap/5_syntax/statements/get_parameter.js +3 -3
  116. package/build/src/abap/5_syntax/statements/get_reference.js +3 -3
  117. package/build/src/abap/5_syntax/statements/get_run_time.js +2 -2
  118. package/build/src/abap/5_syntax/statements/get_time.js +2 -2
  119. package/build/src/abap/5_syntax/statements/if.js +1 -1
  120. package/build/src/abap/5_syntax/statements/import.js +2 -2
  121. package/build/src/abap/5_syntax/statements/import_dynpro.js +2 -2
  122. package/build/src/abap/5_syntax/statements/include_type.js +2 -2
  123. package/build/src/abap/5_syntax/statements/insert_database.js +4 -4
  124. package/build/src/abap/5_syntax/statements/insert_field_group.js +3 -3
  125. package/build/src/abap/5_syntax/statements/insert_internal.js +7 -7
  126. package/build/src/abap/5_syntax/statements/insert_report.js +1 -1
  127. package/build/src/abap/5_syntax/statements/insert_textpool.js +1 -1
  128. package/build/src/abap/5_syntax/statements/log_point.js +1 -1
  129. package/build/src/abap/5_syntax/statements/loop.js +10 -10
  130. package/build/src/abap/5_syntax/statements/loop_at_screen.js +2 -2
  131. package/build/src/abap/5_syntax/statements/message.js +5 -5
  132. package/build/src/abap/5_syntax/statements/modify_database.js +5 -5
  133. package/build/src/abap/5_syntax/statements/modify_entities.js +3 -3
  134. package/build/src/abap/5_syntax/statements/modify_internal.js +4 -4
  135. package/build/src/abap/5_syntax/statements/modify_screen.js +1 -1
  136. package/build/src/abap/5_syntax/statements/move.js +4 -4
  137. package/build/src/abap/5_syntax/statements/move_corresponding.js +2 -2
  138. package/build/src/abap/5_syntax/statements/multiply.js +2 -2
  139. package/build/src/abap/5_syntax/statements/open_dataset.js +2 -2
  140. package/build/src/abap/5_syntax/statements/pack.js +2 -2
  141. package/build/src/abap/5_syntax/statements/parameter.js +1 -1
  142. package/build/src/abap/5_syntax/statements/perform.js +4 -4
  143. package/build/src/abap/5_syntax/statements/raise.js +8 -8
  144. package/build/src/abap/5_syntax/statements/raise_event.js +1 -1
  145. package/build/src/abap/5_syntax/statements/read_entities.js +3 -3
  146. package/build/src/abap/5_syntax/statements/read_report.js +2 -2
  147. package/build/src/abap/5_syntax/statements/read_table.js +8 -8
  148. package/build/src/abap/5_syntax/statements/read_textpool.js +2 -2
  149. package/build/src/abap/5_syntax/statements/receive.js +2 -2
  150. package/build/src/abap/5_syntax/statements/replace.js +2 -2
  151. package/build/src/abap/5_syntax/statements/scan.js +2 -2
  152. package/build/src/abap/5_syntax/statements/search.js +1 -1
  153. package/build/src/abap/5_syntax/statements/select.js +1 -1
  154. package/build/src/abap/5_syntax/statements/select_loop.js +1 -1
  155. package/build/src/abap/5_syntax/statements/selectoption.js +4 -4
  156. package/build/src/abap/5_syntax/statements/set_bit.js +2 -2
  157. package/build/src/abap/5_syntax/statements/set_handler.js +2 -2
  158. package/build/src/abap/5_syntax/statements/set_locale.js +2 -2
  159. package/build/src/abap/5_syntax/statements/set_parameter.js +1 -1
  160. package/build/src/abap/5_syntax/statements/set_pf_status.js +1 -1
  161. package/build/src/abap/5_syntax/statements/set_titlebar.js +1 -1
  162. package/build/src/abap/5_syntax/statements/shift.js +2 -2
  163. package/build/src/abap/5_syntax/statements/sort.js +2 -2
  164. package/build/src/abap/5_syntax/statements/split.js +3 -3
  165. package/build/src/abap/5_syntax/statements/static.js +1 -1
  166. package/build/src/abap/5_syntax/statements/submit.js +3 -3
  167. package/build/src/abap/5_syntax/statements/subtract.js +2 -2
  168. package/build/src/abap/5_syntax/statements/subtract_corresponding.js +2 -2
  169. package/build/src/abap/5_syntax/statements/syntax_check.js +2 -2
  170. package/build/src/abap/5_syntax/statements/system_call.js +1 -1
  171. package/build/src/abap/5_syntax/statements/transfer.js +2 -2
  172. package/build/src/abap/5_syntax/statements/translate.js +2 -2
  173. package/build/src/abap/5_syntax/statements/truncate_dataset.js +1 -1
  174. package/build/src/abap/5_syntax/statements/type.js +3 -3
  175. package/build/src/abap/5_syntax/statements/unpack.js +2 -2
  176. package/build/src/abap/5_syntax/statements/update_database.js +4 -4
  177. package/build/src/abap/5_syntax/statements/wait.js +2 -2
  178. package/build/src/abap/5_syntax/statements/when.js +1 -1
  179. package/build/src/abap/5_syntax/statements/when_type.js +3 -3
  180. package/build/src/abap/5_syntax/statements/while.js +3 -3
  181. package/build/src/abap/5_syntax/statements/with.js +2 -2
  182. package/build/src/abap/5_syntax/statements/with_loop.js +2 -2
  183. package/build/src/abap/5_syntax/statements/write.js +4 -4
  184. package/build/src/abap/5_syntax/structures/data.js +1 -1
  185. package/build/src/abap/5_syntax/structures/statics.js +1 -1
  186. package/build/src/abap/types/basic/any_type.js +13 -0
  187. package/build/src/abap/types/basic/cgeneric_type.js +7 -0
  188. package/build/src/abap/types/basic/integer_type.js +7 -4
  189. package/build/src/abap/types/basic/string_type.js +7 -4
  190. package/build/src/abap/types/basic/void_type.js +10 -0
  191. package/build/src/abap/types/basic/xgeneric_type.js +7 -0
  192. package/build/src/abap/types/basic/xstring_type.js +13 -0
  193. package/build/src/abap/types/event_definition.js +1 -1
  194. package/build/src/abap/types/form_definition.js +3 -3
  195. package/build/src/abap/types/method_parameters.js +11 -11
  196. package/build/src/cds/cds_determine_types.js +5 -5
  197. package/build/src/ddic.js +11 -11
  198. package/build/src/objects/authorization_check_field.js +1 -1
  199. package/build/src/objects/lock_object.js +1 -1
  200. package/build/src/objects/maintenance_and_transport_object.js +2 -2
  201. package/build/src/objects/table.js +1 -1
  202. package/build/src/objects/view.js +1 -1
  203. package/build/src/registry.js +1 -1
  204. package/build/src/rules/downport.js +2 -1
  205. package/package.json +5 -5
@@ -18,7 +18,7 @@ class Write {
18
18
  second = node.getChildren()[2];
19
19
  }
20
20
  for (const s of node.findDirectExpressions(Expressions.Source)) {
21
- const type = new source_1.Source().runSyntax(s, input);
21
+ const type = source_1.Source.runSyntax(s, input);
22
22
  if (s === second
23
23
  && new _type_utils_1.TypeUtils(input.scope).isCharLike(type) === false
24
24
  && new _type_utils_1.TypeUtils(input.scope).isHexLike(type) === false) {
@@ -28,14 +28,14 @@ class Write {
28
28
  }
29
29
  }
30
30
  for (const s of ((_a = node.findDirectExpression(Expressions.WriteOffsetLength)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.SimpleFieldChain2)) || []) {
31
- new field_chain_1.FieldChain().runSyntax(s, input, _reference_1.ReferenceType.DataReadReference);
31
+ field_chain_1.FieldChain.runSyntax(s, input, _reference_1.ReferenceType.DataReadReference);
32
32
  }
33
33
  for (const s of node.findAllExpressions(Expressions.Dynamic)) {
34
- new dynamic_1.Dynamic().runSyntax(s, input);
34
+ dynamic_1.Dynamic.runSyntax(s, input);
35
35
  }
36
36
  const target = node.findDirectExpression(Expressions.Target);
37
37
  if (target) {
38
- new target_1.Target().runSyntax(target, input);
38
+ target_1.Target.runSyntax(target, input);
39
39
  }
40
40
  }
41
41
  }
@@ -78,7 +78,7 @@ class Data {
78
78
  if (!(found instanceof Basic.StructureType)) {
79
79
  const message = "not structured, " + typeName;
80
80
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, typeToken, message));
81
- return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.VoidType(_syntax_input_1.CheckSyntaxKey));
81
+ return new _typed_identifier_1.TypedIdentifier(name, input.filename, Basic.VoidType.get(_syntax_input_1.CheckSyntaxKey));
82
82
  }
83
83
  for (const c of found.getComponents()) {
84
84
  components.push(c);
@@ -63,7 +63,7 @@ class Statics {
63
63
  if (!(found instanceof Basic.StructureType)) {
64
64
  const message = "not structured, " + typeName;
65
65
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
66
- return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.VoidType(_syntax_input_1.CheckSyntaxKey));
66
+ return new _typed_identifier_1.TypedIdentifier(name, input.filename, Basic.VoidType.get(_syntax_input_1.CheckSyntaxKey));
67
67
  }
68
68
  for (const c of found.getComponents()) {
69
69
  components.push(c);
@@ -3,6 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AnyType = void 0;
4
4
  const _abstract_type_1 = require("./_abstract_type");
5
5
  class AnyType extends _abstract_type_1.AbstractType {
6
+ static get(input) {
7
+ const key = JSON.stringify(input);
8
+ if (this.singletons.has(key)) {
9
+ return this.singletons.get(key);
10
+ }
11
+ const ret = new AnyType(input);
12
+ this.singletons.set(key, ret);
13
+ return ret;
14
+ }
15
+ constructor(input) {
16
+ super(input);
17
+ }
6
18
  toText() {
7
19
  return "```any```";
8
20
  }
@@ -20,4 +32,5 @@ class AnyType extends _abstract_type_1.AbstractType {
20
32
  }
21
33
  }
22
34
  exports.AnyType = AnyType;
35
+ AnyType.singletons = new Map();
23
36
  //# sourceMappingURL=any_type.js.map
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CGenericType = void 0;
4
4
  const _abstract_type_1 = require("./_abstract_type");
5
5
  class CGenericType extends _abstract_type_1.AbstractType {
6
+ static get() {
7
+ return this.singleton;
8
+ }
9
+ constructor() {
10
+ super();
11
+ }
6
12
  toText() {
7
13
  return "```c```";
8
14
  }
@@ -20,4 +26,5 @@ class CGenericType extends _abstract_type_1.AbstractType {
20
26
  }
21
27
  }
22
28
  exports.CGenericType = CGenericType;
29
+ CGenericType.singleton = new CGenericType();
23
30
  //# sourceMappingURL=cgeneric_type.js.map
@@ -4,10 +4,13 @@ exports.IntegerType = void 0;
4
4
  const _abstract_type_1 = require("./_abstract_type");
5
5
  class IntegerType extends _abstract_type_1.AbstractType {
6
6
  static get(input) {
7
- if (input === undefined) {
8
- return this.singleton;
7
+ const key = JSON.stringify(input);
8
+ if (this.singletons.has(key)) {
9
+ return this.singletons.get(key);
9
10
  }
10
- return new IntegerType(input);
11
+ const ret = new IntegerType(input);
12
+ this.singletons.set(key, ret);
13
+ return ret;
11
14
  }
12
15
  constructor(input) {
13
16
  super(input);
@@ -38,5 +41,5 @@ class IntegerType extends _abstract_type_1.AbstractType {
38
41
  }
39
42
  }
40
43
  exports.IntegerType = IntegerType;
41
- IntegerType.singleton = new IntegerType();
44
+ IntegerType.singletons = new Map();
42
45
  //# sourceMappingURL=integer_type.js.map
@@ -4,10 +4,13 @@ exports.StringType = void 0;
4
4
  const _abstract_type_1 = require("./_abstract_type");
5
5
  class StringType extends _abstract_type_1.AbstractType {
6
6
  static get(input) {
7
- if (input === undefined) {
8
- return this.singleton;
7
+ const key = JSON.stringify(input);
8
+ if (this.singletons.has(key)) {
9
+ return this.singletons.get(key);
9
10
  }
10
- return new StringType(input);
11
+ const ret = new StringType(input);
12
+ this.singletons.set(key, ret);
13
+ return ret;
11
14
  }
12
15
  constructor(input) {
13
16
  super(input);
@@ -38,5 +41,5 @@ class StringType extends _abstract_type_1.AbstractType {
38
41
  }
39
42
  }
40
43
  exports.StringType = StringType;
41
- StringType.singleton = new StringType();
44
+ StringType.singletons = new Map();
42
45
  //# sourceMappingURL=string_type.js.map
@@ -3,6 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VoidType = void 0;
4
4
  const _abstract_type_1 = require("./_abstract_type");
5
5
  class VoidType extends _abstract_type_1.AbstractType {
6
+ static get(voided, qualifiedName) {
7
+ const key = JSON.stringify({ voided, qualifiedName });
8
+ if (this.singletons.has(key)) {
9
+ return this.singletons.get(key);
10
+ }
11
+ const ret = new VoidType(voided, qualifiedName);
12
+ this.singletons.set(key, ret);
13
+ return ret;
14
+ }
6
15
  constructor(voided, qualifiedName) {
7
16
  super({ qualifiedName: qualifiedName });
8
17
  this.voided = voided;
@@ -27,4 +36,5 @@ class VoidType extends _abstract_type_1.AbstractType {
27
36
  }
28
37
  }
29
38
  exports.VoidType = VoidType;
39
+ VoidType.singletons = new Map();
30
40
  //# sourceMappingURL=void_type.js.map
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XGenericType = void 0;
4
4
  const _abstract_type_1 = require("./_abstract_type");
5
5
  class XGenericType extends _abstract_type_1.AbstractType {
6
+ static get() {
7
+ return this.singleton;
8
+ }
9
+ constructor() {
10
+ super();
11
+ }
6
12
  toText() {
7
13
  return "```x```";
8
14
  }
@@ -20,4 +26,5 @@ class XGenericType extends _abstract_type_1.AbstractType {
20
26
  }
21
27
  }
22
28
  exports.XGenericType = XGenericType;
29
+ XGenericType.singleton = new XGenericType();
23
30
  //# sourceMappingURL=xgeneric_type.js.map
@@ -3,6 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XStringType = void 0;
4
4
  const _abstract_type_1 = require("./_abstract_type");
5
5
  class XStringType extends _abstract_type_1.AbstractType {
6
+ static get(input) {
7
+ const key = JSON.stringify(input);
8
+ if (this.singletons.has(key)) {
9
+ return this.singletons.get(key);
10
+ }
11
+ const ret = new XStringType(input);
12
+ this.singletons.set(key, ret);
13
+ return ret;
14
+ }
15
+ constructor(input) {
16
+ super(input);
17
+ }
6
18
  toText() {
7
19
  return "```xstring```";
8
20
  }
@@ -20,4 +32,5 @@ class XStringType extends _abstract_type_1.AbstractType {
20
32
  }
21
33
  }
22
34
  exports.XStringType = XStringType;
35
+ XStringType.singletons = new Map();
23
36
  //# sourceMappingURL=xstring_type.js.map
@@ -25,7 +25,7 @@ class EventDefinition extends _identifier_1.Identifier {
25
25
  ///////////////
26
26
  parse(node, input) {
27
27
  for (const e of node.findAllExpressions(expressions_1.MethodParam)) {
28
- this.parameters.push(new method_param_1.MethodParam().runSyntax(e, input, []));
28
+ this.parameters.push(method_param_1.MethodParam.runSyntax(e, input, []));
29
29
  }
30
30
  }
31
31
  }
@@ -42,10 +42,10 @@ class FormDefinition extends _identifier_1.Identifier {
42
42
  for (const param of tables.findAllExpressions(Expressions.FormParam)) {
43
43
  if (param.getChildren().length === 1) {
44
44
  // untyped TABLES parameter
45
- ret.push(new _typed_identifier_1.TypedIdentifier(param.getFirstToken(), input.filename, new basic_1.VoidType("FORM:UNTYPED"), ["form_parameter" /* IdentifierMeta.FormParameter */]));
45
+ ret.push(new _typed_identifier_1.TypedIdentifier(param.getFirstToken(), input.filename, basic_1.VoidType.get("FORM:UNTYPED"), ["form_parameter" /* IdentifierMeta.FormParameter */]));
46
46
  }
47
47
  else {
48
- const p = new form_param_1.FormParam().runSyntax(param, input);
48
+ const p = form_param_1.FormParam.runSyntax(param, input);
49
49
  let type = p.getType();
50
50
  const isStructure = param.findDirectTokenByText("STRUCTURE") !== undefined;
51
51
  if (isStructure) {
@@ -72,7 +72,7 @@ class FormDefinition extends _identifier_1.Identifier {
72
72
  findParams(node, input) {
73
73
  const res = [];
74
74
  for (const param of node.findAllExpressions(Expressions.FormParam)) {
75
- const p = new form_param_1.FormParam().runSyntax(param, input);
75
+ const p = form_param_1.FormParam.runSyntax(param, input);
76
76
  res.push(p);
77
77
  }
78
78
  return res;
@@ -137,7 +137,7 @@ class MethodParameters {
137
137
  this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, found.getType(), ["event_parameter" /* IdentifierMeta.EventParameter */]));
138
138
  }
139
139
  else if (doVoid) {
140
- this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, new basic_1.VoidType(ooName), ["event_parameter" /* IdentifierMeta.EventParameter */]));
140
+ this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, basic_1.VoidType.get(ooName), ["event_parameter" /* IdentifierMeta.EventParameter */]));
141
141
  }
142
142
  else {
143
143
  const type = new basic_1.UnknownType(`handler parameter not found "${search}"`);
@@ -166,7 +166,7 @@ class MethodParameters {
166
166
  }
167
167
  const returning = node.findFirstExpression(Expressions.MethodDefReturning);
168
168
  if (returning) {
169
- this.returning = new method_def_returning_1.MethodDefReturning().runSyntax(returning, input, ["returning" /* IdentifierMeta.MethodReturning */]);
169
+ this.returning = method_def_returning_1.MethodDefReturning.runSyntax(returning, input, ["returning" /* IdentifierMeta.MethodReturning */]);
170
170
  }
171
171
  this.workaroundRAP(node, input, parentName);
172
172
  }
@@ -178,7 +178,7 @@ class MethodParameters {
178
178
  if (foo === resultName) {
179
179
  continue;
180
180
  }
181
- this.importing.push(new _typed_identifier_1.TypedIdentifier(foo.getFirstToken(), input.filename, new basic_1.VoidType("RapMethodParameter"), ["importing" /* IdentifierMeta.MethodImporting */]));
181
+ this.importing.push(new _typed_identifier_1.TypedIdentifier(foo.getFirstToken(), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["importing" /* IdentifierMeta.MethodImporting */]));
182
182
  }
183
183
  const concat = node.concatTokens().toUpperCase();
184
184
  if (concat.includes(" FOR VALIDATE ")
@@ -186,23 +186,23 @@ class MethodParameters {
186
186
  || concat.includes(" FOR FEATURES ")
187
187
  || concat.includes(" FOR MODIFY ")) {
188
188
  const token = isRap.getFirstToken();
189
- this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "failed"), input.filename, new basic_1.VoidType("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
190
- this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "mapped"), input.filename, new basic_1.VoidType("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
191
- this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "reported"), input.filename, new basic_1.VoidType("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
189
+ this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "failed"), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
190
+ this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "mapped"), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
191
+ this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "reported"), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
192
192
  }
193
193
  }
194
194
  if (resultName) {
195
195
  const token = resultName.getFirstToken();
196
- this.importing.push(new _typed_identifier_1.TypedIdentifier(token, input.filename, new basic_1.VoidType("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
196
+ this.importing.push(new _typed_identifier_1.TypedIdentifier(token, input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
197
197
  }
198
198
  // its some kind of magic
199
199
  if (parentName.toUpperCase() === "CL_ABAP_BEHAVIOR_SAVER") {
200
- const tempChanging = this.changing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename, new basic_1.VoidType("RapMethodParameter"), c.getMeta()));
200
+ const tempChanging = this.changing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename, basic_1.VoidType.get("RapMethodParameter"), c.getMeta()));
201
201
  while (this.changing.length > 0) {
202
202
  this.changing.shift();
203
203
  }
204
204
  this.changing.push(...tempChanging);
205
- const tempImporting = this.importing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename, new basic_1.VoidType("RapMethodParameter"), c.getMeta()));
205
+ const tempImporting = this.importing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename, basic_1.VoidType.get("RapMethodParameter"), c.getMeta()));
206
206
  while (this.importing.length > 0) {
207
207
  this.importing.shift();
208
208
  }
@@ -226,7 +226,7 @@ class MethodParameters {
226
226
  if (abstractMethod === true) {
227
227
  extraMeta.push("abstract" /* IdentifierMeta.Abstract */);
228
228
  }
229
- const id = new method_param_1.MethodParam().runSyntax(p, input, [...meta, ...extraMeta]);
229
+ const id = method_param_1.MethodParam.runSyntax(p, input, [...meta, ...extraMeta]);
230
230
  input.scope.addIdentifier(id);
231
231
  target.push(id);
232
232
  if (opt.findDirectTokenByText("OPTIONAL")) {
@@ -247,7 +247,7 @@ class MethodParameters {
247
247
  }
248
248
  const params = source.findAllExpressions(Expressions.MethodParam);
249
249
  for (const param of params) {
250
- target.push(new method_param_1.MethodParam().runSyntax(param, input, meta));
250
+ target.push(method_param_1.MethodParam.runSyntax(param, input, meta));
251
251
  }
252
252
  }
253
253
  }
@@ -7,7 +7,7 @@ class CDSDetermineTypes {
7
7
  parseType(reg, parsedData, ddlsName) {
8
8
  const ddic = new ddic_1.DDIC(reg);
9
9
  if ((parsedData === null || parsedData === void 0 ? void 0 : parsedData.fields.length) === 0) {
10
- return new basic_1.VoidType("DDLS:todo");
10
+ return basic_1.VoidType.get("DDLS:todo");
11
11
  }
12
12
  else {
13
13
  const components = [];
@@ -23,7 +23,7 @@ class CDSDetermineTypes {
23
23
  || parsedData.associations.find((s) => { var _a; return ((_a = s.as) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === prefixUpper; }))) {
24
24
  components.push({
25
25
  name: f.name,
26
- type: new basic_1.VoidType("DDLS:association"),
26
+ type: basic_1.VoidType.get("DDLS:association"),
27
27
  });
28
28
  continue;
29
29
  }
@@ -31,7 +31,7 @@ class CDSDetermineTypes {
31
31
  if (prefixUpper.startsWith("_")) {
32
32
  components.push({
33
33
  name: f.name,
34
- type: new basic_1.VoidType("DDLS:association"),
34
+ type: basic_1.VoidType.get("DDLS:association"),
35
35
  });
36
36
  continue;
37
37
  }
@@ -75,14 +75,14 @@ class CDSDetermineTypes {
75
75
  else {
76
76
  components.push({
77
77
  name: f.name,
78
- type: new basic_1.VoidType(source.name),
78
+ type: basic_1.VoidType.get(source.name),
79
79
  });
80
80
  }
81
81
  }
82
82
  else {
83
83
  components.push({
84
84
  name: f.name,
85
- type: new basic_1.VoidType("DDLS:fieldname:" + ddlsName),
85
+ type: basic_1.VoidType.get("DDLS:fieldname:" + ddlsName),
86
86
  });
87
87
  }
88
88
  }
package/build/src/ddic.js CHANGED
@@ -48,7 +48,7 @@ class DDIC {
48
48
  case "STRING":
49
49
  return Types.StringType.get({ qualifiedName: qualifiedName || name });
50
50
  case "XSTRING":
51
- return new Types.XStringType({ qualifiedName: qualifiedName || name });
51
+ return Types.XStringType.get({ qualifiedName: qualifiedName || name });
52
52
  case "D":
53
53
  return new Types.DateType({ qualifiedName: qualifiedName || name });
54
54
  case "T":
@@ -60,13 +60,13 @@ class DDIC {
60
60
  case "DECFLOAT":
61
61
  return new Types.DecFloatType({ qualifiedName: qualifiedName });
62
62
  case "ANY":
63
- return new Types.AnyType({ qualifiedName: qualifiedName });
63
+ return Types.AnyType.get({ qualifiedName: qualifiedName });
64
64
  case "SIMPLE":
65
65
  return new Types.SimpleType({ qualifiedName: qualifiedName });
66
66
  case "%_C_POINTER":
67
67
  return new Types.HexType(8, qualifiedName);
68
68
  case "TABLE":
69
- return new Types.TableType(new Types.AnyType(), { withHeader: false, keyType: Types.TableKeyType.default });
69
+ return new Types.TableType(Types.AnyType.get(), { withHeader: false, keyType: Types.TableKeyType.default });
70
70
  case "DATA":
71
71
  return new Types.DataType({ qualifiedName: qualifiedName });
72
72
  case "NUMERIC":
@@ -146,7 +146,7 @@ class DDIC {
146
146
  return { type: new basic_1.UnknownType(name) };
147
147
  }
148
148
  else {
149
- return { type: new basic_1.VoidType(name) };
149
+ return { type: basic_1.VoidType.get(name) };
150
150
  }
151
151
  }
152
152
  lookupNoVoid(name) {
@@ -196,7 +196,7 @@ class DDIC {
196
196
  return { type: new Types.UnknownType(name + " not found, lookup") };
197
197
  }
198
198
  else {
199
- return { type: new Types.VoidType(name) };
199
+ return { type: Types.VoidType.get(name) };
200
200
  }
201
201
  }
202
202
  lookupDomain(name, dataElement, description) {
@@ -208,7 +208,7 @@ class DDIC {
208
208
  return { type: new Types.UnknownType(name + ", lookupDomain"), object: undefined };
209
209
  }
210
210
  else {
211
- return { type: new Types.VoidType(name), object: undefined };
211
+ return { type: Types.VoidType.get(name), object: undefined };
212
212
  }
213
213
  }
214
214
  lookupDataElement(name) {
@@ -223,7 +223,7 @@ class DDIC {
223
223
  return { type: new Types.UnknownType(name + " not found, lookupDataElement") };
224
224
  }
225
225
  else {
226
- return { type: new Types.VoidType(name) };
226
+ return { type: Types.VoidType.get(name) };
227
227
  }
228
228
  }
229
229
  lookupTableOrView(name) {
@@ -271,7 +271,7 @@ class DDIC {
271
271
  return new Types.UnknownType(name + " not found, lookupTable");
272
272
  }
273
273
  else {
274
- return new Types.VoidType(name);
274
+ return Types.VoidType.get(name);
275
275
  }
276
276
  }
277
277
  lookupView(name) {
@@ -286,7 +286,7 @@ class DDIC {
286
286
  return { type: new Types.UnknownType(name + " not found, lookupView") };
287
287
  }
288
288
  else {
289
- return { type: new Types.VoidType(name) };
289
+ return { type: Types.VoidType.get(name) };
290
290
  }
291
291
  }
292
292
  lookupTableType(name) {
@@ -301,7 +301,7 @@ class DDIC {
301
301
  return { type: new Types.UnknownType(name + " not found, lookupTableType") };
302
302
  }
303
303
  else {
304
- return { type: new Types.VoidType(name) };
304
+ return { type: Types.VoidType.get(name) };
305
305
  }
306
306
  }
307
307
  textToType(input) {
@@ -390,7 +390,7 @@ class DDIC {
390
390
  case "RSTR": // 256 <= len
391
391
  case "RAWSTRING": // 256 <= len
392
392
  case "GEOM_EWKB":
393
- return new Types.XStringType({ qualifiedName: input.qualifiedName });
393
+ return Types.XStringType.get({ qualifiedName: input.qualifiedName });
394
394
  case "D16S":
395
395
  case "D34S":
396
396
  case "DF16_SCL":
@@ -43,7 +43,7 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
43
43
  return new basic_1.UnknownType(this.parsedXML.rollname + " not found");
44
44
  }
45
45
  else {
46
- return new basic_1.VoidType(this.parsedXML.rollname);
46
+ return basic_1.VoidType.get(this.parsedXML.rollname);
47
47
  }
48
48
  }
49
49
  else {
@@ -39,7 +39,7 @@ class LockObject extends _abstract_object_1.AbstractObject {
39
39
  return new basic_1.UnknownType(this.parsedXML.primaryTable + " not found");
40
40
  }
41
41
  else {
42
- return new basic_1.VoidType(this.parsedXML.primaryTable);
42
+ return basic_1.VoidType.get(this.parsedXML.primaryTable);
43
43
  }
44
44
  }
45
45
  else {
@@ -53,11 +53,11 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
53
53
  return new basic_1.UnknownType(this.parsedXML.objectName + " not found");
54
54
  }
55
55
  else {
56
- return new basic_1.VoidType(this.parsedXML.objectName);
56
+ return basic_1.VoidType.get(this.parsedXML.objectName);
57
57
  }
58
58
  }
59
59
  else if (((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.objectType) !== "S" && ((_c = this.parsedXML) === null || _c === void 0 ? void 0 : _c.objectName)) {
60
- return new basic_1.VoidType(this.parsedXML.objectName);
60
+ return basic_1.VoidType.get(this.parsedXML.objectName);
61
61
  }
62
62
  else {
63
63
  return new basic_1.UnknownType("Parsing error");
@@ -160,7 +160,7 @@ class Table extends _abstract_object_1.AbstractObject {
160
160
  if (field.ROLLNAME === "DATA") {
161
161
  components.push({
162
162
  name: field.FIELDNAME,
163
- type: new basic_1.DataReference(new basic_1.AnyType())
163
+ type: new basic_1.DataReference(basic_1.AnyType.get())
164
164
  });
165
165
  }
166
166
  else if (field.ROLLNAME === "OBJECT") {
@@ -55,7 +55,7 @@ class View extends _abstract_object_1.AbstractObject {
55
55
  else if (this.parsedData.header.VIEWCLASS === ViewClass.ExternalView) {
56
56
  components.push({
57
57
  name: field.VIEWFIELD,
58
- type: new Types.VoidType("ExternalView")
58
+ type: Types.VoidType.get("ExternalView")
59
59
  });
60
60
  continue;
61
61
  }
@@ -67,7 +67,7 @@ class Registry {
67
67
  }
68
68
  static abaplintVersion() {
69
69
  // magic, see build script "version.sh"
70
- return "2.113.126";
70
+ return "2.113.128";
71
71
  }
72
72
  getDDICReferences() {
73
73
  return this.ddicReferences;
@@ -1239,7 +1239,8 @@ ${indentation}${uniqueName1}-attr3 = 'IF_T100_DYN_MSG~MSGV3'.
1239
1239
  ${indentation}${uniqueName1}-attr4 = 'IF_T100_DYN_MSG~MSGV4'.\n`;
1240
1240
  }
1241
1241
  abap += `${indentation}DATA ${uniqueName2} TYPE REF TO ${className}.
1242
- ${indentation}CREATE OBJECT ${uniqueName2} EXPORTING textid = ${uniqueName1}.\n`;
1242
+ ${indentation}CREATE OBJECT ${uniqueName2}.
1243
+ ${indentation}${uniqueName2}->if_t100_message~t100key = ${uniqueName1}.\n`;
1243
1244
  if (withs.length > 0) {
1244
1245
  abap += `${indentation}${uniqueName2}->if_t100_dyn_msg~msgty = 'E'.\n`;
1245
1246
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.113.126",
3
+ "version": "2.113.128",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",
@@ -53,17 +53,17 @@
53
53
  "@microsoft/api-extractor": "^7.52.8",
54
54
  "@types/chai": "^4.3.20",
55
55
  "@types/mocha": "^10.0.10",
56
- "@types/node": "^22.15.29",
56
+ "@types/node": "^24.0.1",
57
57
  "chai": "^4.5.0",
58
- "eslint": "^9.28.0",
59
- "mocha": "^11.5.0",
58
+ "eslint": "^9.29.0",
59
+ "mocha": "^11.6.0",
60
60
  "c8": "^10.1.3",
61
61
  "source-map-support": "^0.5.21",
62
62
  "ts-json-schema-generator": "^2.4.0",
63
63
  "typescript": "^5.8.3"
64
64
  },
65
65
  "dependencies": {
66
- "fast-xml-parser": "^5.2.3",
66
+ "fast-xml-parser": "^5.2.5",
67
67
  "json5": "^2.2.3",
68
68
  "vscode-languageserver-types": "^3.17.5"
69
69
  }