@abaplint/core 2.111.1 → 2.112.1

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 (215) hide show
  1. package/build/abaplint.d.ts +17 -8
  2. package/build/src/abap/5_syntax/_builtin.js +2 -2
  3. package/build/src/abap/5_syntax/_current_scope.js +2 -0
  4. package/build/src/abap/5_syntax/_procedural.js +6 -2
  5. package/build/src/abap/5_syntax/_syntax_input.js +11 -0
  6. package/build/src/abap/5_syntax/assert_error.js +7 -0
  7. package/build/src/abap/5_syntax/basic_types.js +78 -79
  8. package/build/src/abap/5_syntax/expressions/attribute_chain.js +15 -8
  9. package/build/src/abap/5_syntax/expressions/attribute_name.js +24 -11
  10. package/build/src/abap/5_syntax/expressions/cast.js +24 -13
  11. package/build/src/abap/5_syntax/expressions/compare.js +4 -4
  12. package/build/src/abap/5_syntax/expressions/component_chain.js +26 -11
  13. package/build/src/abap/5_syntax/expressions/component_compare.js +7 -4
  14. package/build/src/abap/5_syntax/expressions/component_compare_simple.js +11 -6
  15. package/build/src/abap/5_syntax/expressions/component_cond.js +3 -3
  16. package/build/src/abap/5_syntax/expressions/component_name.js +10 -5
  17. package/build/src/abap/5_syntax/expressions/cond.js +3 -6
  18. package/build/src/abap/5_syntax/expressions/cond_body.js +6 -6
  19. package/build/src/abap/5_syntax/expressions/conv_body.js +9 -8
  20. package/build/src/abap/5_syntax/expressions/corresponding_body.js +3 -3
  21. package/build/src/abap/5_syntax/expressions/data_definition.js +7 -7
  22. package/build/src/abap/5_syntax/expressions/database_table.js +9 -7
  23. package/build/src/abap/5_syntax/expressions/default.js +2 -2
  24. package/build/src/abap/5_syntax/expressions/dereference.js +5 -2
  25. package/build/src/abap/5_syntax/expressions/dynamic.js +2 -2
  26. package/build/src/abap/5_syntax/expressions/field_assignment.js +12 -5
  27. package/build/src/abap/5_syntax/expressions/field_chain.js +40 -25
  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 +11 -11
  32. package/build/src/abap/5_syntax/expressions/form_param.js +10 -9
  33. package/build/src/abap/5_syntax/expressions/fstarget.js +8 -5
  34. package/build/src/abap/5_syntax/expressions/inline_data.js +11 -8
  35. package/build/src/abap/5_syntax/expressions/inline_field_definition.js +12 -8
  36. package/build/src/abap/5_syntax/expressions/inline_fs.js +7 -7
  37. package/build/src/abap/5_syntax/expressions/inline_loop_definition.js +16 -11
  38. package/build/src/abap/5_syntax/expressions/let.js +3 -3
  39. package/build/src/abap/5_syntax/expressions/loop_group_by.js +5 -15
  40. package/build/src/abap/5_syntax/expressions/message_source.js +4 -4
  41. package/build/src/abap/5_syntax/expressions/method_call_body.js +4 -4
  42. package/build/src/abap/5_syntax/expressions/method_call_chain.js +34 -25
  43. package/build/src/abap/5_syntax/expressions/method_call_param.js +33 -14
  44. package/build/src/abap/5_syntax/expressions/method_def_returning.js +7 -6
  45. package/build/src/abap/5_syntax/expressions/method_param.js +11 -10
  46. package/build/src/abap/5_syntax/expressions/method_parameters.js +76 -49
  47. package/build/src/abap/5_syntax/expressions/method_source.js +47 -38
  48. package/build/src/abap/5_syntax/expressions/new_object.js +48 -28
  49. package/build/src/abap/5_syntax/expressions/raise_with.js +2 -2
  50. package/build/src/abap/5_syntax/expressions/reduce_body.js +10 -10
  51. package/build/src/abap/5_syntax/expressions/reduce_next.js +3 -3
  52. package/build/src/abap/5_syntax/expressions/select.js +48 -33
  53. package/build/src/abap/5_syntax/expressions/select_loop.js +2 -2
  54. package/build/src/abap/5_syntax/expressions/source.js +74 -64
  55. package/build/src/abap/5_syntax/expressions/source_field.js +12 -6
  56. package/build/src/abap/5_syntax/expressions/source_field_symbol.js +8 -4
  57. package/build/src/abap/5_syntax/expressions/sql_compare.js +11 -19
  58. package/build/src/abap/5_syntax/expressions/sql_for_all_entries.js +7 -4
  59. package/build/src/abap/5_syntax/expressions/sql_from.js +3 -3
  60. package/build/src/abap/5_syntax/expressions/sql_in.js +34 -0
  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 +16 -8
  64. package/build/src/abap/5_syntax/expressions/switch_body.js +8 -4
  65. package/build/src/abap/5_syntax/expressions/table_expression.js +2 -2
  66. package/build/src/abap/5_syntax/expressions/target.js +50 -29
  67. package/build/src/abap/5_syntax/expressions/type_table.js +7 -7
  68. package/build/src/abap/5_syntax/expressions/value_body.js +17 -12
  69. package/build/src/abap/5_syntax/global_definitions/find_global_definitions.js +19 -6
  70. package/build/src/abap/5_syntax/spaghetti_scope.js +2 -1
  71. package/build/src/abap/5_syntax/statements/add.js +3 -3
  72. package/build/src/abap/5_syntax/statements/add_corresponding.js +3 -3
  73. package/build/src/abap/5_syntax/statements/append.js +25 -14
  74. package/build/src/abap/5_syntax/statements/assert.js +2 -2
  75. package/build/src/abap/5_syntax/statements/assign.js +17 -12
  76. package/build/src/abap/5_syntax/statements/authority_check.js +2 -2
  77. package/build/src/abap/5_syntax/statements/call.js +8 -5
  78. package/build/src/abap/5_syntax/statements/call_badi.js +4 -4
  79. package/build/src/abap/5_syntax/statements/call_function.js +12 -9
  80. package/build/src/abap/5_syntax/statements/call_kernel.js +2 -2
  81. package/build/src/abap/5_syntax/statements/call_transaction.js +3 -3
  82. package/build/src/abap/5_syntax/statements/call_transformation.js +5 -5
  83. package/build/src/abap/5_syntax/statements/case.js +2 -2
  84. package/build/src/abap/5_syntax/statements/case_type.js +2 -2
  85. package/build/src/abap/5_syntax/statements/catch.js +24 -19
  86. package/build/src/abap/5_syntax/statements/check.js +2 -2
  87. package/build/src/abap/5_syntax/statements/class_data.js +9 -5
  88. package/build/src/abap/5_syntax/statements/class_deferred.js +2 -2
  89. package/build/src/abap/5_syntax/statements/class_implementation.js +16 -13
  90. package/build/src/abap/5_syntax/statements/class_local_friends.js +16 -9
  91. package/build/src/abap/5_syntax/statements/clear.js +3 -3
  92. package/build/src/abap/5_syntax/statements/close_dataset.js +2 -2
  93. package/build/src/abap/5_syntax/statements/collect.js +4 -4
  94. package/build/src/abap/5_syntax/statements/commit_entities.js +4 -4
  95. package/build/src/abap/5_syntax/statements/concatenate.js +18 -11
  96. package/build/src/abap/5_syntax/statements/condense.js +2 -2
  97. package/build/src/abap/5_syntax/statements/constant.js +6 -5
  98. package/build/src/abap/5_syntax/statements/controls.js +5 -5
  99. package/build/src/abap/5_syntax/statements/convert.js +8 -8
  100. package/build/src/abap/5_syntax/statements/create_data.js +11 -11
  101. package/build/src/abap/5_syntax/statements/create_object.js +49 -26
  102. package/build/src/abap/5_syntax/statements/data.js +8 -4
  103. package/build/src/abap/5_syntax/statements/delete_cluster.js +4 -4
  104. package/build/src/abap/5_syntax/statements/delete_database.js +5 -5
  105. package/build/src/abap/5_syntax/statements/delete_internal.js +7 -7
  106. package/build/src/abap/5_syntax/statements/delete_report.js +2 -2
  107. package/build/src/abap/5_syntax/statements/describe.js +13 -13
  108. package/build/src/abap/5_syntax/statements/divide.js +3 -3
  109. package/build/src/abap/5_syntax/statements/do.js +8 -5
  110. package/build/src/abap/5_syntax/statements/editor_call.js +3 -3
  111. package/build/src/abap/5_syntax/statements/else_if.js +2 -2
  112. package/build/src/abap/5_syntax/statements/export.js +5 -5
  113. package/build/src/abap/5_syntax/statements/fieldsymbol.js +4 -4
  114. package/build/src/abap/5_syntax/statements/find.js +13 -13
  115. package/build/src/abap/5_syntax/statements/form.js +10 -7
  116. package/build/src/abap/5_syntax/statements/format.js +2 -2
  117. package/build/src/abap/5_syntax/statements/get_badi.js +4 -4
  118. package/build/src/abap/5_syntax/statements/get_bit.js +9 -6
  119. package/build/src/abap/5_syntax/statements/get_cursor.js +2 -2
  120. package/build/src/abap/5_syntax/statements/get_locale.js +3 -3
  121. package/build/src/abap/5_syntax/statements/get_parameter.js +4 -4
  122. package/build/src/abap/5_syntax/statements/get_reference.js +8 -5
  123. package/build/src/abap/5_syntax/statements/get_run_time.js +3 -3
  124. package/build/src/abap/5_syntax/statements/get_time.js +3 -3
  125. package/build/src/abap/5_syntax/statements/if.js +2 -2
  126. package/build/src/abap/5_syntax/statements/import.js +5 -5
  127. package/build/src/abap/5_syntax/statements/import_dynpro.js +3 -3
  128. package/build/src/abap/5_syntax/statements/include_type.js +9 -5
  129. package/build/src/abap/5_syntax/statements/insert_database.js +5 -5
  130. package/build/src/abap/5_syntax/statements/insert_field_group.js +4 -4
  131. package/build/src/abap/5_syntax/statements/insert_internal.js +22 -13
  132. package/build/src/abap/5_syntax/statements/insert_report.js +2 -2
  133. package/build/src/abap/5_syntax/statements/insert_textpool.js +2 -2
  134. package/build/src/abap/5_syntax/statements/interface_deferred.js +2 -2
  135. package/build/src/abap/5_syntax/statements/log_point.js +2 -2
  136. package/build/src/abap/5_syntax/statements/loop.js +29 -16
  137. package/build/src/abap/5_syntax/statements/loop_at_screen.js +3 -3
  138. package/build/src/abap/5_syntax/statements/message.js +6 -6
  139. package/build/src/abap/5_syntax/statements/method_implementation.js +18 -13
  140. package/build/src/abap/5_syntax/statements/modify_database.js +8 -8
  141. package/build/src/abap/5_syntax/statements/modify_entities.js +4 -4
  142. package/build/src/abap/5_syntax/statements/modify_internal.js +15 -8
  143. package/build/src/abap/5_syntax/statements/modify_screen.js +2 -2
  144. package/build/src/abap/5_syntax/statements/move.js +17 -10
  145. package/build/src/abap/5_syntax/statements/move_corresponding.js +14 -7
  146. package/build/src/abap/5_syntax/statements/multiply.js +3 -3
  147. package/build/src/abap/5_syntax/statements/open_dataset.js +3 -3
  148. package/build/src/abap/5_syntax/statements/pack.js +3 -3
  149. package/build/src/abap/5_syntax/statements/parameter.js +11 -6
  150. package/build/src/abap/5_syntax/statements/perform.js +12 -8
  151. package/build/src/abap/5_syntax/statements/raise.js +23 -18
  152. package/build/src/abap/5_syntax/statements/raise_event.js +4 -4
  153. package/build/src/abap/5_syntax/statements/ranges.js +6 -5
  154. package/build/src/abap/5_syntax/statements/read_entities.js +4 -4
  155. package/build/src/abap/5_syntax/statements/read_report.js +3 -3
  156. package/build/src/abap/5_syntax/statements/read_table.js +40 -21
  157. package/build/src/abap/5_syntax/statements/read_textpool.js +3 -3
  158. package/build/src/abap/5_syntax/statements/receive.js +3 -3
  159. package/build/src/abap/5_syntax/statements/replace.js +3 -3
  160. package/build/src/abap/5_syntax/statements/scan.js +3 -3
  161. package/build/src/abap/5_syntax/statements/search.js +2 -2
  162. package/build/src/abap/5_syntax/statements/select.js +2 -2
  163. package/build/src/abap/5_syntax/statements/select_loop.js +2 -2
  164. package/build/src/abap/5_syntax/statements/selection_screen.js +4 -4
  165. package/build/src/abap/5_syntax/statements/selectoption.js +9 -6
  166. package/build/src/abap/5_syntax/statements/set_bit.js +8 -5
  167. package/build/src/abap/5_syntax/statements/set_handler.js +3 -3
  168. package/build/src/abap/5_syntax/statements/set_locale.js +3 -3
  169. package/build/src/abap/5_syntax/statements/set_parameter.js +2 -2
  170. package/build/src/abap/5_syntax/statements/set_pf_status.js +2 -2
  171. package/build/src/abap/5_syntax/statements/set_titlebar.js +2 -2
  172. package/build/src/abap/5_syntax/statements/shift.js +15 -8
  173. package/build/src/abap/5_syntax/statements/sort.js +16 -7
  174. package/build/src/abap/5_syntax/statements/split.js +12 -7
  175. package/build/src/abap/5_syntax/statements/static.js +4 -4
  176. package/build/src/abap/5_syntax/statements/submit.js +4 -4
  177. package/build/src/abap/5_syntax/statements/subtract.js +3 -3
  178. package/build/src/abap/5_syntax/statements/subtract_corresponding.js +3 -3
  179. package/build/src/abap/5_syntax/statements/syntax_check.js +3 -3
  180. package/build/src/abap/5_syntax/statements/system_call.js +2 -2
  181. package/build/src/abap/5_syntax/statements/tables.js +7 -7
  182. package/build/src/abap/5_syntax/statements/transfer.js +3 -3
  183. package/build/src/abap/5_syntax/statements/translate.js +3 -3
  184. package/build/src/abap/5_syntax/statements/truncate_dataset.js +2 -2
  185. package/build/src/abap/5_syntax/statements/type.js +12 -7
  186. package/build/src/abap/5_syntax/statements/unassign.js +7 -4
  187. package/build/src/abap/5_syntax/statements/unpack.js +3 -3
  188. package/build/src/abap/5_syntax/statements/update_database.js +11 -11
  189. package/build/src/abap/5_syntax/statements/wait.js +3 -3
  190. package/build/src/abap/5_syntax/statements/when.js +2 -2
  191. package/build/src/abap/5_syntax/statements/when_type.js +9 -6
  192. package/build/src/abap/5_syntax/statements/while.js +4 -4
  193. package/build/src/abap/5_syntax/statements/with.js +3 -3
  194. package/build/src/abap/5_syntax/statements/with_loop.js +3 -3
  195. package/build/src/abap/5_syntax/statements/write.js +14 -10
  196. package/build/src/abap/5_syntax/structures/class_data.js +3 -3
  197. package/build/src/abap/5_syntax/structures/constants.js +6 -5
  198. package/build/src/abap/5_syntax/structures/data.js +17 -13
  199. package/build/src/abap/5_syntax/structures/statics.js +16 -11
  200. package/build/src/abap/5_syntax/structures/type_enum.js +15 -13
  201. package/build/src/abap/5_syntax/structures/types.js +9 -9
  202. package/build/src/abap/5_syntax/syntax.js +32 -16
  203. package/build/src/abap/types/class_attributes.js +30 -30
  204. package/build/src/abap/types/class_definition.js +29 -29
  205. package/build/src/abap/types/event_definition.js +5 -5
  206. package/build/src/abap/types/form_definition.js +13 -13
  207. package/build/src/abap/types/interface_definition.js +23 -22
  208. package/build/src/abap/types/method_definition.js +10 -10
  209. package/build/src/abap/types/method_definitions.js +9 -10
  210. package/build/src/abap/types/method_parameters.js +29 -29
  211. package/build/src/issue.js +12 -0
  212. package/build/src/registry.js +1 -1
  213. package/build/src/rules/check_syntax.js +2 -1
  214. package/build/src/rules/double_space.js +6 -3
  215. package/package.json +3 -3
