@abaplint/core 2.119.42 → 2.119.44

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 (332) hide show
  1. package/build/abaplint.d.ts +152 -8
  2. package/build/src/abap/2_statements/combi.js +100 -39
  3. package/build/src/abap/2_statements/expand_macros.js +6 -4
  4. package/build/src/abap/2_statements/expressions/_dynamic_access.js +2 -2
  5. package/build/src/abap/2_statements/expressions/_select_core.js +5 -5
  6. package/build/src/abap/2_statements/expressions/assign_source.js +1 -1
  7. package/build/src/abap/2_statements/expressions/cast.js +1 -1
  8. package/build/src/abap/2_statements/expressions/compare.js +2 -2
  9. package/build/src/abap/2_statements/expressions/component_compare.js +1 -1
  10. package/build/src/abap/2_statements/expressions/component_compare_simple.js +1 -1
  11. package/build/src/abap/2_statements/expressions/cond.js +1 -1
  12. package/build/src/abap/2_statements/expressions/corresponding_body.js +1 -1
  13. package/build/src/abap/2_statements/expressions/data_definition.js +1 -1
  14. package/build/src/abap/2_statements/expressions/find_type.js +1 -1
  15. package/build/src/abap/2_statements/expressions/for.js +2 -2
  16. package/build/src/abap/2_statements/expressions/function_exporting_parameter.js +1 -1
  17. package/build/src/abap/2_statements/expressions/index.js +9 -0
  18. package/build/src/abap/2_statements/expressions/inlinedata.js +1 -1
  19. package/build/src/abap/2_statements/expressions/inlinefs.js +1 -1
  20. package/build/src/abap/2_statements/expressions/loop_source.js +1 -1
  21. package/build/src/abap/2_statements/expressions/message_source_source.js +1 -1
  22. package/build/src/abap/2_statements/expressions/new_object.js +1 -1
  23. package/build/src/abap/2_statements/expressions/reduce_next.js +1 -1
  24. package/build/src/abap/2_statements/expressions/select.js +1 -1
  25. package/build/src/abap/2_statements/expressions/select_cte.js +5 -5
  26. package/build/src/abap/2_statements/expressions/source.js +11 -11
  27. package/build/src/abap/2_statements/expressions/sql_aggregation.js +9 -9
  28. package/build/src/abap/2_statements/expressions/sql_association_entry.js +1 -1
  29. package/build/src/abap/2_statements/expressions/sql_associations_list.js +1 -1
  30. package/build/src/abap/2_statements/expressions/sql_case.js +1 -1
  31. package/build/src/abap/2_statements/expressions/sql_client.js +2 -2
  32. package/build/src/abap/2_statements/expressions/sql_compare.js +7 -6
  33. package/build/src/abap/2_statements/expressions/sql_cte_associations.js +1 -1
  34. package/build/src/abap/2_statements/expressions/sql_cte_hierarchy.js +1 -1
  35. package/build/src/abap/2_statements/expressions/sql_field.js +4 -4
  36. package/build/src/abap/2_statements/expressions/sql_field_list.js +1 -1
  37. package/build/src/abap/2_statements/expressions/sql_field_list_loop.js +2 -2
  38. package/build/src/abap/2_statements/expressions/sql_field_list_loop_greedy.js +2 -2
  39. package/build/src/abap/2_statements/expressions/sql_from_source.js +2 -2
  40. package/build/src/abap/2_statements/expressions/sql_function.js +363 -31
  41. package/build/src/abap/2_statements/expressions/sql_function_input.js +1 -1
  42. package/build/src/abap/2_statements/expressions/sql_group_by.js +2 -2
  43. package/build/src/abap/2_statements/expressions/sql_hierarchy_accessor.js +1 -1
  44. package/build/src/abap/2_statements/expressions/sql_hierarchy_aggregate.js +1 -1
  45. package/build/src/abap/2_statements/expressions/sql_hierarchy_source.js +1 -1
  46. package/build/src/abap/2_statements/expressions/sql_in.js +2 -2
  47. package/build/src/abap/2_statements/expressions/sql_into_list.js +1 -1
  48. package/build/src/abap/2_statements/expressions/sql_join.js +1 -1
  49. package/build/src/abap/2_statements/expressions/sql_like_regexpr.js +19 -0
  50. package/build/src/abap/2_statements/expressions/sql_locate_regexpr.js +18 -0
  51. package/build/src/abap/2_statements/expressions/sql_occurrences_regexpr.js +15 -0
  52. package/build/src/abap/2_statements/expressions/sql_options.js +2 -2
  53. package/build/src/abap/2_statements/expressions/sql_over.js +2 -2
  54. package/build/src/abap/2_statements/expressions/sql_path_for_column.js +1 -1
  55. package/build/src/abap/2_statements/expressions/sql_path_for_entity.js +1 -1
  56. package/build/src/abap/2_statements/expressions/sql_path_segment.js +3 -3
  57. package/build/src/abap/2_statements/expressions/sql_privileged_access.js +1 -1
  58. package/build/src/abap/2_statements/expressions/sql_regexpr_from.js +17 -0
  59. package/build/src/abap/2_statements/expressions/sql_regexpr_group.js +17 -0
  60. package/build/src/abap/2_statements/expressions/sql_regexpr_occurrence.js +17 -0
  61. package/build/src/abap/2_statements/expressions/sql_regexpr_pattern.js +18 -0
  62. package/build/src/abap/2_statements/expressions/sql_replace_regexpr.js +22 -0
  63. package/build/src/abap/2_statements/expressions/sql_set_op.js +1 -1
  64. package/build/src/abap/2_statements/expressions/sql_set_op_group.js +2 -2
  65. package/build/src/abap/2_statements/expressions/sql_source.js +1 -1
  66. package/build/src/abap/2_statements/expressions/sql_source_no_space.js +1 -1
  67. package/build/src/abap/2_statements/expressions/sql_source_simple.js +1 -1
  68. package/build/src/abap/2_statements/expressions/sql_substring_regexpr.js +18 -0
  69. package/build/src/abap/2_statements/expressions/sql_target.js +2 -2
  70. package/build/src/abap/2_statements/expressions/string_template.js +1 -1
  71. package/build/src/abap/2_statements/expressions/string_template_formatting.js +2 -2
  72. package/build/src/abap/2_statements/expressions/table_expression.js +1 -1
  73. package/build/src/abap/2_statements/expressions/type.js +1 -1
  74. package/build/src/abap/2_statements/expressions/type_table.js +1 -1
  75. package/build/src/abap/2_statements/expressions/type_table_key.js +1 -1
  76. package/build/src/abap/2_statements/expressions/value_body.js +1 -1
  77. package/build/src/abap/2_statements/result.js +6 -0
  78. package/build/src/abap/2_statements/statement_parser.js +8 -5
  79. package/build/src/abap/2_statements/statements/add_corresponding.js +1 -1
  80. package/build/src/abap/2_statements/statements/append.js +1 -1
  81. package/build/src/abap/2_statements/statements/assign.js +1 -1
  82. package/build/src/abap/2_statements/statements/assign_local_copy.js +1 -1
  83. package/build/src/abap/2_statements/statements/at_line_selection.js +1 -1
  84. package/build/src/abap/2_statements/statements/at_pf.js +1 -1
  85. package/build/src/abap/2_statements/statements/at_selection_screen.js +1 -1
  86. package/build/src/abap/2_statements/statements/at_user_command.js +1 -1
  87. package/build/src/abap/2_statements/statements/back.js +1 -1
  88. package/build/src/abap/2_statements/statements/break.js +1 -1
  89. package/build/src/abap/2_statements/statements/break_id.js +1 -1
  90. package/build/src/abap/2_statements/statements/call_badi.js +1 -1
  91. package/build/src/abap/2_statements/statements/call_database.js +1 -1
  92. package/build/src/abap/2_statements/statements/call_dialog.js +1 -1
  93. package/build/src/abap/2_statements/statements/call_function.js +4 -4
  94. package/build/src/abap/2_statements/statements/call_kernel.js +1 -1
  95. package/build/src/abap/2_statements/statements/call_ole.js +1 -1
  96. package/build/src/abap/2_statements/statements/call_screen.js +1 -1
  97. package/build/src/abap/2_statements/statements/call_selection_screen.js +1 -1
  98. package/build/src/abap/2_statements/statements/call_subscreen.js +1 -1
  99. package/build/src/abap/2_statements/statements/call_transaction.js +1 -1
  100. package/build/src/abap/2_statements/statements/case_type.js +1 -1
  101. package/build/src/abap/2_statements/statements/catch_system_exceptions.js +1 -1
  102. package/build/src/abap/2_statements/statements/chain.js +1 -1
  103. package/build/src/abap/2_statements/statements/check_select_options.js +1 -1
  104. package/build/src/abap/2_statements/statements/class_definition.js +1 -1
  105. package/build/src/abap/2_statements/statements/close_cursor.js +1 -1
  106. package/build/src/abap/2_statements/statements/close_dataset.js +1 -1
  107. package/build/src/abap/2_statements/statements/commit_entities.js +1 -1
  108. package/build/src/abap/2_statements/statements/communication.js +1 -1
  109. package/build/src/abap/2_statements/statements/compute.js +1 -1
  110. package/build/src/abap/2_statements/statements/contexts.js +1 -1
  111. package/build/src/abap/2_statements/statements/controls.js +1 -1
  112. package/build/src/abap/2_statements/statements/convert.js +2 -2
  113. package/build/src/abap/2_statements/statements/create_data.js +1 -1
  114. package/build/src/abap/2_statements/statements/create_object.js +1 -1
  115. package/build/src/abap/2_statements/statements/create_ole.js +1 -1
  116. package/build/src/abap/2_statements/statements/define.js +1 -1
  117. package/build/src/abap/2_statements/statements/delete_cluster.js +1 -1
  118. package/build/src/abap/2_statements/statements/delete_dataset.js +1 -1
  119. package/build/src/abap/2_statements/statements/delete_dynpro.js +1 -1
  120. package/build/src/abap/2_statements/statements/delete_memory.js +1 -1
  121. package/build/src/abap/2_statements/statements/delete_report.js +1 -1
  122. package/build/src/abap/2_statements/statements/delete_textpool.js +1 -1
  123. package/build/src/abap/2_statements/statements/demand.js +1 -1
  124. package/build/src/abap/2_statements/statements/describe.js +1 -1
  125. package/build/src/abap/2_statements/statements/detail.js +1 -1
  126. package/build/src/abap/2_statements/statements/editor_call.js +1 -1
  127. package/build/src/abap/2_statements/statements/end_chain.js +1 -1
  128. package/build/src/abap/2_statements/statements/end_enhancement.js +1 -1
  129. package/build/src/abap/2_statements/statements/end_enhancement_section.js +1 -1
  130. package/build/src/abap/2_statements/statements/end_of_page.js +1 -1
  131. package/build/src/abap/2_statements/statements/end_of_selection.js +1 -1
  132. package/build/src/abap/2_statements/statements/end_test_seam.js +1 -1
  133. package/build/src/abap/2_statements/statements/endcatch.js +1 -1
  134. package/build/src/abap/2_statements/statements/enddefine.js +1 -1
  135. package/build/src/abap/2_statements/statements/endexec.js +1 -1
  136. package/build/src/abap/2_statements/statements/endmodule.js +1 -1
  137. package/build/src/abap/2_statements/statements/endon.js +1 -1
  138. package/build/src/abap/2_statements/statements/endprovide.js +1 -1
  139. package/build/src/abap/2_statements/statements/endwith.js +1 -1
  140. package/build/src/abap/2_statements/statements/enhancement.js +1 -1
  141. package/build/src/abap/2_statements/statements/enhancement_point.js +1 -1
  142. package/build/src/abap/2_statements/statements/enhancement_section.js +1 -1
  143. package/build/src/abap/2_statements/statements/exec_sql.js +1 -1
  144. package/build/src/abap/2_statements/statements/export_dynpro.js +1 -1
  145. package/build/src/abap/2_statements/statements/extract.js +1 -1
  146. package/build/src/abap/2_statements/statements/fetch_next_cursor.js +1 -1
  147. package/build/src/abap/2_statements/statements/field.js +1 -1
  148. package/build/src/abap/2_statements/statements/field_group.js +1 -1
  149. package/build/src/abap/2_statements/statements/fields.js +1 -1
  150. package/build/src/abap/2_statements/statements/format.js +1 -1
  151. package/build/src/abap/2_statements/statements/free_memory.js +1 -1
  152. package/build/src/abap/2_statements/statements/free_object.js +1 -1
  153. package/build/src/abap/2_statements/statements/generate_dynpro.js +1 -1
  154. package/build/src/abap/2_statements/statements/generate_report.js +1 -1
  155. package/build/src/abap/2_statements/statements/generate_subroutine.js +1 -1
  156. package/build/src/abap/2_statements/statements/get.js +1 -1
  157. package/build/src/abap/2_statements/statements/get_badi.js +1 -1
  158. package/build/src/abap/2_statements/statements/get_cursor.js +1 -1
  159. package/build/src/abap/2_statements/statements/get_dataset.js +1 -1
  160. package/build/src/abap/2_statements/statements/get_locale.js +1 -1
  161. package/build/src/abap/2_statements/statements/get_parameter.js +1 -1
  162. package/build/src/abap/2_statements/statements/get_permissions.js +1 -1
  163. package/build/src/abap/2_statements/statements/get_pf_status.js +1 -1
  164. package/build/src/abap/2_statements/statements/get_property.js +1 -1
  165. package/build/src/abap/2_statements/statements/get_run_time.js +1 -1
  166. package/build/src/abap/2_statements/statements/hide.js +1 -1
  167. package/build/src/abap/2_statements/statements/import_dynpro.js +1 -1
  168. package/build/src/abap/2_statements/statements/import_nametab.js +1 -1
  169. package/build/src/abap/2_statements/statements/infotypes.js +1 -1
  170. package/build/src/abap/2_statements/statements/initialization.js +1 -1
  171. package/build/src/abap/2_statements/statements/input.js +1 -1
  172. package/build/src/abap/2_statements/statements/insert_field_group.js +1 -1
  173. package/build/src/abap/2_statements/statements/insert_internal.js +1 -1
  174. package/build/src/abap/2_statements/statements/insert_report.js +2 -2
  175. package/build/src/abap/2_statements/statements/insert_textpool.js +1 -1
  176. package/build/src/abap/2_statements/statements/interface_def.js +1 -1
  177. package/build/src/abap/2_statements/statements/leave.js +1 -1
  178. package/build/src/abap/2_statements/statements/load_of_program.js +1 -1
  179. package/build/src/abap/2_statements/statements/load_report.js +1 -1
  180. package/build/src/abap/2_statements/statements/local.js +1 -1
  181. package/build/src/abap/2_statements/statements/log_point.js +1 -1
  182. package/build/src/abap/2_statements/statements/loop.js +3 -3
  183. package/build/src/abap/2_statements/statements/loop_at_screen.js +1 -1
  184. package/build/src/abap/2_statements/statements/message.js +1 -1
  185. package/build/src/abap/2_statements/statements/method_def.js +1 -1
  186. package/build/src/abap/2_statements/statements/modify_entities.js +1 -1
  187. package/build/src/abap/2_statements/statements/modify_line.js +1 -1
  188. package/build/src/abap/2_statements/statements/modify_screen.js +1 -1
  189. package/build/src/abap/2_statements/statements/module.js +1 -1
  190. package/build/src/abap/2_statements/statements/move.js +2 -2
  191. package/build/src/abap/2_statements/statements/move_corresponding.js +2 -2
  192. package/build/src/abap/2_statements/statements/new_line.js +1 -1
  193. package/build/src/abap/2_statements/statements/new_page.js +1 -1
  194. package/build/src/abap/2_statements/statements/nodes.js +1 -1
  195. package/build/src/abap/2_statements/statements/on_change.js +1 -1
  196. package/build/src/abap/2_statements/statements/open_cursor.js +2 -2
  197. package/build/src/abap/2_statements/statements/open_dataset.js +1 -1
  198. package/build/src/abap/2_statements/statements/pack.js +1 -1
  199. package/build/src/abap/2_statements/statements/parameter.js +1 -1
  200. package/build/src/abap/2_statements/statements/perform.js +2 -2
  201. package/build/src/abap/2_statements/statements/position.js +1 -1
  202. package/build/src/abap/2_statements/statements/print_control.js +1 -1
  203. package/build/src/abap/2_statements/statements/process_after_input.js +1 -1
  204. package/build/src/abap/2_statements/statements/process_before_output.js +1 -1
  205. package/build/src/abap/2_statements/statements/process_on_help_request.js +1 -1
  206. package/build/src/abap/2_statements/statements/process_on_value_request.js +1 -1
  207. package/build/src/abap/2_statements/statements/program.js +1 -1
  208. package/build/src/abap/2_statements/statements/provide.js +1 -1
  209. package/build/src/abap/2_statements/statements/put.js +1 -1
  210. package/build/src/abap/2_statements/statements/raise.js +2 -2
  211. package/build/src/abap/2_statements/statements/ranges.js +1 -1
  212. package/build/src/abap/2_statements/statements/read_dataset.js +1 -1
  213. package/build/src/abap/2_statements/statements/read_entities.js +1 -1
  214. package/build/src/abap/2_statements/statements/read_line.js +1 -1
  215. package/build/src/abap/2_statements/statements/read_report.js +1 -1
  216. package/build/src/abap/2_statements/statements/read_table.js +1 -1
  217. package/build/src/abap/2_statements/statements/read_textpool.js +1 -1
  218. package/build/src/abap/2_statements/statements/receive.js +1 -1
  219. package/build/src/abap/2_statements/statements/refresh.js +1 -1
  220. package/build/src/abap/2_statements/statements/refresh_control.js +1 -1
  221. package/build/src/abap/2_statements/statements/reject.js +1 -1
  222. package/build/src/abap/2_statements/statements/report.js +1 -1
  223. package/build/src/abap/2_statements/statements/reserve.js +1 -1
  224. package/build/src/abap/2_statements/statements/retry.js +1 -1
  225. package/build/src/abap/2_statements/statements/return.js +1 -1
  226. package/build/src/abap/2_statements/statements/rollback_entities.js +1 -1
  227. package/build/src/abap/2_statements/statements/scan.js +1 -1
  228. package/build/src/abap/2_statements/statements/scroll_list.js +1 -1
  229. package/build/src/abap/2_statements/statements/search.js +1 -1
  230. package/build/src/abap/2_statements/statements/selectionscreen.js +1 -1
  231. package/build/src/abap/2_statements/statements/selectoption.js +1 -1
  232. package/build/src/abap/2_statements/statements/set_blank.js +1 -1
  233. package/build/src/abap/2_statements/statements/set_country.js +1 -1
  234. package/build/src/abap/2_statements/statements/set_cursor.js +1 -1
  235. package/build/src/abap/2_statements/statements/set_dataset.js +1 -1
  236. package/build/src/abap/2_statements/statements/set_extended_check.js +1 -1
  237. package/build/src/abap/2_statements/statements/set_language.js +1 -1
  238. package/build/src/abap/2_statements/statements/set_left.js +1 -1
  239. package/build/src/abap/2_statements/statements/set_locale.js +1 -1
  240. package/build/src/abap/2_statements/statements/set_locks.js +1 -1
  241. package/build/src/abap/2_statements/statements/set_margin.js +1 -1
  242. package/build/src/abap/2_statements/statements/set_parameter.js +1 -1
  243. package/build/src/abap/2_statements/statements/set_pf_status.js +1 -1
  244. package/build/src/abap/2_statements/statements/set_property.js +1 -1
  245. package/build/src/abap/2_statements/statements/set_run_time.js +1 -1
  246. package/build/src/abap/2_statements/statements/set_screen.js +1 -1
  247. package/build/src/abap/2_statements/statements/set_titlebar.js +1 -1
  248. package/build/src/abap/2_statements/statements/set_update_task.js +1 -1
  249. package/build/src/abap/2_statements/statements/set_user_command.js +1 -1
  250. package/build/src/abap/2_statements/statements/skip.js +1 -1
  251. package/build/src/abap/2_statements/statements/sort_dataset.js +1 -1
  252. package/build/src/abap/2_statements/statements/start_of_selection.js +1 -1
  253. package/build/src/abap/2_statements/statements/stop.js +1 -1
  254. package/build/src/abap/2_statements/statements/submit.js +1 -1
  255. package/build/src/abap/2_statements/statements/subtract_corresponding.js +1 -1
  256. package/build/src/abap/2_statements/statements/sum.js +1 -1
  257. package/build/src/abap/2_statements/statements/summary.js +1 -1
  258. package/build/src/abap/2_statements/statements/supply.js +1 -1
  259. package/build/src/abap/2_statements/statements/suppress_dialog.js +1 -1
  260. package/build/src/abap/2_statements/statements/syntax_check.js +1 -1
  261. package/build/src/abap/2_statements/statements/system_call.js +1 -1
  262. package/build/src/abap/2_statements/statements/tables.js +1 -1
  263. package/build/src/abap/2_statements/statements/test_seam.js +1 -1
  264. package/build/src/abap/2_statements/statements/top_of_page.js +1 -1
  265. package/build/src/abap/2_statements/statements/transfer.js +1 -1
  266. package/build/src/abap/2_statements/statements/truncate_dataset.js +1 -1
  267. package/build/src/abap/2_statements/statements/type.js +1 -1
  268. package/build/src/abap/2_statements/statements/type_begin.js +1 -1
  269. package/build/src/abap/2_statements/statements/type_enum.js +1 -1
  270. package/build/src/abap/2_statements/statements/type_enum_begin.js +1 -1
  271. package/build/src/abap/2_statements/statements/type_enum_end.js +1 -1
  272. package/build/src/abap/2_statements/statements/type_mesh.js +1 -1
  273. package/build/src/abap/2_statements/statements/type_mesh_begin.js +1 -1
  274. package/build/src/abap/2_statements/statements/type_mesh_end.js +1 -1
  275. package/build/src/abap/2_statements/statements/type_pool.js +1 -1
  276. package/build/src/abap/2_statements/statements/type_pools.js +1 -1
  277. package/build/src/abap/2_statements/statements/uline.js +1 -1
  278. package/build/src/abap/2_statements/statements/unpack.js +1 -1
  279. package/build/src/abap/2_statements/statements/update_database.js +1 -1
  280. package/build/src/abap/2_statements/statements/verification_message.js +1 -1
  281. package/build/src/abap/2_statements/statements/wait.js +1 -1
  282. package/build/src/abap/2_statements/statements/when_type.js +1 -1
  283. package/build/src/abap/2_statements/statements/window.js +1 -1
  284. package/build/src/abap/2_statements/statements/with.js +1 -1
  285. package/build/src/abap/2_statements/statements/write.js +1 -1
  286. package/build/src/abap/5_syntax/_builtin.js +50 -50
  287. package/build/src/abap/5_syntax/_current_scope.js +10 -0
  288. package/build/src/abap/5_syntax/expressions/field_chain.js +3 -2
  289. package/build/src/abap/5_syntax/expressions/method_source.js +1 -1
  290. package/build/src/abap/5_syntax/expressions/select.js +17 -3
  291. package/build/src/abap/5_syntax/statements/call_function.js +1 -1
  292. package/build/src/abap/5_syntax/statements/loop.js +1 -1
  293. package/build/src/abap/5_syntax/statements/move_corresponding.js +3 -3
  294. package/build/src/abap/abap_parser.js +21 -5
  295. package/build/src/abap/nodes/expression_node.js +3 -0
  296. package/build/src/cds/expressions/cds_define_projection.js +1 -1
  297. package/build/src/cds/expressions/cds_define_view.js +1 -1
  298. package/build/src/config.js +22 -1
  299. package/build/src/index.js +6 -2
  300. package/build/src/objects/_abap_object.js +3 -2
  301. package/build/src/objects/_abstract_object.js +1 -1
  302. package/build/src/objects/proxy_object.js +1 -1
  303. package/build/src/objects/table.js +1 -1
  304. package/build/src/registry.js +3 -3
  305. package/build/src/rules/ambiguous_statement.js +1 -1
  306. package/build/src/rules/avoid_use.js +2 -2
  307. package/build/src/rules/call_transaction_authority_check.js +3 -3
  308. package/build/src/rules/cds_legacy_view.js +2 -2
  309. package/build/src/rules/cloud_types.js +1 -1
  310. package/build/src/rules/downport.js +11 -11
  311. package/build/src/rules/function_module_recommendations.js +23 -2
  312. package/build/src/rules/inline_data_old_versions.js +3 -3
  313. package/build/src/rules/local_testclass_consistency.js +1 -1
  314. package/build/src/rules/main_file_contents.js +1 -1
  315. package/build/src/rules/no_inline_in_optional_branches.js +4 -4
  316. package/build/src/rules/obsolete_statement.js +6 -6
  317. package/build/src/rules/parser_702_chaining.js +2 -2
  318. package/build/src/rules/parser_error.js +2 -2
  319. package/build/src/rules/prefer_corresponding.js +1 -1
  320. package/build/src/rules/prefer_inline.js +2 -1
  321. package/build/src/rules/prefer_raise_exception_new.js +1 -1
  322. package/build/src/rules/prefer_xsdbool.js +2 -1
  323. package/build/src/rules/sql_escape_host_variables.js +3 -3
  324. package/build/src/rules/strict_sql.js +2 -2
  325. package/build/src/rules/superfluous_value.js +2 -2
  326. package/build/src/rules/use_bool_expression.js +6 -5
  327. package/build/src/rules/use_line_exists.js +4 -3
  328. package/build/src/rules/use_new.js +2 -1
  329. package/build/src/version.js +210 -2
  330. package/package.json +1 -1
  331. package/build/src/abap/2_statements/expressions/association_name.js +0 -11
  332. package/build/src/abap/2_statements/expressions/sql_path.js +0 -17
