@abaplint/core 2.119.43 → 2.119.45

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 (374) hide show
  1. package/build/abaplint.d.ts +506 -7
  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 +14 -12
  6. package/build/src/abap/2_statements/expressions/assign_source.js +10 -4
  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/database_table.js +8 -0
  15. package/build/src/abap/2_statements/expressions/find_type.js +1 -1
  16. package/build/src/abap/2_statements/expressions/for.js +2 -2
  17. package/build/src/abap/2_statements/expressions/function_exporting_parameter.js +1 -1
  18. package/build/src/abap/2_statements/expressions/index.js +9 -0
  19. package/build/src/abap/2_statements/expressions/inlinedata.js +1 -1
  20. package/build/src/abap/2_statements/expressions/inlinefs.js +1 -1
  21. package/build/src/abap/2_statements/expressions/loop_source.js +1 -1
  22. package/build/src/abap/2_statements/expressions/message_source_source.js +1 -1
  23. package/build/src/abap/2_statements/expressions/new_object.js +1 -1
  24. package/build/src/abap/2_statements/expressions/reduce_next.js +1 -1
  25. package/build/src/abap/2_statements/expressions/select.js +2 -2
  26. package/build/src/abap/2_statements/expressions/select_cte.js +7 -6
  27. package/build/src/abap/2_statements/expressions/source.js +11 -11
  28. package/build/src/abap/2_statements/expressions/sql_aggregation.js +9 -9
  29. package/build/src/abap/2_statements/expressions/sql_association_entry.js +1 -1
  30. package/build/src/abap/2_statements/expressions/sql_associations_list.js +1 -1
  31. package/build/src/abap/2_statements/expressions/sql_case.js +1 -1
  32. package/build/src/abap/2_statements/expressions/sql_client.js +2 -2
  33. package/build/src/abap/2_statements/expressions/sql_compare.js +7 -6
  34. package/build/src/abap/2_statements/expressions/sql_cte_associations.js +1 -1
  35. package/build/src/abap/2_statements/expressions/sql_cte_hierarchy.js +1 -1
  36. package/build/src/abap/2_statements/expressions/sql_field.js +4 -4
  37. package/build/src/abap/2_statements/expressions/sql_field_list.js +1 -1
  38. package/build/src/abap/2_statements/expressions/sql_field_list_loop.js +2 -2
  39. package/build/src/abap/2_statements/expressions/sql_field_list_loop_greedy.js +2 -2
  40. package/build/src/abap/2_statements/expressions/sql_from.js +9 -8
  41. package/build/src/abap/2_statements/expressions/sql_from_source.js +4 -3
  42. package/build/src/abap/2_statements/expressions/sql_function.js +363 -31
  43. package/build/src/abap/2_statements/expressions/sql_function_input.js +1 -1
  44. package/build/src/abap/2_statements/expressions/sql_group_by.js +2 -2
  45. package/build/src/abap/2_statements/expressions/sql_hierarchy_accessor.js +1 -1
  46. package/build/src/abap/2_statements/expressions/sql_hierarchy_aggregate.js +1 -1
  47. package/build/src/abap/2_statements/expressions/sql_hierarchy_source.js +1 -1
  48. package/build/src/abap/2_statements/expressions/sql_in.js +2 -2
  49. package/build/src/abap/2_statements/expressions/sql_into_list.js +1 -1
  50. package/build/src/abap/2_statements/expressions/sql_join.js +1 -1
  51. package/build/src/abap/2_statements/expressions/sql_like_regexpr.js +19 -0
  52. package/build/src/abap/2_statements/expressions/sql_locate_regexpr.js +18 -0
  53. package/build/src/abap/2_statements/expressions/sql_occurrences_regexpr.js +15 -0
  54. package/build/src/abap/2_statements/expressions/sql_options.js +2 -2
  55. package/build/src/abap/2_statements/expressions/sql_over.js +2 -2
  56. package/build/src/abap/2_statements/expressions/sql_path_for_column.js +1 -1
  57. package/build/src/abap/2_statements/expressions/sql_path_for_entity.js +1 -1
  58. package/build/src/abap/2_statements/expressions/sql_path_segment.js +3 -3
  59. package/build/src/abap/2_statements/expressions/sql_privileged_access.js +1 -1
  60. package/build/src/abap/2_statements/expressions/sql_regexpr_from.js +17 -0
  61. package/build/src/abap/2_statements/expressions/sql_regexpr_group.js +17 -0
  62. package/build/src/abap/2_statements/expressions/sql_regexpr_occurrence.js +17 -0
  63. package/build/src/abap/2_statements/expressions/sql_regexpr_pattern.js +18 -0
  64. package/build/src/abap/2_statements/expressions/sql_replace_regexpr.js +22 -0
  65. package/build/src/abap/2_statements/expressions/sql_set_op.js +1 -1
  66. package/build/src/abap/2_statements/expressions/sql_set_op_group.js +2 -2
  67. package/build/src/abap/2_statements/expressions/sql_source.js +1 -1
  68. package/build/src/abap/2_statements/expressions/sql_source_no_space.js +1 -1
  69. package/build/src/abap/2_statements/expressions/sql_source_simple.js +1 -1
  70. package/build/src/abap/2_statements/expressions/sql_substring_regexpr.js +18 -0
  71. package/build/src/abap/2_statements/expressions/sql_target.js +2 -2
  72. package/build/src/abap/2_statements/expressions/string_template.js +1 -1
  73. package/build/src/abap/2_statements/expressions/string_template_formatting.js +2 -2
  74. package/build/src/abap/2_statements/expressions/table_expression.js +1 -1
  75. package/build/src/abap/2_statements/expressions/type.js +1 -1
  76. package/build/src/abap/2_statements/expressions/type_table.js +1 -1
  77. package/build/src/abap/2_statements/expressions/type_table_key.js +1 -1
  78. package/build/src/abap/2_statements/expressions/value_body.js +1 -1
  79. package/build/src/abap/2_statements/result.js +6 -0
  80. package/build/src/abap/2_statements/statement_parser.js +8 -5
  81. package/build/src/abap/2_statements/statements/add.js +2 -1
  82. package/build/src/abap/2_statements/statements/add_corresponding.js +1 -1
  83. package/build/src/abap/2_statements/statements/append.js +1 -1
  84. package/build/src/abap/2_statements/statements/assert.js +2 -1
  85. package/build/src/abap/2_statements/statements/assign.js +8 -3
  86. package/build/src/abap/2_statements/statements/assign_local_copy.js +1 -1
  87. package/build/src/abap/2_statements/statements/at.js +2 -1
  88. package/build/src/abap/2_statements/statements/at_line_selection.js +1 -1
  89. package/build/src/abap/2_statements/statements/at_pf.js +1 -1
  90. package/build/src/abap/2_statements/statements/at_selection_screen.js +1 -1
  91. package/build/src/abap/2_statements/statements/at_user_command.js +1 -1
  92. package/build/src/abap/2_statements/statements/authority_check.js +2 -1
  93. package/build/src/abap/2_statements/statements/back.js +1 -1
  94. package/build/src/abap/2_statements/statements/break.js +1 -1
  95. package/build/src/abap/2_statements/statements/break_id.js +1 -1
  96. package/build/src/abap/2_statements/statements/call.js +2 -1
  97. package/build/src/abap/2_statements/statements/call_badi.js +1 -1
  98. package/build/src/abap/2_statements/statements/call_database.js +1 -1
  99. package/build/src/abap/2_statements/statements/call_dialog.js +1 -1
  100. package/build/src/abap/2_statements/statements/call_function.js +5 -5
  101. package/build/src/abap/2_statements/statements/call_kernel.js +1 -1
  102. package/build/src/abap/2_statements/statements/call_ole.js +1 -1
  103. package/build/src/abap/2_statements/statements/call_screen.js +1 -1
  104. package/build/src/abap/2_statements/statements/call_selection_screen.js +1 -1
  105. package/build/src/abap/2_statements/statements/call_subscreen.js +1 -1
  106. package/build/src/abap/2_statements/statements/call_transaction.js +1 -1
  107. package/build/src/abap/2_statements/statements/call_transformation.js +2 -1
  108. package/build/src/abap/2_statements/statements/case_type.js +1 -1
  109. package/build/src/abap/2_statements/statements/catch_system_exceptions.js +1 -1
  110. package/build/src/abap/2_statements/statements/chain.js +1 -1
  111. package/build/src/abap/2_statements/statements/check_select_options.js +1 -1
  112. package/build/src/abap/2_statements/statements/class_deferred.js +2 -1
  113. package/build/src/abap/2_statements/statements/class_definition.js +1 -1
  114. package/build/src/abap/2_statements/statements/class_definition_load.js +2 -1
  115. package/build/src/abap/2_statements/statements/close_cursor.js +1 -1
  116. package/build/src/abap/2_statements/statements/close_dataset.js +1 -1
  117. package/build/src/abap/2_statements/statements/commit.js +2 -1
  118. package/build/src/abap/2_statements/statements/commit_entities.js +1 -1
  119. package/build/src/abap/2_statements/statements/communication.js +1 -1
  120. package/build/src/abap/2_statements/statements/compute.js +1 -1
  121. package/build/src/abap/2_statements/statements/contexts.js +1 -1
  122. package/build/src/abap/2_statements/statements/controls.js +1 -1
  123. package/build/src/abap/2_statements/statements/convert.js +2 -2
  124. package/build/src/abap/2_statements/statements/create_data.js +2 -2
  125. package/build/src/abap/2_statements/statements/create_object.js +2 -2
  126. package/build/src/abap/2_statements/statements/create_ole.js +1 -1
  127. package/build/src/abap/2_statements/statements/define.js +1 -1
  128. package/build/src/abap/2_statements/statements/delete_cluster.js +1 -1
  129. package/build/src/abap/2_statements/statements/delete_database.js +2 -1
  130. package/build/src/abap/2_statements/statements/delete_dataset.js +1 -1
  131. package/build/src/abap/2_statements/statements/delete_dynpro.js +1 -1
  132. package/build/src/abap/2_statements/statements/delete_internal.js +3 -1
  133. package/build/src/abap/2_statements/statements/delete_memory.js +1 -1
  134. package/build/src/abap/2_statements/statements/delete_report.js +1 -1
  135. package/build/src/abap/2_statements/statements/delete_textpool.js +1 -1
  136. package/build/src/abap/2_statements/statements/demand.js +1 -1
  137. package/build/src/abap/2_statements/statements/describe.js +1 -1
  138. package/build/src/abap/2_statements/statements/detail.js +1 -1
  139. package/build/src/abap/2_statements/statements/divide.js +2 -1
  140. package/build/src/abap/2_statements/statements/editor_call.js +1 -1
  141. package/build/src/abap/2_statements/statements/end_chain.js +1 -1
  142. package/build/src/abap/2_statements/statements/end_enhancement.js +1 -1
  143. package/build/src/abap/2_statements/statements/end_enhancement_section.js +1 -1
  144. package/build/src/abap/2_statements/statements/end_of_page.js +1 -1
  145. package/build/src/abap/2_statements/statements/end_of_selection.js +1 -1
  146. package/build/src/abap/2_statements/statements/end_test_seam.js +1 -1
  147. package/build/src/abap/2_statements/statements/endcatch.js +1 -1
  148. package/build/src/abap/2_statements/statements/enddefine.js +1 -1
  149. package/build/src/abap/2_statements/statements/endexec.js +1 -1
  150. package/build/src/abap/2_statements/statements/endform.js +2 -2
  151. package/build/src/abap/2_statements/statements/endfunction.js +2 -1
  152. package/build/src/abap/2_statements/statements/endmodule.js +1 -1
  153. package/build/src/abap/2_statements/statements/endon.js +1 -1
  154. package/build/src/abap/2_statements/statements/endprovide.js +1 -1
  155. package/build/src/abap/2_statements/statements/endwith.js +1 -1
  156. package/build/src/abap/2_statements/statements/enhancement.js +1 -1
  157. package/build/src/abap/2_statements/statements/enhancement_point.js +1 -1
  158. package/build/src/abap/2_statements/statements/enhancement_section.js +1 -1
  159. package/build/src/abap/2_statements/statements/exec_sql.js +1 -1
  160. package/build/src/abap/2_statements/statements/export.js +4 -3
  161. package/build/src/abap/2_statements/statements/export_dynpro.js +1 -1
  162. package/build/src/abap/2_statements/statements/extract.js +1 -1
  163. package/build/src/abap/2_statements/statements/fetch_next_cursor.js +1 -1
  164. package/build/src/abap/2_statements/statements/field.js +1 -1
  165. package/build/src/abap/2_statements/statements/field_group.js +1 -1
  166. package/build/src/abap/2_statements/statements/fields.js +1 -1
  167. package/build/src/abap/2_statements/statements/form.js +2 -1
  168. package/build/src/abap/2_statements/statements/format.js +1 -1
  169. package/build/src/abap/2_statements/statements/free.js +2 -1
  170. package/build/src/abap/2_statements/statements/free_memory.js +1 -1
  171. package/build/src/abap/2_statements/statements/free_object.js +1 -1
  172. package/build/src/abap/2_statements/statements/function_module.js +2 -1
  173. package/build/src/abap/2_statements/statements/function_pool.js +2 -1
  174. package/build/src/abap/2_statements/statements/generate_dynpro.js +1 -1
  175. package/build/src/abap/2_statements/statements/generate_report.js +1 -1
  176. package/build/src/abap/2_statements/statements/generate_subroutine.js +1 -1
  177. package/build/src/abap/2_statements/statements/get.js +1 -1
  178. package/build/src/abap/2_statements/statements/get_badi.js +1 -1
  179. package/build/src/abap/2_statements/statements/get_cursor.js +1 -1
  180. package/build/src/abap/2_statements/statements/get_dataset.js +1 -1
  181. package/build/src/abap/2_statements/statements/get_locale.js +1 -1
  182. package/build/src/abap/2_statements/statements/get_parameter.js +1 -1
  183. package/build/src/abap/2_statements/statements/get_permissions.js +1 -1
  184. package/build/src/abap/2_statements/statements/get_pf_status.js +1 -1
  185. package/build/src/abap/2_statements/statements/get_property.js +1 -1
  186. package/build/src/abap/2_statements/statements/get_reference.js +2 -1
  187. package/build/src/abap/2_statements/statements/get_run_time.js +1 -1
  188. package/build/src/abap/2_statements/statements/get_time.js +2 -1
  189. package/build/src/abap/2_statements/statements/hide.js +1 -1
  190. package/build/src/abap/2_statements/statements/import.js +5 -4
  191. package/build/src/abap/2_statements/statements/import_dynpro.js +1 -1
  192. package/build/src/abap/2_statements/statements/import_nametab.js +1 -1
  193. package/build/src/abap/2_statements/statements/infotypes.js +1 -1
  194. package/build/src/abap/2_statements/statements/initialization.js +1 -1
  195. package/build/src/abap/2_statements/statements/input.js +1 -1
  196. package/build/src/abap/2_statements/statements/insert_database.js +2 -1
  197. package/build/src/abap/2_statements/statements/insert_field_group.js +1 -1
  198. package/build/src/abap/2_statements/statements/insert_internal.js +1 -1
  199. package/build/src/abap/2_statements/statements/insert_report.js +2 -2
  200. package/build/src/abap/2_statements/statements/insert_textpool.js +1 -1
  201. package/build/src/abap/2_statements/statements/interface_def.js +1 -1
  202. package/build/src/abap/2_statements/statements/interface_deferred.js +2 -1
  203. package/build/src/abap/2_statements/statements/interface_load.js +2 -1
  204. package/build/src/abap/2_statements/statements/leave.js +1 -1
  205. package/build/src/abap/2_statements/statements/load_of_program.js +1 -1
  206. package/build/src/abap/2_statements/statements/load_report.js +1 -1
  207. package/build/src/abap/2_statements/statements/local.js +1 -1
  208. package/build/src/abap/2_statements/statements/log_point.js +1 -1
  209. package/build/src/abap/2_statements/statements/loop.js +4 -4
  210. package/build/src/abap/2_statements/statements/loop_at_screen.js +1 -1
  211. package/build/src/abap/2_statements/statements/loop_extract.js +2 -1
  212. package/build/src/abap/2_statements/statements/message.js +3 -2
  213. package/build/src/abap/2_statements/statements/method_def.js +9 -5
  214. package/build/src/abap/2_statements/statements/method_implementation.js +3 -1
  215. package/build/src/abap/2_statements/statements/modify_database.js +2 -1
  216. package/build/src/abap/2_statements/statements/modify_entities.js +1 -1
  217. package/build/src/abap/2_statements/statements/modify_line.js +1 -1
  218. package/build/src/abap/2_statements/statements/modify_screen.js +1 -1
  219. package/build/src/abap/2_statements/statements/module.js +1 -1
  220. package/build/src/abap/2_statements/statements/move.js +2 -2
  221. package/build/src/abap/2_statements/statements/move_corresponding.js +2 -2
  222. package/build/src/abap/2_statements/statements/multiply.js +2 -1
  223. package/build/src/abap/2_statements/statements/new_line.js +1 -1
  224. package/build/src/abap/2_statements/statements/new_page.js +1 -1
  225. package/build/src/abap/2_statements/statements/nodes.js +1 -1
  226. package/build/src/abap/2_statements/statements/on_change.js +1 -1
  227. package/build/src/abap/2_statements/statements/open_cursor.js +2 -2
  228. package/build/src/abap/2_statements/statements/open_dataset.js +1 -1
  229. package/build/src/abap/2_statements/statements/pack.js +1 -1
  230. package/build/src/abap/2_statements/statements/parameter.js +1 -1
  231. package/build/src/abap/2_statements/statements/perform.js +3 -3
  232. package/build/src/abap/2_statements/statements/position.js +1 -1
  233. package/build/src/abap/2_statements/statements/print_control.js +1 -1
  234. package/build/src/abap/2_statements/statements/process_after_input.js +1 -1
  235. package/build/src/abap/2_statements/statements/process_before_output.js +1 -1
  236. package/build/src/abap/2_statements/statements/process_on_help_request.js +1 -1
  237. package/build/src/abap/2_statements/statements/process_on_value_request.js +1 -1
  238. package/build/src/abap/2_statements/statements/program.js +1 -1
  239. package/build/src/abap/2_statements/statements/provide.js +1 -1
  240. package/build/src/abap/2_statements/statements/put.js +1 -1
  241. package/build/src/abap/2_statements/statements/raise.js +4 -3
  242. package/build/src/abap/2_statements/statements/raise_entity_event.js +2 -1
  243. package/build/src/abap/2_statements/statements/raise_event.js +2 -1
  244. package/build/src/abap/2_statements/statements/ranges.js +1 -1
  245. package/build/src/abap/2_statements/statements/read_dataset.js +1 -1
  246. package/build/src/abap/2_statements/statements/read_entities.js +1 -1
  247. package/build/src/abap/2_statements/statements/read_line.js +1 -1
  248. package/build/src/abap/2_statements/statements/read_report.js +1 -1
  249. package/build/src/abap/2_statements/statements/read_table.js +4 -3
  250. package/build/src/abap/2_statements/statements/read_textpool.js +1 -1
  251. package/build/src/abap/2_statements/statements/receive.js +1 -1
  252. package/build/src/abap/2_statements/statements/refresh.js +1 -1
  253. package/build/src/abap/2_statements/statements/refresh_control.js +1 -1
  254. package/build/src/abap/2_statements/statements/reject.js +1 -1
  255. package/build/src/abap/2_statements/statements/report.js +1 -1
  256. package/build/src/abap/2_statements/statements/reserve.js +1 -1
  257. package/build/src/abap/2_statements/statements/retry.js +1 -1
  258. package/build/src/abap/2_statements/statements/return.js +1 -1
  259. package/build/src/abap/2_statements/statements/rollback.js +2 -1
  260. package/build/src/abap/2_statements/statements/rollback_entities.js +1 -1
  261. package/build/src/abap/2_statements/statements/scan.js +1 -1
  262. package/build/src/abap/2_statements/statements/scroll_list.js +1 -1
  263. package/build/src/abap/2_statements/statements/search.js +1 -1
  264. package/build/src/abap/2_statements/statements/selectionscreen.js +1 -1
  265. package/build/src/abap/2_statements/statements/selectoption.js +1 -1
  266. package/build/src/abap/2_statements/statements/set_blank.js +1 -1
  267. package/build/src/abap/2_statements/statements/set_country.js +1 -1
  268. package/build/src/abap/2_statements/statements/set_cursor.js +1 -1
  269. package/build/src/abap/2_statements/statements/set_dataset.js +1 -1
  270. package/build/src/abap/2_statements/statements/set_extended_check.js +1 -1
  271. package/build/src/abap/2_statements/statements/set_handler.js +2 -1
  272. package/build/src/abap/2_statements/statements/set_language.js +1 -1
  273. package/build/src/abap/2_statements/statements/set_left.js +1 -1
  274. package/build/src/abap/2_statements/statements/set_locale.js +1 -1
  275. package/build/src/abap/2_statements/statements/set_locks.js +1 -1
  276. package/build/src/abap/2_statements/statements/set_margin.js +1 -1
  277. package/build/src/abap/2_statements/statements/set_parameter.js +1 -1
  278. package/build/src/abap/2_statements/statements/set_pf_status.js +1 -1
  279. package/build/src/abap/2_statements/statements/set_property.js +1 -1
  280. package/build/src/abap/2_statements/statements/set_run_time.js +1 -1
  281. package/build/src/abap/2_statements/statements/set_screen.js +1 -1
  282. package/build/src/abap/2_statements/statements/set_titlebar.js +1 -1
  283. package/build/src/abap/2_statements/statements/set_update_task.js +1 -1
  284. package/build/src/abap/2_statements/statements/set_user_command.js +1 -1
  285. package/build/src/abap/2_statements/statements/skip.js +1 -1
  286. package/build/src/abap/2_statements/statements/sort_dataset.js +1 -1
  287. package/build/src/abap/2_statements/statements/start_of_selection.js +1 -1
  288. package/build/src/abap/2_statements/statements/static.js +3 -2
  289. package/build/src/abap/2_statements/statements/stop.js +1 -1
  290. package/build/src/abap/2_statements/statements/submit.js +1 -1
  291. package/build/src/abap/2_statements/statements/subtract.js +2 -1
  292. package/build/src/abap/2_statements/statements/subtract_corresponding.js +1 -1
  293. package/build/src/abap/2_statements/statements/sum.js +1 -1
  294. package/build/src/abap/2_statements/statements/summary.js +1 -1
  295. package/build/src/abap/2_statements/statements/supply.js +1 -1
  296. package/build/src/abap/2_statements/statements/suppress_dialog.js +1 -1
  297. package/build/src/abap/2_statements/statements/syntax_check.js +1 -1
  298. package/build/src/abap/2_statements/statements/system_call.js +1 -1
  299. package/build/src/abap/2_statements/statements/tables.js +1 -1
  300. package/build/src/abap/2_statements/statements/test_injection.js +2 -1
  301. package/build/src/abap/2_statements/statements/test_seam.js +1 -1
  302. package/build/src/abap/2_statements/statements/top_of_page.js +1 -1
  303. package/build/src/abap/2_statements/statements/transfer.js +1 -1
  304. package/build/src/abap/2_statements/statements/truncate_dataset.js +1 -1
  305. package/build/src/abap/2_statements/statements/type.js +1 -1
  306. package/build/src/abap/2_statements/statements/type_begin.js +1 -1
  307. package/build/src/abap/2_statements/statements/type_enum.js +1 -1
  308. package/build/src/abap/2_statements/statements/type_enum_begin.js +1 -1
  309. package/build/src/abap/2_statements/statements/type_enum_end.js +1 -1
  310. package/build/src/abap/2_statements/statements/type_mesh.js +1 -1
  311. package/build/src/abap/2_statements/statements/type_mesh_begin.js +1 -1
  312. package/build/src/abap/2_statements/statements/type_mesh_end.js +1 -1
  313. package/build/src/abap/2_statements/statements/type_pool.js +1 -1
  314. package/build/src/abap/2_statements/statements/type_pools.js +1 -1
  315. package/build/src/abap/2_statements/statements/uline.js +1 -1
  316. package/build/src/abap/2_statements/statements/unpack.js +1 -1
  317. package/build/src/abap/2_statements/statements/update_database.js +4 -3
  318. package/build/src/abap/2_statements/statements/verification_message.js +1 -1
  319. package/build/src/abap/2_statements/statements/wait.js +4 -3
  320. package/build/src/abap/2_statements/statements/when_type.js +1 -1
  321. package/build/src/abap/2_statements/statements/window.js +1 -1
  322. package/build/src/abap/2_statements/statements/with.js +1 -1
  323. package/build/src/abap/2_statements/statements/write.js +1 -1
  324. package/build/src/abap/5_syntax/_builtin.js +50 -50
  325. package/build/src/abap/5_syntax/_current_scope.js +9 -0
  326. package/build/src/abap/5_syntax/expressions/field_chain.js +3 -3
  327. package/build/src/abap/5_syntax/expressions/method_source.js +1 -1
  328. package/build/src/abap/5_syntax/expressions/select.js +13 -3
  329. package/build/src/abap/5_syntax/statements/call_function.js +1 -1
  330. package/build/src/abap/5_syntax/statements/loop.js +1 -1
  331. package/build/src/abap/5_syntax/statements/move_corresponding.js +3 -3
  332. package/build/src/abap/abap_parser.js +21 -5
  333. package/build/src/abap/nodes/expression_node.js +3 -0
  334. package/build/src/cds/cds_parser.js +8 -8
  335. package/build/src/cds/expressions/cds_define_projection.js +1 -1
  336. package/build/src/cds/expressions/cds_define_view.js +1 -1
  337. package/build/src/config.js +42 -12
  338. package/build/src/ddl/ddl_parser.js +2 -2
  339. package/build/src/index.js +6 -2
  340. package/build/src/objects/_abap_object.js +3 -2
  341. package/build/src/objects/_abstract_object.js +1 -1
  342. package/build/src/objects/proxy_object.js +1 -1
  343. package/build/src/objects/table.js +1 -1
  344. package/build/src/registry.js +3 -3
  345. package/build/src/rules/ambiguous_statement.js +1 -1
  346. package/build/src/rules/avoid_use.js +2 -2
  347. package/build/src/rules/call_transaction_authority_check.js +3 -3
  348. package/build/src/rules/cds_legacy_view.js +2 -2
  349. package/build/src/rules/cloud_types.js +1 -1
  350. package/build/src/rules/downport.js +11 -11
  351. package/build/src/rules/function_module_recommendations.js +23 -2
  352. package/build/src/rules/index.js +1 -0
  353. package/build/src/rules/inline_data_old_versions.js +3 -3
  354. package/build/src/rules/local_testclass_consistency.js +1 -1
  355. package/build/src/rules/main_file_contents.js +1 -1
  356. package/build/src/rules/no_inline_in_optional_branches.js +4 -4
  357. package/build/src/rules/obsolete_statement.js +6 -6
  358. package/build/src/rules/parser_702_chaining.js +2 -2
  359. package/build/src/rules/parser_error.js +2 -2
  360. package/build/src/rules/prefer_corresponding.js +1 -1
  361. package/build/src/rules/prefer_inline.js +2 -1
  362. package/build/src/rules/prefer_raise_exception_new.js +1 -1
  363. package/build/src/rules/prefer_xsdbool.js +2 -1
  364. package/build/src/rules/sql_escape_host_variables.js +3 -3
  365. package/build/src/rules/strict_sql.js +2 -2
  366. package/build/src/rules/superfluous_value.js +2 -2
  367. package/build/src/rules/sy_read_restriction.js +152 -0
  368. package/build/src/rules/use_bool_expression.js +6 -5
  369. package/build/src/rules/use_line_exists.js +4 -3
  370. package/build/src/rules/use_new.js +2 -1
  371. package/build/src/version.js +148 -3
  372. package/package.json +1 -1
  373. package/build/src/abap/2_statements/expressions/association_name.js +0 -11
  374. package/build/src/abap/2_statements/expressions/sql_path.js +0 -17
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SyReadRestriction = exports.SyReadRestrictionConf = void 0;
37
+ const issue_1 = require("../issue");
38
+ const Expressions = __importStar(require("../abap/2_statements/expressions"));
39
+ const _abap_rule_1 = require("./_abap_rule");
40
+ const _basic_rule_config_1 = require("./_basic_rule_config");
41
+ const _irule_1 = require("./_irule");
42
+ const version_1 = require("../version");
43
+ const severity_1 = require("../severity");
44
+ // ABAP Cloud: 17 system fields allowed for reading
45
+ // https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENSYSTEM_FIELDS.html
46
+ const CLOUD_ALLOWED = new Set([
47
+ "SY-BATCH",
48
+ "SY-DBCNT",
49
+ "SY-FDPOS",
50
+ "SY-INDEX",
51
+ "SY-LANGU",
52
+ "SY-MANDT",
53
+ "SY-MSGID",
54
+ "SY-MSGNO",
55
+ "SY-MSGTY",
56
+ "SY-MSGV1",
57
+ "SY-MSGV2",
58
+ "SY-MSGV3",
59
+ "SY-MSGV4",
60
+ "SY-SUBRC",
61
+ "SY-SYSID",
62
+ "SY-TABIX",
63
+ "SY-UNAME",
64
+ ]);
65
+ // ABAP for Key Users: 5 system fields allowed for reading
66
+ const KEYUSER_ALLOWED = new Set([
67
+ "SY-DBCNT",
68
+ "SY-FDPOS",
69
+ "SY-INDEX",
70
+ "SY-SUBRC",
71
+ "SY-TABIX",
72
+ ]);
73
+ class SyReadRestrictionConf extends _basic_rule_config_1.BasicRuleConfig {
74
+ }
75
+ exports.SyReadRestrictionConf = SyReadRestrictionConf;
76
+ class SyReadRestriction extends _abap_rule_1.ABAPRule {
77
+ constructor() {
78
+ super(...arguments);
79
+ this.conf = new SyReadRestrictionConf();
80
+ }
81
+ getMetadata() {
82
+ return {
83
+ key: "sy_read_restriction",
84
+ title: "SY field read restriction",
85
+ shortDescription: `Finds reads of SY fields not allowed in the current language version`,
86
+ extendedInformation: `In ABAP Cloud, only 17 system fields may be read; reads of other fields produce a warning.\n` +
87
+ `In ABAP for Key Users, only 5 system fields may be read:\n` +
88
+ `SY-DBCNT, SY-FDPOS, SY-INDEX, SY-SUBRC, SY-TABIX.\n` +
89
+ `https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENSYSTEM_FIELDS.html`,
90
+ tags: [_irule_1.RuleTag.SingleFile],
91
+ badExample: `lv = sy-uname.`,
92
+ goodExample: `IF sy-subrc = 0. ENDIF.`,
93
+ };
94
+ }
95
+ getConfig() {
96
+ return this.conf;
97
+ }
98
+ setConfig(conf) {
99
+ this.conf = conf;
100
+ }
101
+ runParsed(file, _obj) {
102
+ var _a;
103
+ const issues = [];
104
+ const langVer = this.reg.getConfig().getLanguageVersion();
105
+ if (langVer === version_1.LanguageVersion.Normal) {
106
+ return [];
107
+ }
108
+ const allowed = langVer === version_1.LanguageVersion.KeyUser ? KEYUSER_ALLOWED : CLOUD_ALLOWED;
109
+ const severity = langVer === version_1.LanguageVersion.KeyUser ? this.conf.severity : severity_1.Severity.Warning;
110
+ // Collect tokens that appear in writable Target positions — they're modifications,
111
+ // handled by the sy_modification rule, not this one.
112
+ const writeTokens = new Set();
113
+ for (const t of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressionsRecursive(Expressions.Target)) || []) {
114
+ const concat = t.concatTokens().toUpperCase();
115
+ if (!concat.startsWith("SY-")) {
116
+ continue;
117
+ }
118
+ writeTokens.add(t.getFirstToken());
119
+ }
120
+ // Walk all tokens looking for the sequence SY - <fieldname>
121
+ const tokens = file.getTokens();
122
+ for (let i = 0; i + 2 < tokens.length; i++) {
123
+ const sy = tokens[i];
124
+ const dash = tokens[i + 1];
125
+ const fld = tokens[i + 2];
126
+ if (sy.getStr().toUpperCase() !== "SY") {
127
+ continue;
128
+ }
129
+ if (dash.getStr() !== "-") {
130
+ continue;
131
+ }
132
+ // Adjacent: no whitespace between the three tokens, on the same row
133
+ if (sy.getEnd().getCol() !== dash.getStart().getCol()
134
+ || dash.getEnd().getCol() !== fld.getStart().getCol()
135
+ || sy.getRow() !== dash.getRow()
136
+ || dash.getRow() !== fld.getRow()) {
137
+ continue;
138
+ }
139
+ if (writeTokens.has(sy)) {
140
+ continue;
141
+ }
142
+ const fieldName = "SY-" + fld.getStr().toUpperCase();
143
+ if (!allowed.has(fieldName)) {
144
+ const message = `SY field "${fieldName}" cannot be read in language version ${langVer}`;
145
+ issues.push(issue_1.Issue.atToken(file, sy, message, this.getMetadata().key, severity));
146
+ }
147
+ }
148
+ return issues;
149
+ }
150
+ }
151
+ exports.SyReadRestriction = SyReadRestriction;
152
+ //# sourceMappingURL=sy_read_restriction.js.map
@@ -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,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultVersion = exports.Version = void 0;
3
+ exports.defaultRelease = exports.Release = exports.ReleaseList = exports.LanguageVersion = exports.Version = void 0;
4
+ exports.releaseAtLeast = releaseAtLeast;
5
+ exports.versionToABAPRelease = versionToABAPRelease;
4
6
  exports.getPreviousVersion = getPreviousVersion;