@@ -9,20 +9,25 @@ const target_1 = require("../expressions/target");
9
9
  const fstarget_1 = require("../expressions/fstarget");
10
10
  const component_compare_simple_1 = require("../expressions/component_compare_simple");
11
11
  const _type_utils_1 = require("../_type_utils");
12
+ const _syntax_input_1 = require("../_syntax_input");
12
13
  class ReadTable {
13
- runSyntax(node, scope, filename) {
14
+ runSyntax(node, input) {
14
15
  const concat = node.concatTokens().toUpperCase();
15
16
  const sources = node.findDirectExpressions(Expressions.Source);
16
17
  let firstSource = node.findDirectExpression(Expressions.SimpleSource2);
17
18
  if (firstSource === undefined) {
18
19
  firstSource = sources[0];
19
20
  }
20
- const sourceType = firstSource ? new source_1.Source().runSyntax(firstSource, scope, filename) : undefined;
21
+ const sourceType = firstSource ? new source_1.Source().runSyntax(firstSource, input) : undefined;
21
22
  if (sourceType === undefined) {
22
- throw new Error("No source type determined, read table");
23
+ const message = "No source type determined, read table";
24
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
25
+ return;
23
26
  }
24
27
  else if (!(sourceType instanceof basic_1.TableType) && !(sourceType instanceof basic_1.VoidType)) {
25
- throw new Error("Read table, not a table type");
28
+ const message = "Read table, not a table type";
29
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
30
+ return;
26
31
  }
27
32
  let rowType = sourceType;
28
33
  if (rowType instanceof basic_1.TableType) {
@@ -30,20 +35,24 @@ class ReadTable {
30
35
  }
31
36
  const components = node.findDirectExpression(Expressions.ComponentCompareSimple);
32
37
  if (components !== undefined) {
33
- new component_compare_simple_1.ComponentCompareSimple().runSyntax(components, scope, filename, rowType);
38
+ new component_compare_simple_1.ComponentCompareSimple().runSyntax(components, input, rowType);
34
39
  }
35
40
  const indexSource = node.findExpressionAfterToken("INDEX");
36
41
  if (indexSource) {
37
- const indexType = new source_1.Source().runSyntax(indexSource, scope, filename);
38
- if (new _type_utils_1.TypeUtils(scope).isAssignable(indexType, basic_1.IntegerType.get()) === false) {
39
- throw new Error("READ TABLE, INDEX must be simple");
42
+ const indexType = new source_1.Source().runSyntax(indexSource, input);
43
+ if (new _type_utils_1.TypeUtils(input.scope).isAssignable(indexType, basic_1.IntegerType.get()) === false) {
44
+ const message = "READ TABLE, INDEX must be simple";
45
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
46
+ return;
40
47
  }
41
48
  }
42
49
  const fromSource = node.findExpressionAfterToken("FROM");
43
50
  if (fromSource) {
44
- const fromType = new source_1.Source().runSyntax(fromSource, scope, filename);
45
- if (new _type_utils_1.TypeUtils(scope).isAssignable(fromType, rowType) === false) {
46
- throw new Error("READ TABLE, FROM must be compatible");
51
+ const fromType = new source_1.Source().runSyntax(fromSource, input);
52
+ if (new _type_utils_1.TypeUtils(input.scope).isAssignable(fromType, rowType) === false) {
53
+ const message = "READ TABLE, FROM must be compatible";
54
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, fromSource.getFirstToken(), message));
55
+ return;
47
56
  }
48
57
  }
49
58
  const afterKey = node.findExpressionAfterToken("KEY");
@@ -51,10 +60,12 @@ class ReadTable {
51
60
  if (s === firstSource || s === indexSource || s === fromSource) {
52
61
  continue;
53
62
  }
54
- const type = new source_1.Source().runSyntax(s, scope, filename);
63
+ const type = new source_1.Source().runSyntax(s, input);
55
64
  if (s === afterKey) {
56
65
  if (type instanceof basic_1.StringType || type instanceof basic_1.TableType || type instanceof basic_1.ObjectReferenceType) {
57
- throw new Error("Key cannot be string or table or reference");
66
+ const message = "Key cannot be string or table or reference";
67
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, s.getFirstToken(), message));
68
+ return;
58
69
  }
59
70
  }
60
71
  }
@@ -67,22 +78,26 @@ class ReadTable {
67
78
  const fst = target.findDirectExpression(Expressions.FSTarget);
68
79
  const t = target.findFirstExpression(Expressions.Target);
69
80
  if (inline) {
70
- new inline_data_1.InlineData().runSyntax(inline, scope, filename, rowType);
81
+ new inline_data_1.InlineData().runSyntax(inline, input, rowType);
71
82
  }
72
83
  else if (fst) {
73
- new fstarget_1.FSTarget().runSyntax(fst, scope, filename, rowType);
84
+ new fstarget_1.FSTarget().runSyntax(fst, input, rowType);
74
85
  }
75
86
  else if (t) {
76
- const targetType = new target_1.Target().runSyntax(t, scope, filename);
77
- if (new _type_utils_1.TypeUtils(scope).isAssignable(rowType, targetType) === false) {
78
- throw new Error("Incompatible types");
87
+ const targetType = new target_1.Target().runSyntax(t, input);
88
+ if (new _type_utils_1.TypeUtils(input.scope).isAssignable(rowType, targetType) === false) {
89
+ const message = "Incompatible types";
90
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
91
+ return;
79
92
  }
80
93
  }
81
94
  }
82
95
  if (target === undefined && concat.includes(" TRANSPORTING NO FIELDS ") === false) {
83
96
  // if sourceType is void, assume its with header
84
97
  if (sourceType instanceof basic_1.TableType && sourceType.isWithHeader() === false) {
85
- throw new Error("READ TABLE, define INTO or TRANSPORTING NO FIELDS");
98
+ const message = "READ TABLE, define INTO or TRANSPORTING NO FIELDS";
99
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
100
+ return;
86
101
  }
87
102
  }
88
103
  const transporting = node.findDirectExpression(Expressions.TransportingFields);
@@ -91,7 +106,9 @@ class ReadTable {
91
106
  && !(rowType instanceof basic_1.UnknownType)
92
107
  && !(rowType instanceof basic_1.AnyType)) {
93
108
  if (!(rowType instanceof basic_1.StructureType)) {
94
- throw new Error("READ TABLE, source not structured");
109
+ const message = "READ TABLE, source not structured";
110
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
111
+ return;
95
112
  }
96
113
  for (const t of (transporting === null || transporting === void 0 ? void 0 : transporting.findDirectExpressions(Expressions.FieldSub)) || []) {
97
114
  const field = t.concatTokens();
@@ -100,7 +117,9 @@ class ReadTable {
100
117
  continue;
101
118
  }
102
119
  if (rowType.getComponentByName(field) === undefined) {
103
- throw new Error("READ TABLE, field " + field + " not found in source");
120
+ const message = "READ TABLE, field " + field + " not found in source";
121
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
122
+ return;
104
123
  }
105
124
  }
106
125
  }
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  const target_1 = require("../expressions/target");
7
7
  class ReadTextpool {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  for (const s of node.findDirectExpressions(Expressions.Source)) {
10
- new source_1.Source().runSyntax(s, scope, filename);
10
+ new source_1.Source().runSyntax(s, input);
11
11
  }
12
12
  for (const t of node.findDirectExpressions(Expressions.SimpleTarget)) {
13
- new target_1.Target().runSyntax(t, scope, filename);
13
+ new target_1.Target().runSyntax(t, input);
14
14
  }
15
15
  }
16
16
  }
@@ -5,14 +5,14 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const target_1 = require("../expressions/target");
6
6
  const source_1 = require("../expressions/source");
7
7
  class Receive {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  // todo, lots of work here, similar to call_function.ts
10
10
  // just recurse
11
11
  for (const s of node.findAllExpressions(Expressions.Source)) {
12
- new source_1.Source().runSyntax(s, scope, filename);
12
+ new source_1.Source().runSyntax(s, input);
13
13
  }
14
14
  for (const t of node.findAllExpressions(Expressions.Target)) {
15
- new target_1.Target().runSyntax(t, scope, filename);
15
+ new target_1.Target().runSyntax(t, input);
16
16
  }
17
17
  }
18
18
  }
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  const target_1 = require("../expressions/target");
7
7
  class Replace {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  for (const s of node.findDirectExpressions(Expressions.Source)) {
10
- new source_1.Source().runSyntax(s, scope, filename);
10
+ new source_1.Source().runSyntax(s, input);
11
11
  }
12
12
  for (const t of node.findDirectExpressions(Expressions.Target)) {
13
- new target_1.Target().runSyntax(t, scope, filename);
13
+ new target_1.Target().runSyntax(t, input);
14
14
  }
15
15
  }
16
16
  }
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  const target_1 = require("../expressions/target");
7
7
  class Scan {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  for (const s of node.findDirectExpressions(Expressions.Source)) {
10
- new source_1.Source().runSyntax(s, scope, filename);
10
+ new source_1.Source().runSyntax(s, input);
11
11
  }
12
12
  for (const t of node.findDirectExpressions(Expressions.Target)) {
13
- new target_1.Target().runSyntax(t, scope, filename);
13
+ new target_1.Target().runSyntax(t, input);
14
14
  }
15
15
  }