@@ -28,7 +28,7 @@ export declare abstract class ABAPObject extends AbstractObject {
28
28
  abstract getDescription(): string | undefined;
29
29
  constructor(name: string);
30
30
  static is(x: any): x is ABAPObject;
31
- parse(version: Version, globalMacros?: readonly string[], reg?: IRegistry): IParseResult;
31
+ parse(release: ABAPRelease, globalMacros?: readonly string[], reg?: IRegistry, languageVersion?: LanguageVersion, openABAP?: boolean): IParseResult;
32
32
  setDirty(): void;
33
33
  private getParsedXML;
34
34
  getABAPFiles(): readonly ABAPFile[];
@@ -59,6 +59,27 @@ declare class ABAPQueryQuery extends AbstractObject {
59
59
  getDescription(): string | undefined;
60
60
  }
61
61
 
62
+ /**
63
+ * A single row in the release table.
64
+ *
65
+ * abap — SAP_BASIS / ABAP release name as SAP calls it (e.g. "740SP05", "7.90", "9.16")
66
+ * kernel — SAP kernel release number that ships this ABAP release
67
+ * op — on-premise release number (e.g. 758, 816), null for cloud-only releases
68
+ * cloud — cloud release number (e.g. 793, 916), null for pre-cloud releases
69
+ * ce — SAP BTP / S/4HANA Cloud Public Edition shipment quarter (YYMM, e.g. 2308),
70
+ * null if never shipped to customers on cloud
71
+ * ordinal — chronological index (set at build time from array position), used for ordering
72
+ */
73
+ export declare interface ABAPRelease {
74
+ readonly name: string;
75
+ readonly abap: string | null;
76
+ readonly kernel: number | null;
77
+ readonly op: number | null;
78
+ readonly cloud: number | null;
79
+ readonly ce: number | null;
80
+ readonly ordinal: number;
81
+ }
82
+
62
83
  declare class Abstract extends Expression {
63
84
  getRunnable(): IStatementRunnable;
64
85
  }
@@ -101,7 +122,7 @@ declare abstract class AbstractObject implements IObject {
101
122
  abstract getDescription(): string | undefined;
102
123
  constructor(name: string);
103
124
  getParsingIssues(): readonly Issue[];
104
- parse(_version?: Version, _globalMacros?: readonly string[], _reg?: IRegistry): IParseResult;
125
+ parse(_release?: ABAPRelease, _globalMacros?: readonly string[], _reg?: IRegistry, _languageVersion?: LanguageVersion, _openABAP?: boolean): IParseResult;
105
126
  getName(): string;
106
127
  setDirty(): void;
107
128
  addFile(file: IFile): void;
@@ -1442,7 +1463,7 @@ declare class CondSub extends Expression {
1442
1463
 
1443
1464
  export declare class Config implements IConfiguration {
1444
1465
  private readonly config;
1445
- static getDefault(ver?: Version): Config;
1466
+ static getDefault(ver?: Version, langVer?: LanguageVersion, openABAP?: boolean): Config;
1446
1467
  getEnabledRules(): IRule[];
1447
1468
  constructor(json: string);
1448
1469
  get(): IConfig;
@@ -1450,7 +1471,10 @@ export declare class Config implements IConfiguration {
1450
1471
  readByRule(rule: string): any;
1451
1472
  getGlobal(): IGlobalConfig;
1452
1473
  getSyntaxSetttings(): ISyntaxSettings;
1474
+ getRelease(): ABAPRelease;
1475
+ getOpenABAP(): boolean;
1453
1476
  getVersion(): Version;
1477
+ getLanguageVersion(): LanguageVersion;
1454
1478
  private checkVersion;
1455
1479
  }
1456
1480
 
@@ -1547,7 +1571,10 @@ export declare class CurrentScope {
1547
1571
  static buildDefault(reg: IRegistry, obj: IObject): CurrentScope;
1548
1572
  private static addBuiltIn;
1549
1573
  private constructor();
1574
+ getRelease(): ABAPRelease;
1550
1575
  getVersion(): Version;
1576
+ getLanguageVersion(): LanguageVersion;
1577
+ getOpenABAP(): boolean;
1551
1578
  getRegistry(): IRegistry;
1552
1579
  addType(type: TypedIdentifier | undefined): void;
1553
1580
  addTypeNamed(name: string, type: TypedIdentifier | undefined): void;
@@ -2381,6 +2408,7 @@ declare abstract class Expression implements IStatementRunnable {
2381
2408
  declare class ExpressionNode extends AbstractNode<ExpressionNode | TokenNode> {
2382
2409
  private readonly expression;
2383
2410
  constructor(expression: IStatementRunnable);
2411
+ addChild(_n: ExpressionNode | TokenNode): void;
2384
2412
  get(): IStatementRunnable;
2385
2413
  countTokens(): number;
2386
2414
  getFirstToken(): Token;
@@ -2594,7 +2622,20 @@ declare namespace Expressions {
2594
2622
  SQLFromSource,
2595
2623
  SQLFrom,
2596
2624
  SQLFunctionInput,
2625
+ sqlFunctionDefs,
2626
+ sqlNamedFunctionDefs,
2627
+ sqlSpatialFunctionDefs,
2628
+ sqlSpatialAggregateDefs,
2597
2629
  SQLFunction,
2630
+ SQLRegexprPattern,
2631
+ SQLRegexprFrom,
2632
+ SQLRegexprOccurrence,
2633
+ SQLRegexprGroup,
2634
+ SQLReplaceRegexpr,
2635
+ SQLOccurrencesRegexpr,
2636
+ SQLSubstringRegexpr,
2637
+ SQLLocateRegexpr,
2638
+ SQLLikeRegexpr,
2598
2639
  SQLGroupBy,
2599
2640
  SQLHaving,
2600
2641
  SQLHints,
@@ -3316,7 +3357,7 @@ declare interface IBuiltinMethod {
3316
3357
  optional?: {
3317
3358
  [key: string]: AbstractType;
3318
3359
  };
3319
- version?: Version;
3360
+ release?: ABAPRelease;
3320
3361
  predicate?: boolean;
3321
3362
  return: AbstractType;
3322
3363
  cache?: BuiltInMethod | undefined;
@@ -3380,7 +3421,11 @@ export declare interface IConfiguration {
3380
3421
  getEnabledRules(): IRule[];
3381
3422
  get(): IConfig;
3382
3423
  getGlobal(): IGlobalConfig;
3424
+ /** @deprecated Use getRelease() instead. */
3383
3425
  getVersion(): Version;
3426
+ getRelease(): ABAPRelease;
3427
+ getLanguageVersion(): LanguageVersion;
3428
+ getOpenABAP(): boolean;
3384
3429
  getSyntaxSetttings(): ISyntaxSettings;
3385
3430
  readByRule(rule: string): any;
3386
3431
  readByKey(rule: string, key: string): any;
@@ -4013,7 +4058,7 @@ export declare interface IObject extends IArtifact {
4013
4058
  /** returns true if the object was parsed, false if no changes since last parse
4014
4059
  * registry for global cross object macros
4015
4060
  */
4016
- parse(version?: Version, globalMacros?: readonly string[], reg?: IRegistry): IParseResult;
4061
+ parse(release?: ABAPRelease, globalMacros?: readonly string[], reg?: IRegistry, languageVersion?: LanguageVersion, openABAP?: boolean): IParseResult;
4017
4062
  getParsingIssues(): readonly Issue[];
4018
4063
  getFiles(): readonly IFile[];
4019
4064
  addFile(file: IFile): void;
@@ -4305,8 +4350,11 @@ declare interface ISyntaxResult {
4305
4350
  }
4306
4351
 
4307
4352
  declare interface ISyntaxSettings {
4308
- /** ABAP language version */
4353
+ /** ABAP release to parse against, e.g. `"v758"`, `"Newest"`, `"Cloud"`. */
4309
4354
  version?: Version;
4355
+ languageVersion?: LanguageVersion;
4356
+ /** Use the OpenABAP dialect (v702 base + a set of additional language features). */
4357
+ openABAP?: boolean;
4310
4358
  /** Report error for objects in this regex namespace. Types not in namespace will be void. Case insensitive */
4311
4359
  errorNamespace: string;
4312
4360
  /** List of full named global constants (regex not possible)
@@ -4424,6 +4472,21 @@ declare namespace LanguageServerTypes {
4424
4472
  }
4425
4473
  export { LanguageServerTypes }
4426
4474
 
4475
+ /**
4476
+ * Dialect / flavor axis, orthogonal to the on-prem/cloud release track.
4477
+ *
4478
+ * `Normal` = full ABAP, no restrictions.
4479
+ * `Cloud` = restricted ABAP for Cloud, syntactic and semantic restrictions apply.
4480
+ * `KeyUser` = stricter still (KeyUser Extensibility), strict subset of Cloud.
4481
+ *
4482
+ * Ordering: KeyUser(0) &lt; Cloud(1) &lt; Normal(2) — lower = more restrictive.
4483
+ */
4484
+ export declare enum LanguageVersion {
4485
+ Normal = "Normal",
4486
+ KeyUser = "KeyUser",
4487
+ Cloud = "Cloud"
4488
+ }
4489
+
4427
4490
  declare class Leave implements IStatement {
4428
4491
  getMatcher(): IStatementRunnable;
4429
4492
  }
@@ -5676,7 +5739,7 @@ declare class ProxyObject extends AbstractObject {
5676
5739
  };
5677
5740
  getDescription(): string | undefined;
5678
5741
  setDirty(): void;
5679
- parse(_version?: Version, _globalMacros?: readonly string[], reg?: IRegistry): {
5742
+ parse(_release?: ABAPRelease, _globalMacros?: readonly string[], reg?: IRegistry): {
5680
5743
  updated: boolean;
5681
5744
  runtime: number;
5682
5745
  };
@@ -5875,6 +5938,18 @@ declare class Reject implements IStatement {
5875
5938
  getMatcher(): IStatementRunnable;
5876
5939
  }
5877
5940
 
5941
+ /** Lookup table keyed by release name (e.g. `Release.v740sp05`, `Release.Newest`). */
5942
+ export declare const Release: {
5943
+ readonly [name: string]: ABAPRelease;
5944
+ };
5945
+
5946
+ /**
5947
+ * Is `running` at least as new as `required`?
5948
+ * Comparison is purely by ordinal (declaration order in ReleaseList).
5949
+ * Newest (last entry) satisfies any required release.
5950
+ */
5951
+ export declare function releaseAtLeast(running: ABAPRelease, required: ABAPRelease): boolean;
5952
+
5878
5953
  export declare class Rename {
5879
5954
  private readonly reg;
5880
5955
  constructor(reg: IRegistry);
@@ -5934,6 +6009,8 @@ declare class Result {
5934
6009
  popNode(): ExpressionNode | TokenNode | undefined;
5935
6010
  getNodes(): (ExpressionNode | TokenNode)[];
5936
6011
  setNodes(n: (ExpressionNode | TokenNode)[]): void;
6012
+ getTokens(): readonly Token[];
6013
+ getTokenIndex(): number;
5937
6014
  remainingLength(): number;
5938
6015
  }
5939
6016
 
@@ -6490,6 +6567,10 @@ declare class SQLFunction extends Expression {
6490
6567
  getRunnable(): IStatementRunnable;
6491
6568
  }
6492
6569
 
6570
+ declare type SQLFunctionDef = [string, number, ABAPRelease];
6571
+
6572
+ declare const sqlFunctionDefs: SQLFunctionDef[];
6573
+
6493
6574
  declare class SQLFunctionInput extends Expression {
6494
6575
  getRunnable(): IStatementRunnable;
6495
6576
  }
@@ -6542,6 +6623,30 @@ declare class SQLJoinSource extends Expression {
6542
6623
  getRunnable(): IStatementRunnable;
6543
6624
  }
6544
6625
 
6626
+ declare class SQLLikeRegexpr extends Expression {
6627
+ getRunnable(): IStatementRunnable;
6628
+ }
6629
+
6630
+ declare class SQLLocateRegexpr extends Expression {
6631
+ getRunnable(): IStatementRunnable;
6632
+ }
6633
+
6634
+ declare type SQLNamedFunctionDef = [string, ABAPRelease, SQLNamedParam[]];
6635
+
6636
+ declare const sqlNamedFunctionDefs: SQLNamedFunctionDef[];
6637
+
6638
+ declare type SQLNamedParam = {
6639
+ name: string;
6640
+ value: SQLNamedParamValue;
6641
+ optional?: true;
6642
+ };
6643
+
6644
+ declare type SQLNamedParamValue = "any" | "abap_only";
6645
+
6646
+ declare class SQLOccurrencesRegexpr extends Expression {
6647
+ getRunnable(): IStatementRunnable;
6648
+ }
6649
+
6545
6650
  declare class SQLOptions extends Expression {
6546
6651
  getRunnable(): IStatementRunnable;
6547
6652
  }
@@ -6584,6 +6689,26 @@ declare class SQLPrivilegedAccess extends Expression {
6584
6689
  getRunnable(): IStatementRunnable;
6585
6690
  }
6586
6691
 
6692
+ declare class SQLRegexprFrom extends Expression {
6693
+ getRunnable(): IStatementRunnable;
6694
+ }
6695
+
6696
+ declare class SQLRegexprGroup extends Expression {
6697
+ getRunnable(): IStatementRunnable;
6698
+ }
6699
+
6700
+ declare class SQLRegexprOccurrence extends Expression {
6701
+ getRunnable(): IStatementRunnable;
6702
+ }
6703
+
6704
+ declare class SQLRegexprPattern extends Expression {
6705
+ getRunnable(): IStatementRunnable;
6706
+ }
6707
+
6708
+ declare class SQLReplaceRegexpr extends Expression {
6709
+ getRunnable(): IStatementRunnable;
6710
+ }
6711
+
6587
6712
  declare class SQLSetOp extends Expression {
6588
6713
  getRunnable(): IStatementRunnable;
6589
6714
  }
@@ -6604,6 +6729,14 @@ declare class SQLSourceSimple extends Expression {
6604
6729
  getRunnable(): IStatementRunnable;
6605
6730
  }
6606
6731
 
6732
+ declare const sqlSpatialAggregateDefs: SQLFunctionDef[];
6733
+
6734
+ declare const sqlSpatialFunctionDefs: SQLFunctionDef[];
6735
+
6736
+ declare class SQLSubstringRegexpr extends Expression {
6737
+ getRunnable(): IStatementRunnable;
6738
+ }
6739
+
6607
6740
  declare class SQLTarget extends Expression {
6608
6741
  getRunnable(): IStatementRunnable;
6609
6742
  }
@@ -7754,6 +7887,7 @@ declare class VerificationMessage implements IStatement {
7754
7887
  getMatcher(): IStatementRunnable;
7755
7888
  }
7756
7889
 
7890
+ /** @deprecated Use ABAPRelease and Release instead */
7757
7891
  export declare enum Version {
7758
7892
  OpenABAP = "open-abap",// as 702, but with some extra new language features
7759
7893
  v700 = "v700",
@@ -7770,9 +7904,19 @@ export declare enum Version {
7770
7904
  v756 = "v756",
7771
7905
  v757 = "v757",
7772
7906
  v758 = "v758",
7773
- Cloud = "Cloud"
7907
+ v816 = "v816",
7908
+ /**
7909
+ * Steampunk / SAP BTP ABAP Environment. This was never a release identity —
7910
+ * it always meant "latest available release, parsed under cloud-language
7911
+ * restrictions". It expands into the explicit
7912
+ * Release.Newest + {@link LanguageVersion.Cloud} pair.
7913
+ */
7914
+ Cloud = "Cloud",
7915
+ Newest = "Newest"
7774
7916
  }
7775
7917
 
7918
+ export declare function versionToABAPRelease(v: Version): ABAPRelease;
7919
+
7776
7920
  declare class View extends AbstractObject {
7777
7921
  private parsedData;
7778
7922
  getType(): string;
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Combi = exports.Expression = void 0;
36
+ exports.Combi = exports.Expression = exports.AlsoIn = void 0;
37
37
  exports.str = str;
38
38
  exports.regex = regex;
39
39
  exports.tok = tok;
@@ -48,7 +48,8 @@ exports.starPrio = starPrio;
48
48
  exports.plus = plus;
49
49
  exports.plusPrio = plusPrio;
50
50
  exports.ver = ver;
51
- exports.verNot = verNot;
51
+ exports.verLang = verLang;
52
+ exports.verNotLang = verNotLang;
52
53
  exports.failCombinator = failCombinator;
53
54
  exports.failStar = failStar;
54
55
  exports.stopBefore = stopBefore;
@@ -158,43 +159,36 @@ class Token {
158
159
  return [""];
159
160
  }
160
161
  }
162
+ var AlsoIn;
163
+ (function (AlsoIn) {
164
+ AlsoIn["OpenABAP"] = "OpenABAP";
165
+ })(AlsoIn || (exports.AlsoIn = AlsoIn = {}));
161
166
  class Vers {
162
- constructor(version, runnable, or) {
163
- this.version = version;
167
+ constructor(release, runnable, also) {
168
+ this.release = release;
164
169
  this.runnable = runnable;
165
- this.or = or;
170
+ this.also = also;
166
171
  }
167
172
  listKeywords() {
168
173
  return this.runnable.listKeywords();
169
174
  }
170
175
  run(r) {
171
- const targetVersion = Combi.getVersion();
172
- if (this.or && targetVersion === this.or) {
173
- return this.runnable.run(r);
174
- }
175
- else if (targetVersion === version_1.Version.OpenABAP) {
176
- if (this.version > version_1.Version.v702) {
177
- return [];
178
- }
179
- else {
176
+ if (Combi.isOpenABAP() === true) {
177
+ if (this.also === AlsoIn.OpenABAP) {
180
178
  return this.runnable.run(r);
181
179
  }
180
+ return (0, version_1.releaseAtLeast)(version_1.Release.v702, this.release) ? this.runnable.run(r) : [];
182
181
  }
183
- else if ((targetVersion !== version_1.Version.Cloud && this.version !== version_1.Version.Cloud && targetVersion >= this.version)
184
- || targetVersion === version_1.Version.Cloud) {
185
- return this.runnable.run(r);
186
- }
187
- else {
188
- return [];
189
- }
182
+ return (0, version_1.releaseAtLeast)(Combi.getRelease(), this.release) ? this.runnable.run(r) : [];
190
183
  }
191
184
  getUsing() {
192
185
  return this.runnable.getUsing();
193
186
  }
194
187
  railroad() {
195
- let text = this.version;
196
- if (this.or) {
197
- text += " or " + this.or;
188
+ var _a;
189
+ let text = (_a = this.release.abap) !== null && _a !== void 0 ? _a : "Newest";
190
+ if (this.also) {
191
+ text += " or " + this.also;
198
192
  }
199
193
  return "Railroad.Sequence(Railroad.Comment(\"" +
200
194
  text +
@@ -209,9 +203,50 @@ class Vers {
209
203
  return this.runnable.first();
210
204
  }
211
205
  }
212
- class VersNot {
213
- constructor(version, runnable) {
214
- this.version = version;
206
+ function langVersionOrdinal(v) {
207
+ switch (v) {
208
+ case version_1.LanguageVersion.KeyUser: return 0;
209
+ case version_1.LanguageVersion.Cloud: return 1;
210
+ case version_1.LanguageVersion.Normal: return 2;
211
+ default: return 2;
212
+ }
213
+ }
214
+ class LangVers {
215
+ constructor(langVersion, runnable) {
216
+ this.langVersion = langVersion;
217
+ this.runnable = runnable;
218
+ }
219
+ listKeywords() {
220
+ return this.runnable.listKeywords();
221
+ }
222
+ getUsing() {
223
+ return this.runnable.getUsing();
224
+ }
225
+ run(r) {
226
+ if (langVersionOrdinal(Combi.getLanguageVersion()) <= langVersionOrdinal(this.langVersion)) {
227
+ return this.runnable.run(r);
228
+ }
229
+ else {
230
+ return [];
231
+ }
232
+ }
233
+ railroad() {
234
+ return "Railroad.Sequence(Railroad.Comment(\"langver=" +
235
+ this.langVersion +
236
+ "\", {}), " +
237
+ this.runnable.railroad() +
238
+ ")";
239
+ }
240
+ toStr() {
241
+ return "LangVersion(" + this.runnable.toStr() + ")";
242
+ }
243
+ first() {
244
+ return this.runnable.first();
245
+ }
246
+ }
247
+ class LangVersNot {
248
+ constructor(langVersion, runnable) {
249
+ this.langVersion = langVersion;
215
250
  this.runnable = runnable;
216
251
  }
217
252
  listKeywords() {
@@ -221,7 +256,7 @@ class VersNot {
221
256
  return this.runnable.getUsing();
222
257
  }
223
258
  run(r) {
224
- if (Combi.getVersion() !== this.version) {
259
+ if (langVersionOrdinal(Combi.getLanguageVersion()) > langVersionOrdinal(this.langVersion)) {
225
260
  return this.runnable.run(r);
226
261
  }
227
262
  else {
@@ -229,14 +264,14 @@ class VersNot {
229
264
  }
230
265
  }
231
266
  railroad() {
232
- return "Railroad.Sequence(Railroad.Comment(\"not " +
233
- this.version +
267
+ return "Railroad.Sequence(Railroad.Comment(\"not langver=" +
268
+ this.langVersion +
234
269
  "\", {}), " +
235
270
  this.runnable.railroad() +
236
271
  ")";
237
272
  }
238
273
  toStr() {
239
- return "VersionNot(" + this.runnable.toStr() + ")";
274
+ return "LanguageVersionNot(" + this.runnable.toStr() + ")";
240
275
  }
241
276
  first() {
242
277
  return this.runnable.first();
@@ -825,8 +860,15 @@ class Combi {
825
860
  return res;
826
861
  }
827
862
  // assumption: no pragmas supplied in tokens input
828
- static run(runnable, tokens, version) {
829
- this.ver = version;
863
+ static run(runnable, tokens, versionOrRelease, languageVersion = version_1.LanguageVersion.Normal, openABAP = false) {
864
+ this.openABAP = openABAP || versionOrRelease === version_1.Version.OpenABAP;
865
+ this.langVer = languageVersion;
866
+ if (typeof versionOrRelease === "string") {
867
+ this.release = this.openABAP ? version_1.Release.v702 : (0, version_1.versionToABAPRelease)(versionOrRelease);
868
+ }
869
+ else {
870
+ this.release = this.openABAP ? version_1.Release.v702 : versionOrRelease;
871
+ }
830
872
  const input = new result_1.Result(tokens, 0);
831
873
  try {
832
874
  const result = runnable.run([input]);
@@ -851,11 +893,21 @@ class Combi {
851
893
  }
852
894
  return undefined;
853
895
  }
854
- static getVersion() {
855
- return this.ver;
896
+ static getRelease() {
897
+ return this.release;
898
+ }
899
+ static getLanguageVersion() {
900
+ return this.langVer;
901
+ }
902
+ static isOpenABAP() {
903
+ return this.openABAP;
856
904
  }
857
905
  }
858
906
  exports.Combi = Combi;
907
+ // todo, change this class to be instantiated, constructor(runnable) ?
908
+ Combi.release = version_1.Release.v758;
909
+ Combi.langVer = version_1.LanguageVersion.Normal;
910
+ Combi.openABAP = false;
859
911
  // -----------------------------------------------------------------------------
860
912
  function str(s) {
861
913
  if (s.indexOf(" ") > 0 || s.indexOf("-") > 0) {
@@ -932,11 +984,20 @@ function plus(first) {
932
984
  function plusPrio(first) {
933
985
  return new PlusPriority(mapInput(first));
934
986
  }
935
- function ver(version, first, or) {
936
- return new Vers(version, mapInput(first), or);
987
+ function inputToRelease(versionOrRelease) {
988
+ if (typeof versionOrRelease === "string") {
989
+ return (0, version_1.versionToABAPRelease)(versionOrRelease);
990
+ }
991
+ return versionOrRelease;
992
+ }
993
+ function ver(versionOrRelease, first, opts = {}) {
994
+ return new Vers(inputToRelease(versionOrRelease), mapInput(first), opts.also);
995
+ }
996
+ function verLang(langVersion, first) {
997
+ return new LangVers(langVersion, mapInput(first));
937
998
  }
938
- function verNot(version, first) {
939
- return new VersNot(version, mapInput(first));
999
+ function verNotLang(langVersion, first) {
1000
+ return new LangVersNot(langVersion, mapInput(first));
940
1001
  }
941
1002
  function failCombinator() {
942
1003
  return new FailCombinator();
@@ -40,6 +40,7 @@ const Tokens = __importStar(require("../1_lexer/tokens"));
40
40
  const _statement_1 = require("./statements/_statement");
41
41
  const statement_node_1 = require("../nodes/statement_node");
42
42
  const token_node_1 = require("../nodes/token_node");
43
+ const version_1 = require("../../version");
43
44
  const statement_parser_1 = require("./statement_parser");
44
45
  const memory_file_1 = require("../../files/memory_file");
45
46
  const lexer_1 = require("../1_lexer/lexer");
@@ -81,9 +82,10 @@ class Macros {
81
82
  }
82
83
  class ExpandMacros {
83
84
  // "reg" must be supplied if there are cross object macros via INCLUDE
84
- constructor(globalMacros, version, reg) {
85
+ constructor(globalMacros, release, reg, languageVersion = version_1.LanguageVersion.Normal) {
85
86
  this.macros = new Macros(globalMacros);
86
- this.version = version;
87
+ this.release = release;
88
+ this.languageVersion = languageVersion;
87
89
  this.globalMacros = globalMacros;
88
90
  this.reg = reg;
89
91
  }
@@ -111,7 +113,7 @@ class ExpandMacros {
111
113
  // todo, workaround for cyclic includes?
112
114
  const prog = (_c = this.reg) === null || _c === void 0 ? void 0 : _c.getObject("PROG", includeName);
113
115
  if (prog) {
114
- prog.parse(this.version, this.globalMacros, this.reg);
116
+ prog.parse(this.release, this.globalMacros, this.reg, this.languageVersion);
115
117
  const includeMainFile = prog.getMainABAPFile();
116
118
  if (includeMainFile) {
117
119
  // slow, this copies everything,
@@ -193,7 +195,7 @@ class ExpandMacros {
193
195
  }
194
196
  const file = new memory_file_1.MemoryFile("expand_macros.abap.prog", str);
195
197
  const lexerResult = new lexer_1.Lexer().run(file, statement.getFirstToken().getStart());
196
- const result = new statement_parser_1.StatementParser(this.version, this.reg).run([lexerResult], this.macros.listMacroNames());
198
+ const result = new statement_parser_1.StatementParser(this.release, this.reg, this.languageVersion).run([lexerResult], this.macros.listMacroNames());
197
199
  return result[0].statements;
198
200
  }
199
201
  buildInput(statement) {
@@ -11,9 +11,9 @@ const dynIdent = (0, combi_1.tok)(tokens_1.ParenLeft);
11
11
  const dynClose = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRight), (0, combi_1.tok)(tokens_1.ParenRightW));
12
12
  const dynInside = (0, combi_1.altPrio)(new field_chain_1.FieldChain(), constant_1.Constant);
13
13
  function dynComp(...inside) {
14
- return (0, combi_1.ver)(version_1.Version.v757, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), dynIdent, dynInside, ...inside, dynClose));
14
+ return (0, combi_1.ver)(version_1.Release.v757, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), dynIdent, dynInside, ...inside, dynClose));
15
15
  }
16
16
  function dynAttr() {
17
- return (0, combi_1.ver)(version_1.Version.v757, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), dynIdent, dynInside, dynClose));
17
+ return (0, combi_1.ver)(version_1.Release.v757, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), dynIdent, dynInside, dynClose));
18
18
  }
19
19
  //# sourceMappingURL=_dynamic_access.js.map
@@ -10,8 +10,8 @@ const sql_into_structure_1 = require("./sql_into_structure");
10
10
  const sql_up_to_1 = require("./sql_up_to");
11
11
  function buildSelectSingleCore(allowInto = false) {
12
12
  const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
13
- const sqlFields = (0, combi_1.ver)(version_1.Version.v750, _1.SQLFields, version_1.Version.OpenABAP);
14
- const privileged = (0, combi_1.ver)(version_1.Version.v758, _1.SQLPrivilegedAccess);
13
+ const sqlFields = (0, combi_1.ver)(version_1.Release.v750, _1.SQLFields, { also: combi_1.AlsoIn.OpenABAP });
14
+ const privileged = (0, combi_1.ver)(version_1.Release.v758, _1.SQLPrivilegedAccess);
15
15
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
16
16
  const client = (0, combi_1.optPrio)(_1.SQLClient);
17
17
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
@@ -29,9 +29,9 @@ function buildSelectSingleCore(allowInto = false) {
29
29
  }
30
30
  function buildSelectCore(allowInto = false, allowOrderBy = true) {
31
31
  const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
32
- const offset = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("OFFSET", _1.SQLSource));
33
- const sqlFields = (0, combi_1.ver)(version_1.Version.v750, _1.SQLFields, version_1.Version.OpenABAP);
34
- const privileged = (0, combi_1.ver)(version_1.Version.v758, _1.SQLPrivilegedAccess);
32
+ const offset = (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)("OFFSET", _1.SQLSource));
33
+ const sqlFields = (0, combi_1.ver)(version_1.Release.v750, _1.SQLFields, { also: combi_1.AlsoIn.OpenABAP });
34
+ const privileged = (0, combi_1.ver)(version_1.Release.v758, _1.SQLPrivilegedAccess);
35
35
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
36
36
  const client = (0, combi_1.optPrio)(_1.SQLClient);
37
37
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
@@ -10,7 +10,7 @@ const simple_source3_1 = require("./simple_source3");
10
10
  const version_1 = require("../../../version");
11
11
  class AssignSource extends combi_1.Expression {
12
12
  getRunnable() {
13
- const component = (0, combi_1.seq)("COMPONENT", (0, combi_1.alt)(simple_source3_1.SimpleSource3, (0, combi_1.ver)(version_1.Version.v740sp02, source_1.Source, version_1.Version.OpenABAP)), "OF STRUCTURE", source_1.Source);
13
+ const component = (0, combi_1.seq)("COMPONENT", (0, combi_1.alt)(simple_source3_1.SimpleSource3, (0, combi_1.ver)(version_1.Release.v740sp02, source_1.Source, { also: combi_1.AlsoIn.OpenABAP })), "OF STRUCTURE", source_1.Source);
14
14
  const tableField = (0, combi_1.seq)("TABLE FIELD", (0, combi_1.alt)(source_1.Source, dynamic_1.Dynamic));
15
15
  const arrow = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));
16
16
  const source = (0, combi_1.alt)((0, combi_1.seq)(source_1.Source, (0, combi_1.opt)((0, combi_1.seq)(arrow, dynamic_1.Dynamic))), component, tableField, (0, combi_1.seq)(dynamic_1.Dynamic, (0, combi_1.opt)((0, combi_1.seq)(arrow, (0, combi_1.alt)(field_1.Field, dynamic_1.Dynamic)))));
@@ -10,7 +10,7 @@ class Cast extends combi_1.Expression {
10
10
  getRunnable() {
11
11
  const rparen = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.WParenRight));
12
12
  const cast = (0, combi_1.seq)("CAST", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), (0, combi_1.optPrio)(let_1.Let), _1.Source, rparen, (0, combi_1.opt)(_1.Dereference));
13
- return (0, combi_1.ver)(version_1.Version.v740sp02, cast, version_1.Version.OpenABAP);
13
+ return (0, combi_1.ver)(version_1.Release.v740sp02, cast, { also: combi_1.AlsoIn.OpenABAP });
14
14
  }
15
15
  }
16
16
  exports.Cast = Cast;
@@ -10,11 +10,11 @@ class Compare extends combi_1.Expression {
10
10
  const val = (0, combi_1.altPrio)(_1.FieldSub, _1.Constant);
11
11
  const list = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), val, (0, combi_1.plus)((0, combi_1.seq)(",", val)), (0, combi_1.tok)(tokens_1.ParenRightW));
12
12
  const inn = (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), "IN", (0, combi_1.altPrio)(_1.Source, list));
13
- const sopt = (0, combi_1.seq)("IS", (0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)("SUPPLIED", "BOUND", (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)("INSTANCE OF", _1.ClassName), version_1.Version.OpenABAP), "REQUESTED", "INITIAL"));
13
+ const sopt = (0, combi_1.seq)("IS", (0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)("SUPPLIED", "BOUND", (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.seq)("INSTANCE OF", _1.ClassName), { also: combi_1.AlsoIn.OpenABAP }), "REQUESTED", "INITIAL"));
14
14
  const between = (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), "BETWEEN", _1.Source, "AND", _1.Source);
15
15
  // https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abennews-740_sp08-expressions.htm
16
16
  // but also seems to work in v740sp05, blah
17
- const predicate = (0, combi_1.ver)(version_1.Version.v740sp08, _1.MethodCallChain, version_1.Version.OpenABAP);
17
+ const predicate = (0, combi_1.ver)(version_1.Release.v740sp08, _1.MethodCallChain, { also: combi_1.AlsoIn.OpenABAP });
18
18
  const rett = (0, combi_1.seq)(_1.Source, (0, combi_1.altPrio)((0, combi_1.seq)(_1.CompareOperator, _1.Source), inn, between, sopt));
19
19
  const fsassign = (0, combi_1.seq)(_1.SourceFieldSymbolChain, "IS", (0, combi_1.optPrio)("NOT"), "ASSIGNED");
20
20
  const ret = (0, combi_1.seq)((0, combi_1.opt)("NOT"), (0, combi_1.altPrio)(rett, predicate, fsassign));
@@ -10,7 +10,7 @@ class ComponentCompare extends combi_1.Expression {
10
10
  const val = (0, combi_1.alt)(_1.FieldSub, _1.Constant);
11
11
  const list = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), val, (0, combi_1.plus)((0, combi_1.seq)(",", val)), (0, combi_1.tok)(tokens_1.ParenRightW));
12
12
  const inn = (0, combi_1.seq)((0, combi_1.opt)("NOT"), "IN", (0, combi_1.altPrio)(_1.Source, list));
13
- const sopt = (0, combi_1.seq)("IS", (0, combi_1.opt)("NOT"), (0, combi_1.altPrio)("SUPPLIED", "BOUND", (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)("INSTANCE OF", _1.Source)), "REQUESTED", "ASSIGNED", "INITIAL"));
13
+ const sopt = (0, combi_1.seq)("IS", (0, combi_1.opt)("NOT"), (0, combi_1.altPrio)("SUPPLIED", "BOUND", (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.seq)("INSTANCE OF", _1.Source)), "REQUESTED", "ASSIGNED", "INITIAL"));
14
14
  const between = (0, combi_1.seq)((0, combi_1.opt)("NOT"), "BETWEEN", _1.Source, "AND", _1.Source);
15
15
  const rett = (0, combi_1.seq)(_1.ComponentChainSimple, (0, combi_1.altPrio)((0, combi_1.seq)(_1.CompareOperator, _1.Source), inn, between, sopt));
16
16
  const ret = (0, combi_1.seq)((0, combi_1.opt)("NOT"), rett);
@@ -7,7 +7,7 @@ const component_chain_simple_1 = require("./component_chain_simple");
7
7
  const version_1 = require("../../../version");
8
8
  class ComponentCompareSimple extends combi_1.Expression {
9
9
  getRunnable() {
10
- const source = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v740sp02, _1.Source, version_1.Version.OpenABAP), _1.SimpleSource4);
10
+ const source = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Release.v740sp02, _1.Source, { also: combi_1.AlsoIn.OpenABAP }), _1.SimpleSource4);
11
11
  const ret = (0, combi_1.seq)((0, combi_1.altPrio)(component_chain_simple_1.ComponentChainSimple, _1.Dynamic), "=", source);
12
12
  return (0, combi_1.plus)(ret);
13
13
  }