@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
@@ -51,12 +51,12 @@ See recognized syntax at https://syntax.abaplint.org`,
51
51
  }
52
52
  else {
53
53
  const tok = statement.getFirstToken();
54
- const message = "Statement does not exist in ABAP" + this.reg.getConfig().getVersion() + "(or a parser error), \"" + tok.getStr() + "\"";
54
+ const message = "Statement does not exist in ABAP" + this.reg.getConfig().getRelease().name + "(or a parser error), \"" + tok.getStr() + "\"";
55
55
  const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity);
56
56
  issues.push(issue);
57
57
  }
58
58
  }
59
- if (this.reg.getConfig().getVersion() === version_1.Version.v700) {
59
+ if (this.reg.getConfig().getRelease() === version_1.Release.v700) {
60
60
  for (const statement of file.getStatements()) {
61
61
  if (statement.getPragmas().length > 0) {
62
62
  const message = "Pragmas not allowed in v700";
@@ -67,7 +67,7 @@ class PreferCorresponding extends _abap_rule_1.ABAPRule {
67
67
  }
68
68
  runParsed(file) {
69
69
  const issues = [];
70
- if (this.reg.getConfig().getVersion() < version_1.Version.v740sp05) {
70
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v740sp05)) {
71
71
  return issues;
72
72
  }
73
73
  const message = "Use CORRESPONDING type( ... ) instead of MOVE-CORRESPONDING";
@@ -93,7 +93,8 @@ DATA(percentage) = CONV decfloat34( comment_number / abs_statement_number ) * 10
93
93
  if (obj.getType() === "INTF") {
94
94
  return [];
95
95
  }
96
- if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02 && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {
96
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v740sp02)
97
+ && this.reg.getConfig().getLanguageVersion() !== version_1.LanguageVersion.Cloud) {
97
98
  return [];
98
99
  }
99
100
  else if (!(obj instanceof _abap_object_1.ABAPObject)) {
@@ -72,7 +72,7 @@ From 752 and up`,
72
72
  this.conf = conf;
73
73
  }
74
74
  runParsed(file) {
75
- if (this.reg.getConfig().getVersion() < version_1.Version.v752) {
75
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v752)) {
76
76
  return [];
77
77
  }
78
78
  const issues = [];
@@ -71,7 +71,8 @@ https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-xsdbool
71
71
  runParsed(file) {
72
72
  var _a;
73
73
  const issues = [];
74
- if (this.reg.getConfig().getVersion() < version_1.Version.v740sp08 && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {
74
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v740sp08)
75
+ && this.reg.getConfig().getLanguageVersion() !== version_1.LanguageVersion.Cloud) {
75
76
  return [];
76
77
  }
77
78
  for (const s of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.Source)) || []) {
@@ -73,9 +73,9 @@ class SQLEscapeHostVariables extends _abap_rule_1.ABAPRule {
73
73
  if (type === "INTF" || type === "TYPE") {
74
74
  return [];
75
75
  }
76
- if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02
77
- && this.reg.getConfig().getVersion() !== version_1.Version.Cloud
78
- && this.reg.getConfig().getVersion() !== version_1.Version.OpenABAP) {
76
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v740sp02)
77
+ && this.reg.getConfig().getLanguageVersion() !== version_1.LanguageVersion.Cloud
78
+ && !this.reg.getConfig().getOpenABAP()) {
79
79
  return [];
80
80
  }
81
81
  for (const s of file.getStatements()) {
@@ -79,8 +79,8 @@ Activates from v750 and up`,
79
79
  if (type === "INTF" || type === "TYPE") {
80
80
  return [];
81
81
  }
82
- if (this.reg.getConfig().getVersion() < version_1.Version.v750
83
- && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {
82
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v750)
83
+ && this.reg.getConfig().getLanguageVersion() !== version_1.LanguageVersion.Cloud) {
84
84
  return [];
85
85
  }
86
86
  for (const s of file.getStatements()) {
@@ -69,8 +69,8 @@ class SuperfluousValue extends _abap_rule_1.ABAPRule {
69
69
  runParsed(file) {
70
70
  var _a, _b;
71
71
  const output = [];
72
- if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02
73
- && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {
72
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v740sp02)
73
+ && this.reg.getConfig().getLanguageVersion() !== version_1.LanguageVersion.Cloud) {
74
74
  return [];
75
75
  }
76
76
  const struc = file.getStructure();
@@ -82,8 +82,9 @@ DATA(fsdf) = xsdbool( foo <> bar ).`,
82
82
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
83
83
  const issues = [];
84
84
  const stru = file.getStructure();
85
- const version = this.reg.getConfig().getVersion();
86
- if (stru === undefined || (version < version_1.Version.v702 && version !== version_1.Version.Cloud)) {
85
+ const release = this.reg.getConfig().getRelease();
86
+ const langVersion = this.reg.getConfig().getLanguageVersion();
87
+ if (stru === undefined || (!(0, version_1.releaseAtLeast)(release, version_1.Release.v702) && langVersion !== version_1.LanguageVersion.Cloud)) {
87
88
  return [];
88
89
  }
89
90
  for (const i of stru.findAllStructures(Structures.If)) {
@@ -120,8 +121,8 @@ DATA(fsdf) = xsdbool( foo <> bar ).`,
120
121
  const elseSource = (_g = elseStatement.findFirstExpression(Expressions.Source)) === null || _g === void 0 ? void 0 : _g.concatTokens().toUpperCase();
121
122
  if ((bodySource === "ABAP_TRUE" && elseSource === "ABAP_FALSE")
122
123
  || (bodySource === "ABAP_FALSE" && elseSource === "ABAP_TRUE")) {
123
- const func = (this.reg.getConfig().getVersion() >= version_1.Version.v740sp08
124
- || this.reg.getConfig().getVersion() === version_1.Version.Cloud) ? "xsdbool" : "boolc";
124
+ const func = ((0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v740sp08)
125
+ || this.reg.getConfig().getLanguageVersion() === version_1.LanguageVersion.Cloud) ? "xsdbool" : "boolc";
125
126
  const negate = bodySource === "ABAP_FALSE";
126
127
  const message = `Use ${func} instead of IF` + (negate ? ", negate expression" : "");
127
128
  const start = i.getFirstToken().getStart();
@@ -135,7 +136,7 @@ DATA(fsdf) = xsdbool( foo <> bar ).`,
135
136
  issues.push(issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity, fix));
136
137
  }
137
138
  }
138
- if (version >= version_1.Version.v740sp08 || version === version_1.Version.Cloud) {
139
+ if ((0, version_1.releaseAtLeast)(release, version_1.Release.v740sp08) || langVersion === version_1.LanguageVersion.Cloud) {
139
140
  for (const b of stru.findAllExpressions(Expressions.CondBody)) {
140
141
  const concat = b.concatTokens().toUpperCase();
141
142
  if (concat.endsWith(" THEN ABAP_TRUE ELSE ABAP_FALSE")
@@ -78,11 +78,12 @@ ENDIF.`,
78
78
  if (obj.getType() === "INTF") {
79
79
  return [];
80
80
  }
81
- const vers = this.reg.getConfig().getVersion();
82
- if (vers === version_1.Version.OpenABAP) {
81
+ const release = this.reg.getConfig().getRelease();
82
+ const langVers = this.reg.getConfig().getLanguageVersion();
83
+ if (this.reg.getConfig().getOpenABAP()) {
83
84
  return [];
84
85
  }
85
- else if (vers < version_1.Version.v740sp02 && vers !== version_1.Version.Cloud) {
86
+ else if (!(0, version_1.releaseAtLeast)(release, version_1.Release.v740sp02) && langVers !== version_1.LanguageVersion.Cloud) {
86
87
  return [];
87
88
  }
88
89
  const statements = file.getStatements();
@@ -81,7 +81,8 @@ Applicable from v740sp02 and up`,
81
81
  if (obj.getType() === "INTF") {
82
82
  return [];
83
83
  }
84
- if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02 && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {
84
+ if (!(0, version_1.releaseAtLeast)(this.reg.getConfig().getRelease(), version_1.Release.v740sp02)
85
+ && this.reg.getConfig().getLanguageVersion() !== version_1.LanguageVersion.Cloud) {
85
86
  return [];
86
87
  }
87
88
  for (const statement of file.getStatements()) {
@@ -1,7 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultVersion = exports.Version = void 0;
3
+ exports.defaultRelease = exports.defaultVersion = exports.Release = exports.ReleaseList = exports.LanguageVersion = exports.Version = void 0;
4
+ exports.releaseAtLeast = releaseAtLeast;
5
+ exports.fromABAP = fromABAP;
6
+ exports.fromKernel = fromKernel;
7
+ exports.fromCloud = fromCloud;
8
+ exports.fromOP = fromOP;
9
+ exports.versionToABAPRelease = versionToABAPRelease;
4
10
  exports.getPreviousVersion = getPreviousVersion;
11
+ /** @deprecated Use ABAPRelease and Release instead */
5
12
  var Version;
6
13
  (function (Version) {
7
14
  Version["OpenABAP"] = "open-abap";
@@ -19,9 +26,210 @@ var Version;
19
26
  Version["v756"] = "v756";
20
27
  Version["v757"] = "v757";
21
28
  Version["v758"] = "v758";
29
+ Version["v816"] = "v816";
30
+ /**
31
+ * Steampunk / SAP BTP ABAP Environment. This was never a release identity —
32
+ * it always meant "latest available release, parsed under cloud-language
33
+ * restrictions". It expands into the explicit
34
+ * Release.Newest + {@link LanguageVersion.Cloud} pair.
35
+ */
22
36
  Version["Cloud"] = "Cloud";
37
+ Version["Newest"] = "Newest";
23
38
  })(Version || (exports.Version = Version = {}));
39
+ /**
40
+ * Dialect / flavor axis, orthogonal to the on-prem/cloud release track.
41
+ *
42
+ * `Normal` = full ABAP, no restrictions.
43
+ * `Cloud` = restricted ABAP for Cloud, syntactic and semantic restrictions apply.
44
+ * `KeyUser` = stricter still (KeyUser Extensibility), strict subset of Cloud.
45
+ *
46
+ * Ordering: KeyUser(0) &lt; Cloud(1) &lt; Normal(2) — lower = more restrictive.
47
+ */
48
+ var LanguageVersion;
49
+ (function (LanguageVersion) {
50
+ LanguageVersion["Normal"] = "Normal";
51
+ LanguageVersion["KeyUser"] = "KeyUser";
52
+ LanguageVersion["Cloud"] = "Cloud";
53
+ })(LanguageVersion || (exports.LanguageVersion = LanguageVersion = {}));
54
+ const releaseDefsRaw = [
55
+ // Pre-cloud on-prem releases. kernel == op for these.
56
+ ["v700", { abap: "700", kernel: 700, op: 700, cloud: null, ce: null }],
57
+ ["v701", { abap: "701", kernel: 701, op: 701, cloud: null, ce: null }],
58
+ ["v702", { abap: "702", kernel: 702, op: 702, cloud: null, ce: null }],
59
+ ["v710", { abap: "710", kernel: 710, op: 710, cloud: null, ce: null }],
60
+ ["v711", { abap: "711", kernel: 711, op: 711, cloud: null, ce: null }],
61
+ ["v720", { abap: "720", kernel: 720, op: 720, cloud: null, ce: null }],
62
+ ["v722", { abap: "722", kernel: 722, op: 722, cloud: null, ce: null }],
63
+ ["v730", { abap: "730", kernel: 730, op: 730, cloud: null, ce: null }],
64
+ ["v731", { abap: "731", kernel: 731, op: 731, cloud: null, ce: null }],
65
+ ["v740sp02", { abap: "740SP02", kernel: 740, op: 740, cloud: null, ce: null }],
66
+ ["v740sp05", { abap: "740SP05", kernel: 741, op: 740, cloud: null, ce: null }],
67
+ ["v740sp08", { abap: "740SP08", kernel: 742, op: 740, cloud: null, ce: null }],
68
+ // Cloud-numbered releases. The *last* row at a given op value is that on-prem release.
69
+ // On-prem chain (op-band → anchor cloud row, encoded in op: below):
70
+ // op 750 : v760 .. v762 (anchor v762 == on-prem 750)
71
+ // op 751 : v763 .. v765 (anchor v765 == on-prem 751)
72
+ // op 752 : v766 .. v769 (anchor v769 == on-prem 752)
73
+ // op 753 : v770 .. v773 (anchor v773 == on-prem 753)
74
+ // op 754 : v774 .. v777 (anchor v777 == on-prem 754)
75
+ // op 755 : v778 .. v781 (anchor v781 == on-prem 755)
76
+ // op 756 : v782 .. v785 (anchor v785 == on-prem 756)
77
+ // op 757 : v786 .. v789 (anchor v789 == on-prem 757)
78
+ // op 758 : v790 .. v793 (anchor v793 == on-prem 758)
79
+ // op 816 : v794 .. v916 (anchor v916 == on-prem 816)
80
+ // op nul : v917 .. v918 (cloud-only, no on-prem counterpart yet)
81
+ //
82
+ // kernel 743–753 served v760–v770; from v771 kernel == cloud.
83
+ // ce: null means the release was never shipped to customers on any cloud platform.
84
+ ["v760", { abap: "7.60", kernel: 743, op: 750, cloud: 760, ce: null }],
85
+ ["v761", { abap: "7.61", kernel: 744, op: 750, cloud: 761, ce: null }],
86
+ ["v762", { abap: "7.62", kernel: 745, op: 750, cloud: 762, ce: null }], // == on-prem 750
87
+ ["v763", { abap: "7.63", kernel: 746, op: 751, cloud: 763, ce: null }],
88
+ ["v764", { abap: "7.64", kernel: 747, op: 751, cloud: 764, ce: null }],
89
+ ["v765", { abap: "7.65", kernel: 748, op: 751, cloud: 765, ce: null }], // == on-prem 751
90
+ ["v766", { abap: "7.66", kernel: 749, op: 752, cloud: 766, ce: null }],
91
+ ["v767", { abap: "7.67", kernel: 750, op: 752, cloud: 767, ce: 1702 }], // S/4 only
92
+ ["v768", { abap: "7.68", kernel: 751, op: 752, cloud: 768, ce: 1705 }], // S/4 only
93
+ ["v769", { abap: "7.69", kernel: 752, op: 752, cloud: 769, ce: 1708 }], // S/4 only == on-prem 752
94
+ ["v770", { abap: "7.70", kernel: 753, op: 753, cloud: 770, ce: 1711 }], // S/4 only
95
+ ["v771", { abap: "7.71", kernel: 771, op: 753, cloud: 771, ce: 1802 }], // S/4 only
96
+ ["v772", { abap: "7.72", kernel: 772, op: 753, cloud: 772, ce: 1805 }], // S/4 only
97
+ ["v773", { abap: "7.73", kernel: 773, op: 753, cloud: 773, ce: 1808 }], // S/4 only == on-prem 753
98
+ ["v774", { abap: "7.74", kernel: 774, op: 754, cloud: 774, ce: 1811 }],
99
+ ["v775", { abap: "7.75", kernel: 775, op: 754, cloud: 775, ce: 1902 }],
100
+ ["v776", { abap: "7.76", kernel: 776, op: 754, cloud: 776, ce: 1905 }],
101
+ ["v777", { abap: "7.77", kernel: 777, op: 754, cloud: 777, ce: 1908 }], // == on-prem 754
102
+ ["v778", { abap: "7.78", kernel: 778, op: 755, cloud: 778, ce: 1911 }],
103
+ ["v779", { abap: "7.79", kernel: 779, op: 755, cloud: 779, ce: 2002 }],
104
+ ["v780", { abap: "7.80", kernel: 780, op: 755, cloud: 780, ce: 2005 }],
105
+ ["v781", { abap: "7.81", kernel: 781, op: 755, cloud: 781, ce: 2008 }], // == on-prem 755
106
+ ["v782", { abap: "7.82", kernel: 782, op: 756, cloud: 782, ce: 2011 }],
107
+ ["v783", { abap: "7.83", kernel: 783, op: 756, cloud: 783, ce: 2102 }],
108
+ ["v784", { abap: "7.84", kernel: 784, op: 756, cloud: 784, ce: 2105 }],
109
+ ["v785", { abap: "7.85", kernel: 785, op: 756, cloud: 785, ce: 2108 }], // == on-prem 756
110
+ ["v786", { abap: "7.86", kernel: 786, op: 757, cloud: 786, ce: 2111 }],
111
+ ["v787", { abap: "7.87", kernel: 787, op: 757, cloud: 787, ce: 2202 }],
112
+ ["v788", { abap: "7.88", kernel: 788, op: 757, cloud: 788, ce: 2205 }],
113
+ ["v789", { abap: "7.89", kernel: 789, op: 757, cloud: 789, ce: 2208 }], // == on-prem 757
114
+ ["v790", { abap: "7.90", kernel: 790, op: 758, cloud: 790, ce: 2211 }],
115
+ ["v791", { abap: "7.91", kernel: 791, op: 758, cloud: 791, ce: 2302 }],
116
+ ["v792", { abap: "7.92", kernel: 792, op: 758, cloud: 792, ce: 2305 }], // BTP only
117
+ ["v793", { abap: "7.93", kernel: 793, op: 758, cloud: 793, ce: 2308 }], // == on-prem 758
118
+ ["v794", { abap: "7.94", kernel: 794, op: 816, cloud: 794, ce: 2311 }], // BTP only
119
+ ["v795", { abap: "7.95", kernel: 795, op: 816, cloud: 795, ce: 2402 }],
120
+ ["v796", { abap: "7.96", kernel: 796, op: 816, cloud: 796, ce: 2405 }], // BTP only
121
+ ["v912", { abap: "9.12", kernel: 912, op: 816, cloud: 912, ce: 2408 }],
122
+ ["v913", { abap: "9.13", kernel: 913, op: 816, cloud: 913, ce: 2411 }], // BTP only
123
+ ["v914", { abap: "9.14", kernel: 914, op: 816, cloud: 914, ce: 2502 }],
124
+ ["v915", { abap: "9.15", kernel: 915, op: 816, cloud: 915, ce: 2505 }], // BTP only
125
+ ["v916", { abap: "9.16", kernel: 916, op: 816, cloud: 916, ce: 2508 }], // == on-prem 816
126
+ ["v917", { abap: "9.17", kernel: 917, op: null, cloud: 917, ce: 2511 }], // BTP only
127
+ ["v918", { abap: "9.18", kernel: 918, op: null, cloud: 918, ce: 2602 }],
128
+ // Newest: always-active sentinel, satisfies any release check
129
+ ["Newest", { abap: null, kernel: null, op: null, cloud: null, ce: null }],
130
+ ];
131
+ /** All known releases in chronological order. Declaration order IS the ordering. */
132
+ exports.ReleaseList = releaseDefsRaw.map(([name, r], i) => Object.freeze(Object.assign(Object.assign({}, r), { name, ordinal: i })));
133
+ /** Lookup table keyed by release name (e.g. `Release.v740sp05`, `Release.Newest`). */
134
+ exports.Release = Object.freeze(Object.assign(Object.assign({}, Object.fromEntries(releaseDefsRaw.map(([name], i) => [name, exports.ReleaseList[i]]))), {
135
+ // Deprecated aliases: on-prem v750–v758 map to last cloud row at that op
136
+ v750: exports.ReleaseList[14], v751: exports.ReleaseList[17], v752: exports.ReleaseList[21], v753: exports.ReleaseList[25], v754: exports.ReleaseList[29], v755: exports.ReleaseList[33], v756: exports.ReleaseList[37], v757: exports.ReleaseList[41], v758: exports.ReleaseList[45], v816: exports.ReleaseList[53] }));
137
+ /**
138
+ * Is `running` at least as new as `required`?
139
+ * Comparison is purely by ordinal (declaration order in ReleaseList).
140
+ * Newest (last entry) satisfies any required release.
141
+ */
142
+ function releaseAtLeast(running, required) {
143
+ return running.ordinal >= required.ordinal;
144
+ }
145
+ // Lookup maps for the four constructor functions
146
+ const byAbap = new Map();
147
+ const byKernel = new Map();
148
+ const byOp = new Map();
149
+ const byCloud = new Map();
150
+ for (const r of exports.ReleaseList) {
151
+ if (r.abap !== null) {
152
+ byAbap.set(r.abap, r);
153
+ }
154
+ if (r.kernel !== null) {
155
+ byKernel.set(r.kernel, r);
156
+ }
157
+ if (r.cloud !== null) {
158
+ byCloud.set(r.cloud, r);
159
+ }
160
+ if (r.op !== null) {
161
+ // fromOP returns the *last* row at that op (the full on-prem release),
162
+ // so we overwrite on each iteration — later rows win.
163
+ byOp.set(r.op, r);
164
+ }
165
+ }
166
+ /** Look up a release by its ABAP name, e.g. "7.90", "740SP05", "9.16" */
167
+ function fromABAP(abap) {
168
+ const found = byAbap.get(abap);
169
+ if (found === undefined) {
170
+ throw new Error("Unknown ABAP release: " + abap);
171
+ }
172
+ return found;
173
+ }
174
+ /** Look up a release by its kernel release number, e.g. 753, 790, 916 */
175
+ function fromKernel(kernel) {
176
+ const found = byKernel.get(kernel);
177
+ if (found === undefined) {
178
+ throw new Error("Unknown kernel release: " + kernel);
179
+ }
180
+ return found;
181
+ }
182
+ /** Look up a release by its cloud release number, e.g. 793, 916 */
183
+ function fromCloud(cloud) {
184
+ const found = byCloud.get(cloud);
185
+ if (found === undefined) {
186
+ throw new Error("Unknown cloud release: " + cloud);
187
+ }
188
+ return found;
189
+ }
190
+ /**
191
+ * Look up a release by its on-prem release number, e.g. 758, 816.
192
+ * Returns the *last* cloud row at that op number, which is the full on-prem release.
193
+ */
194
+ function fromOP(op) {
195
+ const found = byOp.get(op);
196
+ if (found === undefined) {
197
+ throw new Error("Unknown on-prem release: " + op);
198
+ }
199
+ return found;
200
+ }
201
+ // ---------------------------------------------------------------------------
202
+ // Deprecated compatibility layer — keeps existing callers working
203
+ // ---------------------------------------------------------------------------
204
+ const byDeprecated = Object.freeze({
205
+ [Version.v700]: exports.Release["v700"],
206
+ [Version.v702]: exports.Release["v702"],
207
+ [Version.v740sp02]: exports.Release["v740sp02"],
208
+ [Version.v740sp05]: exports.Release["v740sp05"],
209
+ [Version.v740sp08]: exports.Release["v740sp08"],
210
+ [Version.v750]: exports.Release["v750"],
211
+ [Version.v751]: exports.Release["v751"],
212
+ [Version.v752]: exports.Release["v752"],
213
+ [Version.v753]: exports.Release["v753"],
214
+ [Version.v754]: exports.Release["v754"],
215
+ [Version.v755]: exports.Release["v755"],
216
+ [Version.v756]: exports.Release["v756"],
217
+ [Version.v757]: exports.Release["v757"],
218
+ [Version.v758]: exports.Release["v758"],
219
+ [Version.v816]: exports.Release["v816"],
220
+ [Version.Newest]: exports.Release["Newest"],
221
+ [Version.Cloud]: exports.Release["Newest"], // Cloud → Newest sentinel
222
+ [Version.OpenABAP]: exports.Release["v702"], // OpenABAP shares v702 release identity
223
+ });
224
+ function versionToABAPRelease(v) {
225
+ const found = byDeprecated[v];
226
+ if (found === undefined) {
227
+ throw new Error("No ABAPRelease mapping for Version: " + v);
228
+ }
229
+ return found;
230
+ }
24
231
  exports.defaultVersion = Version.v758;
232
+ exports.defaultRelease = exports.Release.v758;
25
233
  function getPreviousVersion(v) {
26
234
  if (v === Version.OpenABAP) {
27
235
  return Version.v702;
@@ -31,7 +239,7 @@ function getPreviousVersion(v) {
31
239
  if (found < 0) {
32
240
  throw "Unknown version: " + v;
33
241
  }
34
- else if (found === 0) {
242
+ if (found === 0) {
35
243
  throw "Nothing lower: " + v;
36
244
  }
37
245
  return all[found - 1];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.119.42",
3
+ "version": "2.119.44",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AssociationName = void 0;
4
- const combi_1 = require("../combi");
5
- class AssociationName extends combi_1.Expression {
6
- getRunnable() {
7
- return (0, combi_1.regex)(/^(\\_[\w]+)+$/);
8
- }
9
- }
10
- exports.AssociationName = AssociationName;
11
- //# sourceMappingURL=association_name.js.map
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SQLPath = void 0;
4
- const combi_1 = require("../combi");
5
- const tokens_1 = require("../../1_lexer/tokens");
6
- const association_name_1 = require("./association_name");
7
- const sql_cond_1 = require("./sql_cond");
8
- class SQLPath extends combi_1.Expression {
9
- getRunnable() {
10
- // todo, only from version?
11
- const condition = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.BracketLeftW), "ONE TO ONE WHERE", sql_cond_1.SQLCond, (0, combi_1.tok)(tokens_1.WBracketRight));
12
- const ret = (0, combi_1.seq)(association_name_1.AssociationName, (0, combi_1.optPrio)(condition), (0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/\w+/));
13
- return ret;
14
- }
15
- }
16
- exports.SQLPath = SQLPath;
17
- //# sourceMappingURL=sql_path.js.map