16
16
  }
@@ -4,9 +4,9 @@ exports.Search = void 0;
4
4
  const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  class Search {
7
- runSyntax(node, scope, filename) {
7
+ runSyntax(node, input) {
8
8
  for (const s of node.findDirectExpressions(Expressions.Source)) {
9
- new source_1.Source().runSyntax(s, scope, filename);
9
+ new source_1.Source().runSyntax(s, input);
10
10
  }
11
11
  }
12
12
  }
@@ -4,12 +4,12 @@ exports.Select = void 0;
4
4
  const Expressions = require("../../2_statements/expressions");
5
5
  const select_1 = require("../expressions/select");
6
6
  class Select {
7
- runSyntax(node, scope, filename) {
7
+ runSyntax(node, input) {
8
8
  const selects = node.findDirectExpressions(Expressions.Select);
9
9
  for (let i = 0; i < selects.length; i++) {
10
10
  const last = i === selects.length - 1;
11
11
  const s = selects[i];
12
- new select_1.Select().runSyntax(s, scope, filename, last === false);
12
+ new select_1.Select().runSyntax(s, input, last === false);
13
13
  }
14
14
  }
15
15
  }
@@ -4,10 +4,10 @@ exports.SelectLoop = void 0;
4
4
  const Expressions = require("../../2_statements/expressions");
5
5
  const select_loop_1 = require("../expressions/select_loop");
6
6
  class SelectLoop {
7
- runSyntax(node, scope, filename) {
7
+ runSyntax(node, input) {
8
8
  const s = node.findDirectExpression(Expressions.SelectLoop);
9
9
  if (s) {
10
- new select_loop_1.SelectLoop().runSyntax(s, scope, filename);
10
+ new select_loop_1.SelectLoop().runSyntax(s, input);
11
11
  }
12
12
  }
13
13
  }
@@ -5,7 +5,7 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const _typed_identifier_1 = require("../../types/_typed_identifier");
6
6
  const basic_1 = require("../../types/basic");
7
7
  class SelectionScreen {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  const field = node.findFirstExpression(Expressions.InlineField);
10
10
  if (field === undefined) {
11
11
  return;
@@ -18,13 +18,13 @@ class SelectionScreen {
18
18
  { name: "DYNNR", type: new basic_1.CharacterType(4) },
19
19
  { name: "ACTIVETAB", type: new basic_1.CharacterType(132) },
20
20
  ]);
21
- scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, filename, type, ["selection_screen_tab" /* IdentifierMeta.SelectionScreenTab */]));
21
+ input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, input.filename, type, ["selection_screen_tab" /* IdentifierMeta.SelectionScreenTab */]));
22
22
  }