7
+ /** @deprecated Use ABAPRelease and Release instead */
5
8
  var Version;
6
9
  (function (Version) {
7
10
  Version["OpenABAP"] = "open-abap";
@@ -19,9 +22,151 @@ var Version;
19
22
  Version["v756"] = "v756";
20
23
  Version["v757"] = "v757";
21
24
  Version["v758"] = "v758";
25
+ Version["v816"] = "v816";
26
+ /**
27
+ * Steampunk / SAP BTP ABAP Environment. This was never a release identity —
28
+ * it always meant "latest available release, parsed under cloud-language
29
+ * restrictions". It expands into the explicit
30
+ * Release.Newest + {@link LanguageVersion.Cloud} pair.
31
+ */
22
32
  Version["Cloud"] = "Cloud";
23
33
  })(Version || (exports.Version = Version = {}));
24
- exports.defaultVersion = Version.v758;
34
+ /**
35
+ * Dialect / flavor axis, orthogonal to the on-prem/cloud release track.
36
+ *
37
+ * `Normal` = full ABAP, no restrictions.
38
+ * `Cloud` = restricted ABAP for Cloud, syntactic and semantic restrictions apply.
39
+ * `KeyUser` = stricter still (KeyUser Extensibility), strict subset of Cloud.
40
+ *
41
+ * Ordering: KeyUser(0) &lt; Cloud(1) &lt; Normal(2) — lower = more restrictive.
42
+ */
43
+ var LanguageVersion;
44
+ (function (LanguageVersion) {
45
+ LanguageVersion["Normal"] = "Normal";
46
+ LanguageVersion["KeyUser"] = "KeyUser";
47
+ LanguageVersion["Cloud"] = "Cloud";
48
+ })(LanguageVersion || (exports.LanguageVersion = LanguageVersion = {}));
49
+ const releaseDefsRaw = [
50
+ // Pre-cloud on-prem releases. kernel == op for these.
51
+ ["v700", { abap: "700", kernel: 700, op: 700, cloud: null, ce: null }],
52
+ ["v701", { abap: "701", kernel: 701, op: 701, cloud: null, ce: null }],
53
+ ["v702", { abap: "702", kernel: 702, op: 702, cloud: null, ce: null }],
54
+ ["v710", { abap: "710", kernel: 710, op: 710, cloud: null, ce: null }],
55
+ ["v711", { abap: "711", kernel: 711, op: 711, cloud: null, ce: null }],
56
+ ["v720", { abap: "720", kernel: 720, op: 720, cloud: null, ce: null }],
57
+ ["v722", { abap: "722", kernel: 722, op: 722, cloud: null, ce: null }],
58
+ ["v730", { abap: "730", kernel: 730, op: 730, cloud: null, ce: null }],
59
+ ["v731", { abap: "731", kernel: 731, op: 731, cloud: null, ce: null }],
60
+ ["v740sp02", { abap: "740SP02", kernel: 740, op: 740, cloud: null, ce: null }],
61
+ ["v740sp05", { abap: "740SP05", kernel: 741, op: 740, cloud: null, ce: null }],
62
+ ["v740sp08", { abap: "740SP08", kernel: 742, op: 740, cloud: null, ce: null }],
63
+ // Cloud-numbered releases. The *last* row at a given op value is that on-prem release.
64
+ // On-prem chain (op-band → anchor cloud row, encoded in op: below):
65
+ // op 750 : v760 .. v762 (anchor v762 == on-prem 750)
66
+ // op 751 : v763 .. v765 (anchor v765 == on-prem 751)
67
+ // op 752 : v766 .. v769 (anchor v769 == on-prem 752)
68
+ // op 753 : v770 .. v773 (anchor v773 == on-prem 753)
69
+ // op 754 : v774 .. v777 (anchor v777 == on-prem 754)
70
+ // op 755 : v778 .. v781 (anchor v781 == on-prem 755)
71
+ // op 756 : v782 .. v785 (anchor v785 == on-prem 756)
72
+ // op 757 : v786 .. v789 (anchor v789 == on-prem 757)
73
+ // op 758 : v790 .. v793 (anchor v793 == on-prem 758)
74
+ // op 816 : v794 .. v916 (anchor v916 == on-prem 816)
75
+ // op nul : v917 .. v918 (cloud-only, no on-prem counterpart yet)
76
+ //
77
+ // kernel 743–753 served v760–v770; from v771 kernel == cloud.
78
+ // ce: null means the release was never shipped to customers on any cloud platform.
79
+ ["v760", { abap: "7.60", kernel: 743, op: 750, cloud: 760, ce: null }],
80
+ ["v761", { abap: "7.61", kernel: 744, op: 750, cloud: 761, ce: null }],
81
+ ["v762", { abap: "7.62", kernel: 745, op: 750, cloud: 762, ce: null }], // == on-prem 750
82
+ ["v763", { abap: "7.63", kernel: 746, op: 751, cloud: 763, ce: null }],
83
+ ["v764", { abap: "7.64", kernel: 747, op: 751, cloud: 764, ce: null }],
84
+ ["v765", { abap: "7.65", kernel: 748, op: 751, cloud: 765, ce: null }], // == on-prem 751
85
+ ["v766", { abap: "7.66", kernel: 749, op: 752, cloud: 766, ce: null }],
86
+ ["v767", { abap: "7.67", kernel: 750, op: 752, cloud: 767, ce: 1702 }], // S/4 only
87
+ ["v768", { abap: "7.68", kernel: 751, op: 752, cloud: 768, ce: 1705 }], // S/4 only
88
+ ["v769", { abap: "7.69", kernel: 752, op: 752, cloud: 769, ce: 1708 }], // S/4 only == on-prem 752
89
+ ["v770", { abap: "7.70", kernel: 753, op: 753, cloud: 770, ce: 1711 }], // S/4 only
90
+ ["v771", { abap: "7.71", kernel: 771, op: 753, cloud: 771, ce: 1802 }], // S/4 only
91
+ ["v772", { abap: "7.72", kernel: 772, op: 753, cloud: 772, ce: 1805 }], // S/4 only
92
+ ["v773", { abap: "7.73", kernel: 773, op: 753, cloud: 773, ce: 1808 }], // S/4 only == on-prem 753
93
+ ["v774", { abap: "7.74", kernel: 774, op: 754, cloud: 774, ce: 1811 }],
94
+ ["v775", { abap: "7.75", kernel: 775, op: 754, cloud: 775, ce: 1902 }],
95
+ ["v776", { abap: "7.76", kernel: 776, op: 754, cloud: 776, ce: 1905 }],
96
+ ["v777", { abap: "7.77", kernel: 777, op: 754, cloud: 777, ce: 1908 }], // == on-prem 754
97
+ ["v778", { abap: "7.78", kernel: 778, op: 755, cloud: 778, ce: 1911 }],
98
+ ["v779", { abap: "7.79", kernel: 779, op: 755, cloud: 779, ce: 2002 }],
99
+ ["v780", { abap: "7.80", kernel: 780, op: 755, cloud: 780, ce: 2005 }],
100
+ ["v781", { abap: "7.81", kernel: 781, op: 755, cloud: 781, ce: 2008 }], // == on-prem 755
101
+ ["v782", { abap: "7.82", kernel: 782, op: 756, cloud: 782, ce: 2011 }],
102
+ ["v783", { abap: "7.83", kernel: 783, op: 756, cloud: 783, ce: 2102 }],
103
+ ["v784", { abap: "7.84", kernel: 784, op: 756, cloud: 784, ce: 2105 }],
104
+ ["v785", { abap: "7.85", kernel: 785, op: 756, cloud: 785, ce: 2108 }], // == on-prem 756
105
+ ["v786", { abap: "7.86", kernel: 786, op: 757, cloud: 786, ce: 2111 }],
106
+ ["v787", { abap: "7.87", kernel: 787, op: 757, cloud: 787, ce: 2202 }],
107
+ ["v788", { abap: "7.88", kernel: 788, op: 757, cloud: 788, ce: 2205 }],
108
+ ["v789", { abap: "7.89", kernel: 789, op: 757, cloud: 789, ce: 2208 }], // == on-prem 757
109
+ ["v790", { abap: "7.90", kernel: 790, op: 758, cloud: 790, ce: 2211 }],
110
+ ["v791", { abap: "7.91", kernel: 791, op: 758, cloud: 791, ce: 2302 }],
111
+ ["v792", { abap: "7.92", kernel: 792, op: 758, cloud: 792, ce: 2305 }], // BTP only
112
+ ["v793", { abap: "7.93", kernel: 793, op: 758, cloud: 793, ce: 2308 }], // == on-prem 758
113
+ ["v794", { abap: "7.94", kernel: 794, op: 816, cloud: 794, ce: 2311 }], // BTP only
114
+ ["v795", { abap: "7.95", kernel: 795, op: 816, cloud: 795, ce: 2402 }],
115
+ ["v796", { abap: "7.96", kernel: 796, op: 816, cloud: 796, ce: 2405 }], // BTP only
116
+ ["v912", { abap: "9.12", kernel: 912, op: 816, cloud: 912, ce: 2408 }],
117
+ ["v913", { abap: "9.13", kernel: 913, op: 816, cloud: 913, ce: 2411 }], // BTP only
118
+ ["v914", { abap: "9.14", kernel: 914, op: 816, cloud: 914, ce: 2502 }],
119
+ ["v915", { abap: "9.15", kernel: 915, op: 816, cloud: 915, ce: 2505 }], // BTP only
120
+ ["v916", { abap: "9.16", kernel: 916, op: 816, cloud: 916, ce: 2508 }], // == on-prem 816
121
+ ["v917", { abap: "9.17", kernel: 917, op: null, cloud: 917, ce: 2511 }], // BTP only
122
+ ["v918", { abap: "9.18", kernel: 918, op: null, cloud: 918, ce: 2602 }],
123
+ // Newest: always-active sentinel, satisfies any release check
124
+ ["Newest", { abap: null, kernel: null, op: null, cloud: null, ce: null }],
125
+ ];
126
+ /** All known releases in chronological order. Declaration order IS the ordering. */
127
+ exports.ReleaseList = releaseDefsRaw.map(([name, r], i) => Object.freeze(Object.assign(Object.assign({}, r), { name, ordinal: i })));
128
+ /** Lookup table keyed by release name (e.g. `Release.v740sp05`, `Release.Newest`). */
129
+ exports.Release = Object.freeze(Object.assign(Object.assign({}, Object.fromEntries(releaseDefsRaw.map(([name], i) => [name, exports.ReleaseList[i]]))), {
130
+ // Deprecated aliases: on-prem v750–v758 map to last cloud row at that op
131
+ 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] }));
132
+ /**
133
+ * Is `running` at least as new as `required`?
134
+ * Comparison is purely by ordinal (declaration order in ReleaseList).
135
+ * Newest (last entry) satisfies any required release.
136
+ */
137
+ function releaseAtLeast(running, required) {
138
+ return running.ordinal >= required.ordinal;
139
+ }
140
+ // ---------------------------------------------------------------------------
141
+ // Deprecated compatibility layer — keeps existing callers working
142
+ // ---------------------------------------------------------------------------
143
+ const byDeprecated = Object.freeze({
144
+ [Version.v700]: exports.Release["v700"],
145
+ [Version.v702]: exports.Release["v702"],
146
+ [Version.v740sp02]: exports.Release["v740sp02"],
147
+ [Version.v740sp05]: exports.Release["v740sp05"],
148
+ [Version.v740sp08]: exports.Release["v740sp08"],
149
+ [Version.v750]: exports.Release["v750"],
150
+ [Version.v751]: exports.Release["v751"],
151
+ [Version.v752]: exports.Release["v752"],
152
+ [Version.v753]: exports.Release["v753"],
153
+ [Version.v754]: exports.Release["v754"],
154
+ [Version.v755]: exports.Release["v755"],
155
+ [Version.v756]: exports.Release["v756"],
156
+ [Version.v757]: exports.Release["v757"],
157
+ [Version.v758]: exports.Release["v758"],
158
+ [Version.v816]: exports.Release["v816"],
159
+ [Version.Cloud]: exports.Release["Newest"], // Cloud → Newest sentinel
160
+ [Version.OpenABAP]: exports.Release["v702"], // OpenABAP shares v702 release identity
161
+ });
162
+ function versionToABAPRelease(v) {
163
+ const found = byDeprecated[v];
164
+ if (found === undefined) {
165
+ throw new Error("No ABAPRelease mapping for Version: " + v);
166
+ }
167
+ return found;
168
+ }
169
+ exports.defaultRelease = exports.Release.Newest;
25
170
  function getPreviousVersion(v) {
26
171
  if (v === Version.OpenABAP) {
27
172
  return Version.v702;
@@ -31,7 +176,7 @@ function getPreviousVersion(v) {
31
176
  if (found < 0) {
32
177
  throw "Unknown version: " + v;
33
178
  }
34
- else if (found === 0) {
179
+ if (found === 0) {
35
180
  throw "Nothing lower: " + v;
36
181
  }
37
182
  return all[found - 1];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.119.43",
3
+ "version": "2.119.45",
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