23
23
  else if (concat.startsWith("SELECTION-SCREEN TAB")) {
24
- scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, filename, new basic_1.CharacterType(83), ["selection_screen_tab" /* IdentifierMeta.SelectionScreenTab */]));
24
+ input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, input.filename, new basic_1.CharacterType(83), ["selection_screen_tab" /* IdentifierMeta.SelectionScreenTab */]));
25
25
  }
26
26
  else {
27
- scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, filename, new basic_1.CharacterType(83)));
27
+ input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, input.filename, new basic_1.CharacterType(83)));
28
28
  }
29
29
  }
30
30
  }
@@ -6,18 +6,21 @@ const _typed_identifier_1 = require("../../types/_typed_identifier");
6
6
  const basic_1 = require("../../types/basic");
7
7
  const basic_types_1 = require("../basic_types");
8
8
  const dynamic_1 = require("../expressions/dynamic");
9
+ const _syntax_input_1 = require("../_syntax_input");
9
10
  class SelectOption {
10
- runSyntax(node, scope, filename) {
11
+ runSyntax(node, input) {
11
12
  var _a;
12
13
  const nameToken = (_a = node.findFirstExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
13
14
  if (nameToken && nameToken.getStr().length > 8) {
14
- throw new Error("Select-option name too long, " + nameToken.getStr());
15
+ const message = "Select-option name too long, " + nameToken.getStr();
16
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, message));
17
+ return;
15
18
  }
16
19
  for (const d of node.findDirectExpressions(Expressions.Dynamic)) {
17
- new dynamic_1.Dynamic().runSyntax(d, scope, filename);
20
+ new dynamic_1.Dynamic().runSyntax(d, input);
18
21
  }
19
22
  const nameExpression = node.findFirstExpression(Expressions.FieldChain);
20
- let found = new basic_types_1.BasicTypes(filename, scope).resolveLikeName(nameExpression);
23
+ let found = new basic_types_1.BasicTypes(input).resolveLikeName(nameExpression);
21
24
  if (found && nameToken) {
22
25
  if (found instanceof basic_1.StructureType) {
23
26
  let length = 0;
@@ -39,11 +42,11 @@ class SelectOption {
39
42
  { name: "LOW", type: found },
40
43
  { name: "HIGH", type: found },
41
44
  ]);
42
- scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.TableType(stru, { withHeader: true, keyType: basic_1.TableKeyType.default })));
45
+ input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, new basic_1.TableType(stru, { withHeader: true, keyType: basic_1.TableKeyType.default })));
43
46
  return;
44
47
  }
45
48
  if (nameToken) {
46
- scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.UnknownType("Select option, fallback")));
49
+ input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, new basic_1.UnknownType("Select option, fallback")));
47
50
  }
48
51
  }
49
52
  }
@@ -5,15 +5,18 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  const target_1 = require("../expressions/target");
7
7
  const _type_utils_1 = require("../_type_utils");
8
+ const _syntax_input_1 = require("../_syntax_input");
8
9
  class SetBit {
9
- runSyntax(node, scope, filename) {
10
+ runSyntax(node, input) {
10
11
  for (const s of node.findDirectExpressions(Expressions.Source)) {
11
- new source_1.Source().runSyntax(s, scope, filename);
12
+ new source_1.Source().runSyntax(s, input);
12
13
  }
13
14
  for (const t of node.findDirectExpressions(Expressions.Target)) {
14
- const typ = new target_1.Target().runSyntax(t, scope, filename);
15
- if (typ && new _type_utils_1.TypeUtils(scope).isHexLike(typ) === false) {
16
- throw new Error("Input must be byte-like");
15
+ const typ = new target_1.Target().runSyntax(t, input);
16
+ if (typ && new _type_utils_1.TypeUtils(input.scope).isHexLike(typ) === false) {
17
+ const message = "Input must be byte-like";
18
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, t.getFirstToken(), message));
19
+ return;
17
20
  }
18
21
  }
19
22
  }
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  const method_source_1 = require("../expressions/method_source");
7
7
  class SetHandler {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  for (const s of node.findDirectExpressions(Expressions.Source)) {
10
- new source_1.Source().runSyntax(s, scope, filename);
10
+ new source_1.Source().runSyntax(s, input);
11
11
  }
12
12
  for (const s of node.findDirectExpressions(Expressions.MethodSource)) {
13
- new method_source_1.MethodSource().runSyntax(s, scope, filename);
13
+ new method_source_1.MethodSource().runSyntax(s, input);
14
14
  }
15
15
  }
16
16
  }
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const target_1 = require("../expressions/target");
6
6
  const source_1 = require("../expressions/source");
7
7
  class SetLocale {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  for (const s of node.findDirectExpressions(Expressions.Source)) {
10
- new source_1.Source().runSyntax(s, scope, filename);
10
+ new source_1.Source().runSyntax(s, input);
11
11
  }
12
12
  for (const t of node.findDirectExpressions(Expressions.Target)) {
13
- new target_1.Target().runSyntax(t, scope, filename);
13
+ new target_1.Target().runSyntax(t, input);
14
14
  }
15
15
  }
16
16
  }
@@ -4,9 +4,9 @@ exports.SetParameter = void 0;
4
4
  const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  class SetParameter {
7
- runSyntax(node, scope, filename) {
7
+ runSyntax(node, input) {
8
8
  for (const s of node.findDirectExpressions(Expressions.Source)) {
9
- new source_1.Source().runSyntax(s, scope, filename);
9
+ new source_1.Source().runSyntax(s, input);
10
10
  }
11
11
  }
12
12
  }
@@ -4,9 +4,9 @@ exports.SetPFStatus = void 0;
4
4
  const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  class SetPFStatus {
7
- runSyntax(node, scope, filename) {
7
+ runSyntax(node, input) {
8
8
  for (const s of node.findDirectExpressions(Expressions.Source)) {
9
- new source_1.Source().runSyntax(s, scope, filename);
9
+ new source_1.Source().runSyntax(s, input);
10
10
  }
11
11
  }
12
12
  }
@@ -4,9 +4,9 @@ exports.SetTitlebar = void 0;
4
4
  const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  class SetTitlebar {
7
- runSyntax(node, scope, filename) {
7
+ runSyntax(node, input) {
8
8
  for (const s of node.findDirectExpressions(Expressions.Source)) {
9
- new source_1.Source().runSyntax(s, scope, filename);
9
+ new source_1.Source().runSyntax(s, input);
10
10
  }
11
11
  }
12
12
  }
@@ -5,24 +5,31 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  const target_1 = require("../expressions/target");
7
7
  const _type_utils_1 = require("../_type_utils");
8
+ const _syntax_input_1 = require("../_syntax_input");
8
9
  class Shift {
9
- runSyntax(node, scope, filename) {
10
+ runSyntax(node, input) {
10
11
  for (const s of node.findDirectExpressions(Expressions.Source)) {
11
- new source_1.Source().runSyntax(s, scope, filename);
12
+ new source_1.Source().runSyntax(s, input);
12
13
  }
13
14
  const target = node.findDirectExpression(Expressions.Target);
14
15
  if (target === undefined) {
15
- throw new Error("Shift, Target not found");
16
+ const message = "Shift, Target not found";
17
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
18
+ return;
16
19
  }
17
- const targetType = new target_1.Target().runSyntax(target, scope, filename);
20
+ const targetType = new target_1.Target().runSyntax(target, input);
18
21
  if (node.concatTokens().toUpperCase().includes(" IN BYTE MODE")) {
19
- if (new _type_utils_1.TypeUtils(scope).isHexLike(targetType) === false) {
20
- throw new Error("Shift, Target not hex like");
22
+ if (new _type_utils_1.TypeUtils(input.scope).isHexLike(targetType) === false) {
23
+ const message = "Shift, Target not hex like";
24
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
25
+ return;
21
26
  }
22
27
  }
23
28
  else {
24
- if (new _type_utils_1.TypeUtils(scope).isCharLike(targetType) === false) {
25
- throw new Error("Shift, Target not char like");
29
+ if (new _type_utils_1.TypeUtils(input.scope).isCharLike(targetType) === false) {
30
+ const message = "Shift, Target not char like";
31
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
32
+ return;
26
33
  }
27
34
  }
28
35
  }
@@ -5,18 +5,21 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const target_1 = require("../expressions/target");
6
6
  const dynamic_1 = require("../expressions/dynamic");
7
7
  const basic_1 = require("../../types/basic");
8
+ const _syntax_input_1 = require("../_syntax_input");
8
9
  class Sort {
9
- runSyntax(node, scope, filename) {
10
+ runSyntax(node, input) {
10
11
  var _a, _b;
11
12
  for (const s of node.findDirectExpressions(Expressions.Dynamic)) {
12
- new dynamic_1.Dynamic().runSyntax(s, scope, filename);
13
+ new dynamic_1.Dynamic().runSyntax(s, input);
13
14
  }
14
15
  const tnode = node.findDirectExpression(Expressions.Target);
15
16
  if (tnode) {
16
- const ttype = new target_1.Target().runSyntax(tnode, scope, filename);
17
+ const ttype = new target_1.Target().runSyntax(tnode, input);
17
18
  if (ttype instanceof basic_1.TableType) {
18
19
  if (((_b = (_a = ttype.getOptions()) === null || _a === void 0 ? void 0 : _a.primaryKey) === null || _b === void 0 ? void 0 : _b.type) === basic_1.TableAccessType.sorted) {
19
- throw new Error(`Sorted table, already sorted`);
20
+ const message = `Sorted table, already sorted`;
21
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, tnode.getFirstToken(), message));
22
+ return;
20
23
  }
21
24
  const rowType = ttype.getRowType();
22
25
  if (!(rowType instanceof basic_1.VoidType)
@@ -31,10 +34,14 @@ class Sort {
31
34
  continue;
32
35
  }
33
36
  else if (!(rowType instanceof basic_1.StructureType)) {
34
- throw new Error("SORT, table row is not structured");
37
+ const message = "SORT, table row is not structured";
38
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, tnode.getFirstToken(), message));
39
+ return;
35
40
  }
36
41
  else if (rowType.getComponentByName(cname) === undefined) {
37
- throw new Error(`Field ${cname} does not exist in table row structure`);
42
+ const message = `Field ${cname} does not exist in table row structure`;
43
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
44
+ return;
38
45
  }
39
46
  }
40
47
  }
@@ -43,7 +50,9 @@ class Sort {
43
50
  && !(ttype instanceof basic_1.VoidType)
44
51
  && !(ttype instanceof basic_1.UnknownType)
45
52
  && !(ttype instanceof basic_1.AnyType)) {
46
- throw new Error("SORT, must be a internal table");
53
+ const message = "SORT, must be a internal table";
54
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, tnode.getFirstToken(), message));
55
+ return;
47
56
  }
48
57
  }
49
58
  }
@@ -7,34 +7,39 @@ const inline_data_1 = require("../expressions/inline_data");
7
7
  const source_1 = require("../expressions/source");
8
8
  const target_1 = require("../expressions/target");
9
9
  const _type_utils_1 = require("../_type_utils");
10
+ const _syntax_input_1 = require("../_syntax_input");
10
11
  class Split {
11
- runSyntax(node, scope, filename) {
12
+ runSyntax(node, input) {
12
13
  const intoTable = node.findTokenSequencePosition("INTO", "TABLE") !== undefined;
13
14
  const type = intoTable ? new basic_1.TableType(basic_1.StringType.get(), { withHeader: false, keyType: basic_1.TableKeyType.default }) : basic_1.StringType.get();
14
15
  for (const target of node.findAllExpressions(Expressions.Target)) {
15
16
  const inline = target.findDirectExpression(Expressions.InlineData);
16
17
  if (inline) {
17
- new inline_data_1.InlineData().runSyntax(inline, scope, filename, type);
18
+ new inline_data_1.InlineData().runSyntax(inline, input, type);
18
19
  }
19
20
  else {
20
- let targetType = new target_1.Target().runSyntax(target, scope, filename);
21
+ let targetType = new target_1.Target().runSyntax(target, input);
21
22
  if (intoTable) {
22
23
  if (!(targetType instanceof basic_1.TableType)
23
24
  && !(targetType instanceof basic_1.UnknownType)
24
25
  && !(targetType instanceof basic_1.VoidType)) {
25
- throw new Error("Into must be table typed");
26
+ const message = "Into must be table typed";
27
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, target.getFirstToken(), message));
28
+ return;
26
29
  }
27
30
  if (targetType instanceof basic_1.TableType) {
28
31
  targetType = targetType.getRowType();
29
32
  }
30
33
  }
31
- if (new _type_utils_1.TypeUtils(scope).isCharLikeStrict(targetType) === false) {
32
- throw new Error("Incompatible, target not character like");
34
+ if (new _type_utils_1.TypeUtils(input.scope).isCharLikeStrict(targetType) === false) {
35
+ const message = "Incompatible, target not character like";
36
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
37
+ return;
33
38
  }
34
39
  }
35
40
  }
36
41
  for (const s of node.findDirectExpressions(Expressions.Source)) {
37
- new source_1.Source().runSyntax(s, scope, filename);
42
+ new source_1.Source().runSyntax(s, input);
38
43
  }
39
44
  }
40
45
  }
@@ -7,21 +7,21 @@ const basic_types_1 = require("../basic_types");
7
7
  const basic_1 = require("../../types/basic");
8
8
  const type_table_1 = require("../expressions/type_table");
9
9
  class Static {
10
- runSyntax(node, scope, filename) {
10
+ runSyntax(node, input) {
11
11
  const tt = node.findFirstExpression(Expressions.TypeTable);
12
12
  if (tt) {
13
- const ttfound = new type_table_1.TypeTable().runSyntax(node, scope, filename);
13
+ const ttfound = new type_table_1.TypeTable().runSyntax(node, input);
14
14
  if (ttfound) {
15
15
  return ttfound;
16
16
  }
17
17
  }
18
- const found = new basic_types_1.BasicTypes(filename, scope).simpleType(node);
18
+ const found = new basic_types_1.BasicTypes(input).simpleType(node);
19
19
  if (found) {
20
20
  return found;
21
21
  }
22
22
  const fallback = node.findFirstExpression(Expressions.NamespaceSimpleName);
23
23
  if (fallback) {
24
- return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), filename, new basic_1.UnknownType("Static, fallback"));
24
+ return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), input.filename, new basic_1.UnknownType("Static, fallback"));
25
25
  }
26
26
  return undefined;
27
27
  }
@@ -6,15 +6,15 @@ const source_1 = require("../expressions/source");
6
6
  const target_1 = require("../expressions/target");
7
7
  const dynamic_1 = require("../expressions/dynamic");
8
8
  class Submit {
9
- runSyntax(node, scope, filename) {
9
+ runSyntax(node, input) {
10
10
  for (const s of node.findDirectExpressions(Expressions.Source)) {
11
- new source_1.Source().runSyntax(s, scope, filename);
11
+ new source_1.Source().runSyntax(s, input);
12
12
  }
13
13
  for (const t of node.findDirectExpressions(Expressions.Target)) {
14
- new target_1.Target().runSyntax(t, scope, filename);
14
+ new target_1.Target().runSyntax(t, input);
15
15
  }
16
16
  for (const t of node.findDirectExpressions(Expressions.Dynamic)) {
17
- new dynamic_1.Dynamic().runSyntax(t, scope, filename);
17
+ new dynamic_1.Dynamic().runSyntax(t, input);
18
18
  }
19
19
  }
20
20
  }
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
5
5
  const source_1 = require("../expressions/source");
6
6
  const target_1 = require("../expressions/target");
7
7
  class Subtract {
8
- runSyntax(node, scope, filename) {
8
+ runSyntax(node, input) {
9
9
  for (const s of node.findDirectExpressions(Expressions.Source)) {
10
- new source_1.Source().runSyntax(s, scope, filename);
10
+ new source_1.Source().runSyntax(s, input);
11
11
  }
12
12
  for (const t of node.findDirectExpressions(Expressions.Target)) {
13
- new target_1.Target().runSyntax(t, scope, filename);
13
+ new target_1.Target().runSyntax(t, input);
14
14
  }
15
15
  }
16
16
  }