@abaplint/cli 2.119.44 → 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 (2) hide show
  1. package/build/cli.js +364 -186
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -3124,16 +3124,17 @@ function buildSelectSingleCore(allowInto = false) {
3124
3124
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
3125
3125
  const client = (0, combi_1.optPrio)(_1.SQLClient);
3126
3126
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
3127
+ const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
3127
3128
  const whereClause = (0, combi_1.optPrio)(where);
3128
3129
  const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(sql_group_by_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
3129
- const trailingOpts = (0, combi_1.seq)((0, combi_1.optPrio)(_1.DatabaseConnection), (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
3130
+ const trailingOpts = (0, combi_1.seq)(conn, (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
3130
3131
  const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
3131
3132
  if (!allowInto) {
3132
3133
  const singleBody = (0, combi_1.seq)(_1.SQLFrom, client, byp, whereClause, groupHaving, trailingOpts);
3133
3134
  return (0, combi_1.seq)(fieldList, singleBody);
3134
3135
  }
3135
- const singleAfterFrom = (0, combi_1.seq)(_1.SQLFrom, client, byp, (0, combi_1.optPrio)(_1.DatabaseConnection), (0, combi_1.altPrio)((0, combi_1.seq)(intoSingle, byp, whereClause, groupHaving, trailingOpts), (0, combi_1.seq)((0, combi_1.optPrio)(sqlFields), whereClause, groupHaving, trailingOpts, (0, combi_1.optPrio)(intoSingle), (0, combi_1.optPrio)(_1.DatabaseConnection))));
3136
- const singleIntoBeforeFrom = (0, combi_1.seq)(intoSingle, _1.SQLFrom, client, byp, (0, combi_1.optPrio)(_1.DatabaseConnection), whereClause, groupHaving, trailingOpts);
3136
+ const singleAfterFrom = (0, combi_1.seq)(_1.SQLFrom, client, byp, conn, (0, combi_1.altPrio)((0, combi_1.seq)(intoSingle, byp, whereClause, groupHaving, trailingOpts), (0, combi_1.seq)((0, combi_1.optPrio)(sqlFields), whereClause, groupHaving, trailingOpts, (0, combi_1.optPrio)(intoSingle), conn)));
3137
+ const singleIntoBeforeFrom = (0, combi_1.seq)(intoSingle, _1.SQLFrom, client, byp, conn, whereClause, groupHaving, trailingOpts);
3137
3138
  return (0, combi_1.seq)(fieldList, byp, (0, combi_1.altPrio)(singleIntoBeforeFrom, singleAfterFrom));
3138
3139
  }
3139
3140
  function buildSelectCore(allowInto = false, allowOrderBy = true) {
@@ -3144,25 +3145,26 @@ function buildSelectCore(allowInto = false, allowOrderBy = true) {
3144
3145
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
3145
3146
  const client = (0, combi_1.optPrio)(_1.SQLClient);
3146
3147
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
3148
+ const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
3147
3149
  const fae = (0, combi_1.optPrio)(_1.SQLForAllEntries);
3148
3150
  const whereClause = (0, combi_1.optPrio)(where);
3149
3151
  const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(sql_group_by_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
3150
3152
  const orderUpOff = allowOrderBy
3151
3153
  ? [(0, combi_1.optPrio)((0, combi_1.seq)(_1.SQLOrderBy, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), (0, combi_1.optPrio)(offset)))]
3152
3154
  : [];
3153
- const trailingOpts = (0, combi_1.seq)((0, combi_1.optPrio)(_1.DatabaseConnection), (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
3155
+ const trailingOpts = (0, combi_1.seq)(conn, (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
3154
3156
  const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
3155
3157
  const intoForPackSize = _1.SQLIntoTable;
3156
3158
  if (!allowInto) {
3157
3159
  const afterFromNoInto = (0, combi_1.seq)(_1.SQLFrom, client, byp, (0, combi_1.seq)((0, combi_1.optPrio)(sqlFields), fae, whereClause, groupHaving, ...orderUpOff, trailingOpts));
3158
3160
  return (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", buildSelectSingleCore(false)), (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, byp, afterFromNoInto));
3159
3161
  }
3160
- const fromPackSize = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLPackageSize), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(_1.DatabaseConnection), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo));
3162
+ const fromPackSize = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLPackageSize), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, conn, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo));
3161
3163
  const trailingInto = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize), byp, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(offset), (0, combi_1.optPrio)(_1.SQLOrderBy)), (0, combi_1.seq)(intoSingle, byp, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(offset)))), (0, combi_1.optPrio)(_1.SQLOptions));
3162
- const afterFromWithInto = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLFrom), client, byp, fromPackSize, (0, combi_1.altPrio)((0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize), byp, (0, combi_1.optPrio)(_1.DatabaseConnection), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(offset), fae, whereClause, groupHaving, ...orderUpOff, trailingOpts), (0, combi_1.seq)(intoSingle, byp, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, fae, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(offset), whereClause, groupHaving, ...orderUpOff, trailingOpts), (0, combi_1.seq)((0, combi_1.optPrio)(sqlFields), fae, whereClause, groupHaving, ...orderUpOff, trailingOpts, trailingInto)));
3164
+ const afterFromWithInto = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLFrom), client, byp, fromPackSize, (0, combi_1.altPrio)((0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize), byp, conn, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(offset), fae, whereClause, groupHaving, ...orderUpOff, trailingOpts), (0, combi_1.seq)(intoSingle, byp, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, fae, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(offset), whereClause, groupHaving, ...orderUpOff, trailingOpts), (0, combi_1.seq)((0, combi_1.optPrio)(sqlFields), fae, whereClause, groupHaving, ...orderUpOff, trailingOpts, trailingInto)));
3163
3165
  const selectTableIntoThenFrom = (0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize));
3164
3166
  const selectOtherIntoThenFrom = intoSingle;
3165
- const nonSingleBody = (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)((0, combi_1.altPrio)(selectTableIntoThenFrom, selectOtherIntoThenFrom)), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(_1.DatabaseConnection), afterFromWithInto);
3167
+ const nonSingleBody = (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)((0, combi_1.altPrio)(selectTableIntoThenFrom, selectOtherIntoThenFrom)), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, conn, afterFromWithInto);
3166
3168
  return (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", buildSelectSingleCore(true)), nonSingleBody);
3167
3169
  }
3168
3170
  //# sourceMappingURL=_select_core.js.map
@@ -3320,9 +3322,15 @@ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src
3320
3322
  class AssignSource extends combi_1.Expression {
3321
3323
  getRunnable() {
3322
3324
  const component = (0, combi_1.seq)("COMPONENT", (0, combi_1.alt)(simple_source3_1.SimpleSource3, (0, combi_1.ver)(version_1.Release.v740sp02, source_1.Source, { also: combi_1.AlsoIn.OpenABAP })), "OF STRUCTURE", source_1.Source);
3323
- const tableField = (0, combi_1.seq)("TABLE FIELD", (0, combi_1.alt)(source_1.Source, dynamic_1.Dynamic));
3324
- const arrow = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));
3325
- const source = (0, combi_1.alt)((0, combi_1.seq)(source_1.Source, (0, combi_1.opt)((0, combi_1.seq)(arrow, dynamic_1.Dynamic))), component, tableField, (0, combi_1.seq)(dynamic_1.Dynamic, (0, combi_1.opt)((0, combi_1.seq)(arrow, (0, combi_1.alt)(field_1.Field, dynamic_1.Dynamic)))));
3325
+ // TABLE FIELD form: blocked in KeyUser
3326
+ const tableField = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("TABLE FIELD", (0, combi_1.alt)(source_1.Source, dynamic_1.Dynamic)));
3327
+ // class=>(dyn_attr) via static arrow is blocked in KeyUser
3328
+ // ref->(dyn_comp) via instance arrow is allowed — leave unguarded
3329
+ const arrowDynamic = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.tok)(tokens_1.StaticArrow)));
3330
+ const anyArrow = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));
3331
+ const source = (0, combi_1.alt)((0, combi_1.seq)(source_1.Source, (0, combi_1.opt)((0, combi_1.seq)(arrowDynamic, dynamic_1.Dynamic))), component, tableField,
3332
+ // standalone dynamic symbol (dyn_sym) blocked in KeyUser
3333
+ (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)(dynamic_1.Dynamic, (0, combi_1.opt)((0, combi_1.seq)(anyArrow, (0, combi_1.alt)(field_1.Field, dynamic_1.Dynamic))))));
3326
3334
  return source;
3327
3335
  }
3328
3336
  }
@@ -4223,8 +4231,16 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
4223
4231
  exports.DatabaseTable = void 0;
4224
4232
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
4225
4233
  const dynamic_1 = __webpack_require__(/*! ./dynamic */ "../core/build/src/abap/2_statements/expressions/dynamic.js");
4234
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
4226
4235
  class DatabaseTable extends combi_1.Expression {
4236
+ constructor(noDynamic = false) {
4237
+ super();
4238
+ this.noDynamic = noDynamic;
4239
+ }
4227
4240
  getRunnable() {
4241
+ if (this.noDynamic) {
4242
+ return (0, combi_1.altPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, dynamic_1.Dynamic), (0, combi_1.regex)(/^\*?(\/\w+\/)?\w+$/));
4243
+ }
4228
4244
  return (0, combi_1.altPrio)(dynamic_1.Dynamic, (0, combi_1.regex)(/^\*?(\/\w+\/)?\w+$/));
4229
4245
  }
4230
4246
  }
@@ -7040,7 +7056,7 @@ const _select_core_1 = __webpack_require__(/*! ./_select_core */ "../core/build/
7040
7056
  class Select extends combi_1.Expression {
7041
7057
  getRunnable() {
7042
7058
  const into = (0, combi_1.altPrio)(_1.SQLIntoTable, sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
7043
- const standalone = (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", (0, combi_1.optPrio)("FOR UPDATE"), (0, _select_core_1.buildSelectSingleCore)(true)), (0, _select_core_1.buildSelectCore)(true));
7059
+ const standalone = (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, "FOR UPDATE")), (0, _select_core_1.buildSelectSingleCore)(true)), (0, _select_core_1.buildSelectCore)(true));
7044
7060
  const unionTail = (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.plusPrio)(_1.SQLSetOp), { also: combi_1.AlsoIn.OpenABAP });
7045
7061
  const chained = (0, combi_1.seq)((0, _select_core_1.buildSelectCore)(false, false), unionTail, (0, combi_1.optPrio)(_1.SQLOrderBy), (0, combi_1.optPrio)(into));
7046
7062
  return (0, combi_1.seq)("SELECT", (0, combi_1.altPrio)(chained, standalone));
@@ -7075,8 +7091,9 @@ class SelectCTE extends combi_1.Expression {
7075
7091
  const bypass = "BYPASSING BUFFER";
7076
7092
  const privileged = (0, combi_1.ver)(version_1.Release.v758, _1.SQLPrivilegedAccess);
7077
7093
  const offset = (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)("OFFSET", sql_source_1.SQLSource));
7094
+ const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
7078
7095
  const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
7079
- const tail = (0, combi_1.seq)(groupHaving, (0, combi_1.optPrio)((0, combi_1.seq)(_1.SQLOrderBy, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), (0, combi_1.optPrio)(offset))), (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions), (0, combi_1.optPrio)(_1.DatabaseConnection));
7096
+ const tail = (0, combi_1.seq)(groupHaving, (0, combi_1.optPrio)((0, combi_1.seq)(_1.SQLOrderBy, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), (0, combi_1.optPrio)(offset))), (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions), conn);
7080
7097
  const sqlStyle = (0, combi_1.seq)(_1.SQLFrom, (0, combi_1.optPrio)(_1.SQLClient), (0, combi_1.optPrio)(bypass), (0, combi_1.ver)(version_1.Release.v750, sql_fields_loop_1.SQLFieldsLoop, { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.optPrio)(_1.SQLForAllEntries), (0, combi_1.optPrio)(where), tail);
7081
7098
  const abapStyle = (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), sql_field_list_loop_greedy_1.SQLFieldListLoopGreedy, _1.SQLFrom, (0, combi_1.optPrio)(_1.SQLClient), (0, combi_1.optPrio)(bypass), (0, combi_1.optPrio)(_1.SQLForAllEntries), (0, combi_1.optPrio)(where), tail);
7082
7099
  const union = (0, combi_1.seq)("UNION", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")));
@@ -7713,7 +7730,7 @@ const dynamic_1 = __webpack_require__(/*! ./dynamic */ "../core/build/src/abap/2
7713
7730
  class SQLClient extends combi_1.Expression {
7714
7731
  getRunnable() {
7715
7732
  const clientList = (0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.alt)(dynamic_1.Dynamic, (0, combi_1.seq)(sql_alias_field_1.SQLAliasField, (0, combi_1.starPrio)((0, combi_1.seq)(",", sql_alias_field_1.SQLAliasField)))));
7716
- const client = (0, combi_1.alt)((0, combi_1.verNotLang)(version_1.LanguageVersion.Cloud, (0, combi_1.seq)("CLIENT SPECIFIED", (0, combi_1.optPrio)(clientList))), (0, combi_1.seq)("USING", (0, combi_1.alt)((0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)("CLIENT", sql_source_simple_1.SQLSourceSimple)), (0, combi_1.ver)(version_1.Release.v754, (0, combi_1.seq)("CLIENTS IN", (0, combi_1.alt)(sql_source_simple_1.SQLSourceSimple, "T000"))), (0, combi_1.ver)(version_1.Release.v754, "ALL CLIENTS"))));
7733
+ const client = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.alt)((0, combi_1.verNotLang)(version_1.LanguageVersion.Cloud, (0, combi_1.seq)("CLIENT SPECIFIED", (0, combi_1.optPrio)(clientList))), (0, combi_1.seq)("USING", (0, combi_1.alt)((0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)("CLIENT", sql_source_simple_1.SQLSourceSimple)), (0, combi_1.ver)(version_1.Release.v754, (0, combi_1.seq)("CLIENTS IN", (0, combi_1.alt)(sql_source_simple_1.SQLSourceSimple, "T000"))), (0, combi_1.ver)(version_1.Release.v754, "ALL CLIENTS")))));
7717
7734
  return client;
7718
7735
  }
7719
7736
  }
@@ -8123,20 +8140,21 @@ exports.SQLFrom = void 0;
8123
8140
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
8124
8141
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
8125
8142
  const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
8143
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
8126
8144
  class SQLFrom extends combi_1.Expression {
8127
8145
  // todo: rewrite/refactor this method
8128
8146
  getRunnable() {
8129
8147
  const joins = (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), _1.SQLJoin));
8130
8148
  // No opening parens
8131
8149
  const from0 = (0, combi_1.seq)("FROM", _1.SQLFromSource, joins);
8132
- // 1 to 7 opening parens, with up to that many closing parens at the end
8133
- const from1 = (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
8134
- const from2 = (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
8135
- const from3 = (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
8136
- const from4 = (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
8137
- const from5 = (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
8138
- const from6 = (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
8139
- const from7 = (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
8150
+ // 1 to 7 opening parens, with up to that many closing parens at the end (dynamic FROM, not allowed in KeyUser)
8151
+ const from1 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
8152
+ const from2 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
8153
+ const from3 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
8154
+ const from4 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
8155
+ const from5 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
8156
+ const from6 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
8157
+ const from7 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
8140
8158
  const source = (0, combi_1.altPrio)(from7, from6, from5, from4, from3, from2, from1, from0);
8141
8159
  return source;
8142
8160
  }
@@ -8171,7 +8189,8 @@ class SQLFromSource extends combi_1.Expression {
8171
8189
  const tab = (0, combi_1.ver)(version_1.Release.v752, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.FieldChain), { also: combi_1.AlsoIn.OpenABAP });
8172
8190
  const aas = (0, combi_1.seq)("AS", _1.SQLAsName);
8173
8191
  const privileged = (0, combi_1.ver)(version_1.Release.v752, (0, combi_1.seq)("WITH", _1.SQLPrivilegedAccess));
8174
- return (0, combi_1.seq)((0, combi_1.altPrio)(new sql_hierarchy_aggregate_1.SQLHierarchyAggregate(), new sql_hierarchy_accessor_1.SQLHierarchyAccessor(), new sql_hierarchy_source_1.SQLHierarchySource(), (0, combi_1.seq)(with_name_1.WithName, (0, combi_1.optPrio)(new sql_path_for_entity_1.SQLPathForEntity())), (0, combi_1.seq)(_1.DatabaseTable, (0, combi_1.optPrio)(_1.SQLCDSParameters), (0, combi_1.optPrio)(new sql_path_for_entity_1.SQLPathForEntity())), tab), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(aas));
8192
+ const pathForEntity = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, new sql_path_for_entity_1.SQLPathForEntity()));
8193
+ return (0, combi_1.seq)((0, combi_1.altPrio)(new sql_hierarchy_aggregate_1.SQLHierarchyAggregate(), new sql_hierarchy_accessor_1.SQLHierarchyAccessor(), new sql_hierarchy_source_1.SQLHierarchySource(), (0, combi_1.seq)(with_name_1.WithName, pathForEntity), (0, combi_1.seq)(new _1.DatabaseTable(true), (0, combi_1.optPrio)(_1.SQLCDSParameters), pathForEntity), tab), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(aas));
8175
8194
  }
8176
8195
  }
8177
8196
  exports.SQLFromSource = SQLFromSource;
@@ -10930,6 +10949,7 @@ exports.NativeSQL = NativeSQL;
10930
10949
 
10931
10950
  Object.defineProperty(exports, "__esModule", ({ value: true }));
10932
10951
  exports.Add = void 0;
10952
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
10933
10953
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
10934
10954
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
10935
10955
  class Add {
@@ -10939,7 +10959,7 @@ class Add {
10939
10959
  const giving = (0, combi_1.seq)("GIVING", expressions_1.Source);
10940
10960
  const then = (0, combi_1.seq)("THEN", expressions_1.Source, "UNTIL", expressions_1.Source, (0, combi_1.opt)((0, combi_1.per)(giving, accordingTo)), (0, combi_1.opt)(to));
10941
10961
  const ret = (0, combi_1.seq)("ADD", expressions_1.Source, (0, combi_1.altPrio)(to, then));
10942
- return ret;
10962
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
10943
10963
  }
10944
10964
  }
10945
10965
  exports.Add = Add;
@@ -11035,12 +11055,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
11035
11055
  exports.Assert = void 0;
11036
11056
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
11037
11057
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
11058
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11038
11059
  class Assert {
11039
11060
  getMatcher() {
11040
11061
  const fields = (0, combi_1.seq)("FIELDS", (0, combi_1.plus)(expressions_1.Source));
11041
11062
  const subkey = (0, combi_1.seq)("SUBKEY", expressions_1.Source);
11042
11063
  const id = (0, combi_1.seq)("ID", expressions_1.NamespaceSimpleName);
11043
- return (0, combi_1.seq)("ASSERT", (0, combi_1.optPrio)(id), (0, combi_1.optPrio)(subkey), (0, combi_1.opt)(fields), (0, combi_1.optPrio)("CONDITION"), expressions_1.Cond);
11064
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("ASSERT", (0, combi_1.optPrio)(id), (0, combi_1.optPrio)(subkey), (0, combi_1.opt)(fields), (0, combi_1.optPrio)("CONDITION"), expressions_1.Cond));
11044
11065
  }
11045
11066
  }
11046
11067
  exports.Assert = Assert;
@@ -11063,14 +11084,19 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/s
11063
11084
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11064
11085
  class Assign {
11065
11086
  getMatcher() {
11066
- const type = (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(expressions_1.Dynamic, expressions_1.TypeName));
11087
+ const dynamicType = (0, combi_1.altPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic), expressions_1.TypeName);
11088
+ const type = (0, combi_1.seq)("TYPE", dynamicType);
11067
11089
  const like = (0, combi_1.seq)("LIKE", (0, combi_1.altPrio)(expressions_1.Dynamic, expressions_1.Source));
11068
11090
  const handle = (0, combi_1.seq)("TYPE HANDLE", expressions_1.Source);
11069
11091
  const range = (0, combi_1.seq)("RANGE", expressions_1.Source);
11070
11092
  const decimals = (0, combi_1.seq)("DECIMALS", expressions_1.Source);
11071
- const casting = (0, combi_1.seq)("CASTING", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
11093
+ const castingType = (0, combi_1.seq)("CASTING", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
11094
+ // CASTING TYPE (dyntype) blocked in KeyUser
11095
+ const casting = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, castingType);
11072
11096
  const obsoleteType = (0, combi_1.seq)("TYPE", expressions_1.Source, (0, combi_1.optPrio)(decimals));
11073
- const ret = (0, combi_1.seq)("ASSIGN", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, "INCREMENT")), expressions_1.AssignSource, "TO", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType, decimals)), (0, combi_1.opt)(range), (0, combi_1.opt)((0, combi_1.ver)(version_1.Release.v757, "ELSE UNASSIGN")));
11097
+ const ret = (0, combi_1.seq)("ASSIGN",
11098
+ // INCREMENT addition blocked in KeyUser
11099
+ (0, combi_1.opt)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)(expressions_1.Target, "INCREMENT"))), expressions_1.AssignSource, "TO", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType, decimals)), (0, combi_1.opt)(range), (0, combi_1.opt)((0, combi_1.ver)(version_1.Release.v757, "ELSE UNASSIGN")));
11074
11100
  return ret;
11075
11101
  }
11076
11102
  }
@@ -11116,6 +11142,7 @@ exports.AssignLocalCopy = AssignLocalCopy;
11116
11142
 
11117
11143
  Object.defineProperty(exports, "__esModule", ({ value: true }));
11118
11144
  exports.At = void 0;
11145
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11119
11146
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
11120
11147
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
11121
11148
  class At {
@@ -11125,7 +11152,7 @@ class At {
11125
11152
  const atEnd = (0, combi_1.seq)("END OF", field);
11126
11153
  const group = (0, combi_1.regex)(/^[%\w]+$/);
11127
11154
  const ret = (0, combi_1.seq)("AT", (0, combi_1.altPrio)(atNew, atEnd, group));
11128
- return ret;
11155
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
11129
11156
  }
11130
11157
  }
11131
11158
  exports.At = At;
@@ -11285,12 +11312,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
11285
11312
  exports.AuthorityCheck = void 0;
11286
11313
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
11287
11314
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
11315
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11288
11316
  class AuthorityCheck {
11289
11317
  getMatcher() {
11290
11318
  const field = (0, combi_1.seq)("FIELD", expressions_1.Source);
11291
11319
  const id = (0, combi_1.seq)("ID", expressions_1.Source, (0, combi_1.alt)(field, "DUMMY"));
11292
11320
  const ret = (0, combi_1.seq)("AUTHORITY-CHECK OBJECT", expressions_1.Source, (0, combi_1.opt)((0, combi_1.seq)("FOR USER", expressions_1.Source)), (0, combi_1.plus)(id));
11293
- return ret;
11321
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
11294
11322
  }
11295
11323
  }
11296
11324
  exports.AuthorityCheck = AuthorityCheck;
@@ -11383,10 +11411,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
11383
11411
  exports.Call = void 0;
11384
11412
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
11385
11413
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
11414
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11386
11415
  // method call
11387
11416
  class Call {
11388
11417
  getMatcher() {
11389
- const call = (0, combi_1.seq)("CALL METHOD", expressions_1.MethodSource, expressions_1.MethodCallBody);
11418
+ const call = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("CALL METHOD", expressions_1.MethodSource, expressions_1.MethodCallBody));
11390
11419
  return (0, combi_1.altPrio)(call, expressions_1.MethodCallChain);
11391
11420
  }
11392
11421
  }
@@ -11502,7 +11531,7 @@ class CallFunction {
11502
11531
  const ex = (0, combi_1.seq)("EXCEPTION-TABLE", expressions_1.Source);
11503
11532
  const dynamic = (0, combi_1.alt)((0, combi_1.seq)("PARAMETER-TABLE", expressions_1.Source, (0, combi_1.opt)(ex)), ex);
11504
11533
  const call = (0, combi_1.seq)("CALL", (0, combi_1.altPrio)("FUNCTION", (0, combi_1.verNotLang)(version_1.LanguageVersion.Cloud, "CUSTOMER-FUNCTION")), expressions_1.FunctionName, (0, combi_1.opt)(options), (0, combi_1.alt)(expressions_1.FunctionParameters, dynamic));
11505
- return call;
11534
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, call);
11506
11535
  }
11507
11536
  }
11508
11537
  exports.CallFunction = CallFunction;
@@ -11678,6 +11707,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
11678
11707
  exports.CallTransformation = void 0;
11679
11708
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
11680
11709
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
11710
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11681
11711
  class CallTransformation {
11682
11712
  getMatcher() {
11683
11713
  const options = (0, combi_1.seq)("OPTIONS", expressions_1.CallTransformationOptions);
@@ -11688,7 +11718,7 @@ class CallTransformation {
11688
11718
  const result2 = (0, combi_1.seq)("XML", expressions_1.Target);
11689
11719
  const result = (0, combi_1.seq)("RESULT", (0, combi_1.alt)(expressions_1.CallTransformationParameters, result2));
11690
11720
  const call = (0, combi_1.seq)("CALL TRANSFORMATION", (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.Dynamic), (0, combi_1.per)(options, parameters, objects, source, result));
11691
- return call;
11721
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, call);
11692
11722
  }
11693
11723
  }
11694
11724
  exports.CallTransformation = CallTransformation;
@@ -11937,9 +11967,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
11937
11967
  exports.ClassDeferred = void 0;
11938
11968
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
11939
11969
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
11970
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11940
11971
  class ClassDeferred {
11941
11972
  getMatcher() {
11942
- return (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION DEFERRED", (0, combi_1.optPrio)("PUBLIC"));
11973
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION DEFERRED", (0, combi_1.optPrio)("PUBLIC")));
11943
11974
  }
11944
11975
  }
11945
11976
  exports.ClassDeferred = ClassDeferred;
@@ -11987,11 +12018,12 @@ exports.ClassDefinition = ClassDefinition;
11987
12018
 
11988
12019
  Object.defineProperty(exports, "__esModule", ({ value: true }));
11989
12020
  exports.ClassDefinitionLoad = void 0;
12021
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
11990
12022
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
11991
12023
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
11992
12024
  class ClassDefinitionLoad {
11993
12025
  getMatcher() {
11994
- return (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION LOAD");
12026
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("CLASS", expressions_1.ClassName, "DEFINITION LOAD"));
11995
12027
  }
11996
12028
  }
11997
12029
  exports.ClassDefinitionLoad = ClassDefinitionLoad;
@@ -12174,10 +12206,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
12174
12206
  exports.Commit = void 0;
12175
12207
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
12176
12208
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
12209
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
12177
12210
  class Commit {
12178
12211
  getMatcher() {
12179
12212
  const work = (0, combi_1.seq)("WORK", (0, combi_1.opt)("AND WAIT"));
12180
- return (0, combi_1.seq)("COMMIT", (0, combi_1.alt)(work, expressions_1.DatabaseConnection));
12213
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("COMMIT", (0, combi_1.alt)(work, expressions_1.DatabaseConnection)));
12181
12214
  }
12182
12215
  }
12183
12216
  exports.Commit = Commit;
@@ -12204,7 +12237,7 @@ class CommitEntities {
12204
12237
  const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
12205
12238
  const responses = (0, combi_1.seq)("RESPONSES", failed, reported);
12206
12239
  const s = (0, combi_1.seq)("COMMIT ENTITIES", (0, combi_1.optPrio)("IN SIMULATION MODE"), (0, combi_1.opt)(responses), (0, combi_1.opt)((0, combi_1.seq)("RESPONSE OF", expressions_1.NamespaceSimpleName, (0, combi_1.per)(failed, reported))));
12207
- return (0, combi_1.ver)(version_1.Release.v754, s, { also: combi_1.AlsoIn.OpenABAP });
12240
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v754, s, { also: combi_1.AlsoIn.OpenABAP }));
12208
12241
  }
12209
12242
  }
12210
12243
  exports.CommitEntities = CommitEntities;
@@ -12550,7 +12583,7 @@ class CreateData {
12550
12583
  const key = (0, combi_1.seq)("WITH", (0, combi_1.alt)(def, kdef));
12551
12584
  const specified = (0, combi_1.seq)((0, combi_1.alt)(type, like), (0, combi_1.opt)(key), (0, combi_1.opt)(initial), (0, combi_1.opt)(length), (0, combi_1.opt)(decimals));
12552
12585
  const ret = (0, combi_1.seq)("CREATE DATA", expressions_1.Target, (0, combi_1.opt)((0, combi_1.alt)(typeHandle, (0, combi_1.seq)((0, combi_1.opt)(areaHandle), specified))));
12553
- return ret;
12586
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
12554
12587
  }
12555
12588
  }
12556
12589
  exports.CreateData = CreateData;
@@ -12580,7 +12613,7 @@ class CreateObject {
12580
12613
  const area = (0, combi_1.seq)("AREA HANDLE", expressions_1.Source);
12581
12614
  const type = (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(expressions_1.ClassName, expressions_1.Dynamic));
12582
12615
  const ret = (0, combi_1.seq)("CREATE OBJECT", expressions_1.Target, (0, combi_1.optPrio)((0, combi_1.per)(type, (0, combi_1.verNotLang)(version_1.LanguageVersion.Cloud, area))), (0, combi_1.optPrio)((0, combi_1.altPrio)(exporting, ptable)), (0, combi_1.optPrio)((0, combi_1.altPrio)(exceptions, etable)));
12583
- return ret;
12616
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
12584
12617
  }
12585
12618
  }
12586
12619
  exports.CreateObject = CreateObject;
@@ -12746,6 +12779,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
12746
12779
  exports.DeleteDatabase = void 0;
12747
12780
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
12748
12781
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
12782
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
12749
12783
  const sql_client_1 = __webpack_require__(/*! ../expressions/sql_client */ "../core/build/src/abap/2_statements/expressions/sql_client.js");
12750
12784
  class DeleteDatabase {
12751
12785
  getMatcher() {
@@ -12754,7 +12788,7 @@ class DeleteDatabase {
12754
12788
  const fromSomething = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSourceSimple);
12755
12789
  const table = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.optPrio)(fromSomething));
12756
12790
  const ret = (0, combi_1.seq)("DELETE", (0, combi_1.altPrio)(from, table));
12757
- return ret;
12791
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
12758
12792
  }
12759
12793
  }
12760
12794
  exports.DeleteDatabase = DeleteDatabase;
@@ -12822,6 +12856,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
12822
12856
  exports.DeleteInternal = void 0;
12823
12857
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
12824
12858
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
12859
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
12825
12860
  class DeleteInternal {
12826
12861
  getMatcher() {
12827
12862
  // todo, is READ and DELETE similar? something can be reused?
@@ -12830,7 +12865,8 @@ class DeleteInternal {
12830
12865
  const using = (0, combi_1.seq)("USING KEY", keyName);
12831
12866
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
12832
12867
  const fromTo = (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)((0, combi_1.seq)("TO", expressions_1.Source)));
12833
- const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));
12868
+ // WHERE (dynamic) blocked in KeyUser
12869
+ const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic)));
12834
12870
  const key = (0, combi_1.seq)("WITH TABLE KEY", (0, combi_1.opt)((0, combi_1.seq)(keyName, "COMPONENTS")), (0, combi_1.plus)(expressions_1.ComponentCompare));
12835
12871
  const table = (0, combi_1.seq)("TABLE", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)(using)), key));
12836
12872
  const other = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), fromTo, key), (0, combi_1.opt)(where));
@@ -13022,12 +13058,13 @@ exports.Detail = Detail;
13022
13058
 
13023
13059
  Object.defineProperty(exports, "__esModule", ({ value: true }));
13024
13060
  exports.Divide = void 0;
13061
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
13025
13062
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
13026
13063
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
13027
13064
  class Divide {
13028
13065
  getMatcher() {
13029
13066
  const ret = (0, combi_1.seq)("DIVIDE", expressions_1.Target, "BY", expressions_1.Source);
13030
- return ret;
13067
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
13031
13068
  }
13032
13069
  }
13033
13070
  exports.Divide = Divide;
@@ -13473,10 +13510,10 @@ exports.EndExec = EndExec;
13473
13510
  Object.defineProperty(exports, "__esModule", ({ value: true }));
13474
13511
  exports.EndForm = void 0;
13475
13512
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
13513
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
13476
13514
  class EndForm {
13477
13515
  getMatcher() {
13478
- const ret = (0, combi_1.str)("ENDFORM");
13479
- return ret;
13516
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.str)("ENDFORM"));
13480
13517
  }
13481
13518
  }
13482
13519
  exports.EndForm = EndForm;
@@ -13495,9 +13532,10 @@ exports.EndForm = EndForm;
13495
13532
  Object.defineProperty(exports, "__esModule", ({ value: true }));
13496
13533
  exports.EndFunction = void 0;
13497
13534
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
13535
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
13498
13536
  class EndFunction {
13499
13537
  getMatcher() {
13500
- return (0, combi_1.str)("ENDFUNCTION");
13538
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.str)("ENDFUNCTION"));
13501
13539
  }
13502
13540
  }
13503
13541
  exports.EndFunction = EndFunction;
@@ -13734,7 +13772,7 @@ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_st
13734
13772
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
13735
13773
  class EndWith {
13736
13774
  getMatcher() {
13737
- return (0, combi_1.ver)(version_1.Release.v751, "ENDWITH");
13775
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v751, "ENDWITH"));
13738
13776
  }
13739
13777
  }
13740
13778
  exports.EndWith = EndWith;
@@ -13897,6 +13935,7 @@ exports.Export = void 0;
13897
13935
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
13898
13936
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
13899
13937
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
13938
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
13900
13939
  // todo, cloud, split?
13901
13940
  class Export {
13902
13941
  getMatcher() {
@@ -13906,10 +13945,10 @@ class Export {
13906
13945
  const using = (0, combi_1.seq)("USING", expressions_1.Source);
13907
13946
  const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w$%\^~]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));
13908
13947
  const buffer = (0, combi_1.seq)("DATA BUFFER", expressions_1.Target);
13909
- const memory = (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source)));
13948
+ const memory = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source))));
13910
13949
  const table = (0, combi_1.seq)("INTERNAL TABLE", expressions_1.Target);
13911
- const shared = (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(from, client, id));
13912
- const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(from, client, id, using));
13950
+ const shared = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(from, client, id)));
13951
+ const database = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(from, client, id, using)));
13913
13952
  const target = (0, combi_1.alt)(buffer, memory, database, table, shared);
13914
13953
  const left = (0, combi_1.alt)(expressions_1.FieldSub, expressions_1.FieldSymbol);
13915
13954
  const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)((0, combi_1.seq)(left, from), left)), expressions_1.Dynamic, expressions_1.Constant);
@@ -14141,11 +14180,12 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
14141
14180
  exports.Form = void 0;
14142
14181
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
14143
14182
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
14183
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
14144
14184
  class Form {
14145
14185
  getMatcher() {
14146
14186
  const parameters = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.FormTables), (0, combi_1.opt)(expressions_1.FormUsing), (0, combi_1.opt)(expressions_1.FormChanging), (0, combi_1.opt)(expressions_1.FormRaising));
14147
14187
  const ret = (0, combi_1.seq)("FORM", expressions_1.FormName, (0, combi_1.alt)("IMPLEMENTATION", parameters));
14148
- return ret;
14188
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
14149
14189
  }
14150
14190
  }
14151
14191
  exports.Form = Form;
@@ -14215,10 +14255,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
14215
14255
  exports.Free = void 0;
14216
14256
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
14217
14257
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
14258
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
14218
14259
  class Free {
14219
14260
  getMatcher() {
14220
14261
  const ret = (0, combi_1.seq)("FREE", expressions_1.Target);
14221
- return ret;
14262
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
14222
14263
  }
14223
14264
  }
14224
14265
  exports.Free = Free;
@@ -14286,9 +14327,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
14286
14327
  exports.FunctionModule = void 0;
14287
14328
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
14288
14329
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
14330
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
14289
14331
  class FunctionModule {
14290
14332
  getMatcher() {
14291
- return (0, combi_1.seq)("FUNCTION", expressions_1.Field);
14333
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FUNCTION", expressions_1.Field));
14292
14334
  }
14293
14335
  }
14294
14336
  exports.FunctionModule = FunctionModule;
@@ -14308,12 +14350,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
14308
14350
  exports.FunctionPool = void 0;
14309
14351
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
14310
14352
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
14353
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
14311
14354
  class FunctionPool {
14312
14355
  getMatcher() {
14313
14356
  const message = (0, combi_1.seq)("MESSAGE-ID", expressions_1.MessageClass);
14314
14357
  const line = (0, combi_1.seq)("LINE-SIZE", expressions_1.Integer);
14315
14358
  const no = (0, combi_1.str)("NO STANDARD PAGE HEADING");
14316
- return (0, combi_1.seq)("FUNCTION-POOL", expressions_1.IncludeName, (0, combi_1.opt)((0, combi_1.per)(message, line, no)));
14359
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FUNCTION-POOL", expressions_1.IncludeName, (0, combi_1.opt)((0, combi_1.per)(message, line, no))));
14317
14360
  }
14318
14361
  }
14319
14362
  exports.FunctionPool = FunctionPool;
@@ -14686,10 +14729,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
14686
14729
  exports.GetReference = void 0;
14687
14730
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
14688
14731
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
14732
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
14689
14733
  class GetReference {
14690
14734
  getMatcher() {
14691
14735
  const ret = (0, combi_1.seq)("GET REFERENCE OF", expressions_1.Source, "INTO", expressions_1.Target);
14692
- return ret;
14736
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
14693
14737
  }
14694
14738
  }
14695
14739
  exports.GetReference = GetReference;
@@ -14733,10 +14777,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
14733
14777
  exports.GetTime = void 0;
14734
14778
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
14735
14779
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
14780
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
14736
14781
  class GetTime {
14737
14782
  getMatcher() {
14738
14783
  const options = (0, combi_1.seq)((0, combi_1.alt)("STAMP FIELD", "FIELD"), expressions_1.Target);
14739
- return (0, combi_1.seq)("GET TIME", (0, combi_1.opt)(options));
14784
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("GET TIME", (0, combi_1.opt)(options)));
14740
14785
  }
14741
14786
  }
14742
14787
  exports.GetTime = GetTime;
@@ -14803,6 +14848,7 @@ exports.Import = void 0;
14803
14848
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
14804
14849
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
14805
14850
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
14851
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
14806
14852
  class Import {
14807
14853
  getMatcher() {
14808
14854
  const dto = (0, combi_1.seq)("TO", expressions_1.Target);
@@ -14811,11 +14857,11 @@ class Import {
14811
14857
  const using = (0, combi_1.seq)("USING", expressions_1.Source);
14812
14858
  const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w$%\^]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));
14813
14859
  const buffer = (0, combi_1.seq)("DATA BUFFER", expressions_1.Source);
14814
- const memory = (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source)));
14860
+ const memory = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source))));
14815
14861
  const table = (0, combi_1.seq)("INTERNAL TABLE", expressions_1.Source);
14816
- const shared = (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(dto, client, id));
14817
- const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(dto, client, id, using));
14818
- const logfile = (0, combi_1.seq)("LOGFILE ID", expressions_1.Source);
14862
+ const shared = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(dto, client, id)));
14863
+ const database = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(dto, client, id, using)));
14864
+ const logfile = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("LOGFILE ID", expressions_1.Source));
14819
14865
  const source = (0, combi_1.alt)(buffer, memory, database, table, shared, logfile);
14820
14866
  const to = (0, combi_1.plus)((0, combi_1.seq)(expressions_1.ComponentChainSimple, (0, combi_1.alt)("TO", "INTO"), expressions_1.Target));
14821
14867
  const toeq = (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.alt)(expressions_1.ComponentChainSimple, expressions_1.FieldSymbol), "=", expressions_1.Target));
@@ -15391,13 +15437,14 @@ exports.InsertDatabase = void 0;
15391
15437
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
15392
15438
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
15393
15439
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
15440
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
15394
15441
  class InsertDatabase {
15395
15442
  getMatcher() {
15396
15443
  const sub = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.Select, (0, combi_1.tok)(tokens_1.WParenRightW));
15397
15444
  const f = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), "FROM", (0, combi_1.opt)("TABLE"), (0, combi_1.alt)(expressions_1.SQLSource, sub), (0, combi_1.opt)("ACCEPTING DUPLICATE KEYS"));
15398
15445
  const from = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.opt)((0, combi_1.alt)(f, expressions_1.SQLClient, expressions_1.DatabaseConnection)));
15399
15446
  const into = (0, combi_1.seq)("INTO", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), "VALUES", expressions_1.SQLSource);
15400
- return (0, combi_1.seq)("INSERT", (0, combi_1.alt)(from, into));
15447
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INSERT", (0, combi_1.alt)(from, into)));
15401
15448
  }
15402
15449
  }
15403
15450
  exports.InsertDatabase = InsertDatabase;
@@ -15580,9 +15627,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
15580
15627
  exports.InterfaceDeferred = void 0;
15581
15628
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
15582
15629
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
15630
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
15583
15631
  class InterfaceDeferred {
15584
15632
  getMatcher() {
15585
- return (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "DEFERRED", (0, combi_1.opt)("PUBLIC"));
15633
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "DEFERRED", (0, combi_1.opt)("PUBLIC")));
15586
15634
  }
15587
15635
  }
15588
15636
  exports.InterfaceDeferred = InterfaceDeferred;
@@ -15600,11 +15648,12 @@ exports.InterfaceDeferred = InterfaceDeferred;
15600
15648
 
15601
15649
  Object.defineProperty(exports, "__esModule", ({ value: true }));
15602
15650
  exports.InterfaceLoad = void 0;
15651
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
15603
15652
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
15604
15653
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
15605
15654
  class InterfaceLoad {
15606
15655
  getMatcher() {
15607
- return (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "LOAD");
15656
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INTERFACE", expressions_1.InterfaceName, "LOAD"));
15608
15657
  }
15609
15658
  }
15610
15659
  exports.InterfaceLoad = InterfaceLoad;
@@ -15751,7 +15800,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src
15751
15800
  const loop_group_by_1 = __webpack_require__(/*! ../expressions/loop_group_by */ "../core/build/src/abap/2_statements/expressions/loop_group_by.js");
15752
15801
  class Loop {
15753
15802
  getMatcher() {
15754
- const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));
15803
+ const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic)));
15755
15804
  const group = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("GROUP BY", loop_group_by_1.LoopGroupBy), { also: combi_1.AlsoIn.OpenABAP });
15756
15805
  const step = (0, combi_1.ver)(version_1.Release.v757, (0, combi_1.seq)("STEP", expressions_1.Source));
15757
15806
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
@@ -15802,9 +15851,10 @@ exports.LoopAtScreen = LoopAtScreen;
15802
15851
  Object.defineProperty(exports, "__esModule", ({ value: true }));
15803
15852
  exports.LoopExtract = void 0;
15804
15853
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
15854
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
15805
15855
  class LoopExtract {
15806
15856
  getMatcher() {
15807
- return (0, combi_1.str)("LOOP");
15857
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.str)("LOOP"));
15808
15858
  }
15809
15859
  }
15810
15860
  exports.LoopExtract = LoopExtract;
@@ -15829,7 +15879,8 @@ class Message {
15829
15879
  getMatcher() {
15830
15880
  const like = (0, combi_1.seq)("DISPLAY LIKE", expressions_1.Source);
15831
15881
  const into = (0, combi_1.seq)("INTO", expressions_1.Target);
15832
- const raising = (0, combi_1.seq)("RAISING", expressions_1.ExceptionName);
15882
+ // RAISING addition blocked in KeyUser
15883
+ const raising = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("RAISING", expressions_1.ExceptionName));
15833
15884
  const options = (0, combi_1.per)(like, into, raising);
15834
15885
  const type = (0, combi_1.seq)("TYPE", expressions_1.Source);
15835
15886
  const sou = (0, combi_1.altPrio)(options, expressions_1.MessageSourceSource);
@@ -15865,8 +15916,10 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/s
15865
15916
  class MethodDef {
15866
15917
  getMatcher() {
15867
15918
  const def = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("DEFAULT", (0, combi_1.altPrio)("FAIL", "IGNORE")), { also: combi_1.AlsoIn.OpenABAP });
15868
- const parameters = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("FINAL", def, expressions_1.Abstract)), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefChanging), (0, combi_1.optPrio)(expressions_1.MethodDefReturning), (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));
15869
- const testing = (0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), "FOR TESTING", (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));
15919
+ const parameters = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("FINAL", def, expressions_1.Abstract)), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefChanging), (0, combi_1.optPrio)(expressions_1.MethodDefReturning),
15920
+ // Old-style EXCEPTIONS blocked in KeyUser
15921
+ (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.MethodDefExceptions))));
15922
+ const testing = (0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), "FOR TESTING", (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.MethodDefExceptions))));
15870
15923
  const result = (0, combi_1.seq)("RESULT", expressions_1.MethodParamName);
15871
15924
  const link = (0, combi_1.seq)("LINK", expressions_1.MethodParamName);
15872
15925
  const full = (0, combi_1.seq)("FULL", expressions_1.MethodParamName);
@@ -15877,8 +15930,10 @@ class MethodDef {
15877
15930
  (0, combi_1.seq)("TABLE FUNCTION", expressions_1.NamespaceSimpleName), // todo, this is only from version something
15878
15931
  (0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY", (0, combi_1.opt)("IMPORTING"), (0, combi_1.plus)((0, combi_1.seq)(expressions_1.MethodParamName, modify))), (0, combi_1.seq)("PRECHECK IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("DETERMINATION", expressions_1.TypeName, "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("VALIDATION", expressions_1.TypeName, "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("NUMBERING IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("READ IMPORTING", expressions_1.MethodParamName, (0, combi_1.altPrio)(forRead, forfunction)), (0, combi_1.seq)("FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.NamespaceSimpleName, "FOR", expressions_1.NamespaceSimpleName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR CREATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR DELETE", expressions_1.TypeName), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR READ", expressions_1.TypeName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName), (0, combi_1.seq)((0, combi_1.alt)("BEHAVIOR", "LOCK"), "IMPORTING", expressions_1.MethodParamName, "FOR LOCK", expressions_1.TypeName), (0, combi_1.seq)("DETERMINE", (0, combi_1.alt)("ON MODIFY", "ON SAVE"), "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("GLOBAL AUTHORIZATION IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("GLOBAL FEATURES IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)((0, combi_1.seq)((0, combi_1.opt)("INSTANCE"), "AUTHORIZATION IMPORTING"), expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("INSTANCE FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result));
15879
15932
  // todo, this is only from version something
15880
- const amdp = (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT", (0, combi_1.alt)("CURRENT", "DEPENDENT"), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
15881
- const ret = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), (0, combi_1.optPrio)(def), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)("FOR", behavior), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
15933
+ // AMDP OPTIONS clause blocked in KeyUser
15934
+ const amdp = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT", (0, combi_1.alt)("CURRENT", "DEPENDENT"), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising)));
15935
+ // FOR DDL OBJECT / FOR TABLE FUNCTION / FOR SCALAR FUNCTION blocked in KeyUser
15936
+ const ret = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), (0, combi_1.optPrio)(def), expressions_1.EventHandler), parameters, testing, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FOR", behavior)), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
15882
15937
  return ret;
15883
15938
  }
15884
15939
  }
@@ -15899,13 +15954,15 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
15899
15954
  exports.MethodImplementation = void 0;
15900
15955
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
15901
15956
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
15957
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
15902
15958
  class MethodImplementation {
15903
15959
  getMatcher() {
15904
15960
  const name = (0, combi_1.regex)(/[\w~]+/);
15905
15961
  const kernel = (0, combi_1.seq)("KERNEL MODULE", (0, combi_1.plus)(name), (0, combi_1.optPrio)((0, combi_1.altPrio)("FAIL", "IGNORE")));
15906
15962
  const using = (0, combi_1.seq)("USING", (0, combi_1.plus)(expressions_1.SimpleFieldChain));
15907
15963
  const database = (0, combi_1.seq)("DATABASE", (0, combi_1.alt)("PROCEDURE", "FUNCTION", "GRAPH WORKSPACE"), "FOR HDB", expressions_1.Language, (0, combi_1.opt)("OPTIONS READ-ONLY"), (0, combi_1.opt)(using));
15908
- const by = (0, combi_1.seq)("BY", (0, combi_1.alt)(kernel, database));
15964
+ // BY DATABASE and BY KERNEL both blocked in KeyUser
15965
+ const by = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("BY", (0, combi_1.alt)(kernel, database)));
15909
15966
  return (0, combi_1.seq)("METHOD", expressions_1.MethodName, (0, combi_1.optPrio)(by));
15910
15967
  }
15911
15968
  }
@@ -15926,11 +15983,12 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
15926
15983
  exports.ModifyDatabase = void 0;
15927
15984
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
15928
15985
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
15986
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
15929
15987
  class ModifyDatabase {
15930
15988
  getMatcher() {
15931
15989
  const from = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource);
15932
15990
  const options = (0, combi_1.per)(expressions_1.DatabaseConnection, from, expressions_1.SQLClient);
15933
- return (0, combi_1.seq)("MODIFY", expressions_1.DatabaseTable, options);
15991
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MODIFY", expressions_1.DatabaseTable, options));
15934
15992
  }
15935
15993
  }
15936
15994
  exports.ModifyDatabase = ModifyDatabase;
@@ -16171,12 +16229,13 @@ exports.MoveCorresponding = MoveCorresponding;
16171
16229
 
16172
16230
  Object.defineProperty(exports, "__esModule", ({ value: true }));
16173
16231
  exports.Multiply = void 0;
16232
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
16174
16233
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
16175
16234
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
16176
16235
  class Multiply {
16177
16236
  getMatcher() {
16178
16237
  const ret = (0, combi_1.seq)("MULTIPLY", expressions_1.Target, "BY", expressions_1.Source);
16179
- return ret;
16238
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
16180
16239
  }
16181
16240
  }
16182
16241
  exports.Multiply = Multiply;
@@ -16507,7 +16566,7 @@ class Perform {
16507
16566
  const normal = (0, combi_1.seq)((0, combi_1.opt)(found), (0, combi_1.opt)(expressions_1.PerformTables), (0, combi_1.opt)(expressions_1.PerformUsing), (0, combi_1.opt)(expressions_1.PerformChanging), (0, combi_1.opt)(found), (0, combi_1.opt)(commit));
16508
16567
  const of = (0, combi_1.seq)("OF", (0, combi_1.plus)(Expressions.FormName));
16509
16568
  const ret = (0, combi_1.seq)("PERFORM", (0, combi_1.alt)(short, full), (0, combi_1.altPrio)(of, normal));
16510
- return ret;
16569
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
16511
16570
  }
16512
16571
  }
16513
16572
  exports.Perform = Perform;
@@ -16826,7 +16885,8 @@ class Raise {
16826
16885
  const from = (0, combi_1.seq)("TYPE", expressions_1.ClassName, (0, combi_1.opt)((0, combi_1.alt)((0, combi_1.ver)(version_1.Release.v750, (0, combi_1.alt)(mess, messid), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v752, "USING MESSAGE"))), (0, combi_1.optPrio)(exporting));
16827
16886
  const pre = (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.optPrio)("RESUMABLE"), "EXCEPTION"), "SHORTDUMP");
16828
16887
  const clas = (0, combi_1.seq)(pre, (0, combi_1.altPrio)(from, (0, combi_1.ver)(version_1.Release.v752, expressions_1.Source, { also: combi_1.AlsoIn.OpenABAP }), expressions_1.SimpleSource2));
16829
- const ret = (0, combi_1.seq)("RAISE", (0, combi_1.altPrio)(clas, expressions_1.ExceptionName));
16888
+ // Old form "RAISE exception_name" blocked in KeyUser
16889
+ const ret = (0, combi_1.seq)("RAISE", (0, combi_1.altPrio)(clas, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.ExceptionName)));
16830
16890
  return ret;
16831
16891
  }
16832
16892
  }
@@ -16847,9 +16907,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
16847
16907
  exports.RaiseEntityEvent = void 0;
16848
16908
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
16849
16909
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
16910
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
16850
16911
  class RaiseEntityEvent {
16851
16912
  getMatcher() {
16852
- return (0, combi_1.seq)("RAISE ENTITY EVENT", expressions_1.EventName, "FROM", expressions_1.Source);
16913
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("RAISE ENTITY EVENT", expressions_1.EventName, "FROM", expressions_1.Source));
16853
16914
  }
16854
16915
  }
16855
16916
  exports.RaiseEntityEvent = RaiseEntityEvent;
@@ -16869,10 +16930,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
16869
16930
  exports.RaiseEvent = void 0;
16870
16931
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
16871
16932
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
16933
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
16872
16934
  class RaiseEvent {
16873
16935
  getMatcher() {
16874
16936
  const exporting = (0, combi_1.seq)("EXPORTING", expressions_1.ParameterListS);
16875
- return (0, combi_1.seq)("RAISE EVENT", expressions_1.EventName, (0, combi_1.opt)(exporting));
16937
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("RAISE EVENT", expressions_1.EventName, (0, combi_1.opt)(exporting)));
16876
16938
  }
16877
16939
  }
16878
16940
  exports.RaiseEvent = RaiseEvent;
@@ -17041,9 +17103,10 @@ class ReadTable {
17041
17103
  getMatcher() {
17042
17104
  const comparing = (0, combi_1.seq)("COMPARING", (0, combi_1.alt)((0, combi_1.plus)(expressions_1.FieldSub), (0, combi_1.plus)(expressions_1.Dynamic)));
17043
17105
  const index = (0, combi_1.seq)("INDEX", expressions_1.Source);
17044
- const components = (0, combi_1.seq)((0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic), "COMPONENTS", expressions_1.ComponentCompareSimple);
17106
+ // Dynamic key name or dynamic component name blocked in KeyUser
17107
+ const components = (0, combi_1.seq)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic)), "COMPONENTS", expressions_1.ComponentCompareSimple);
17045
17108
  const key = (0, combi_1.seq)((0, combi_1.altPrio)("WITH KEY", "WITH TABLE KEY"), (0, combi_1.alt)(expressions_1.ComponentCompareSimple, components, (0, combi_1.seq)((0, combi_1.optPrio)("="), expressions_1.Source)));
17046
- const using = (0, combi_1.seq)("USING KEY", (0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic));
17109
+ const using = (0, combi_1.seq)("USING KEY", (0, combi_1.alt)(expressions_1.Field, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic)));
17047
17110
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
17048
17111
  const transporting = (0, combi_1.seq)("TRANSPORTING", (0, combi_1.altPrio)("ALL FIELDS", "NO FIELDS", transporting_fields_1.TransportingFields));
17049
17112
  const common = [expressions_1.ReadTableTarget, comparing, "CASTING", transporting, "BINARY SEARCH"];
@@ -17348,9 +17411,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
17348
17411
  exports.Rollback = void 0;
17349
17412
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
17350
17413
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
17414
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
17351
17415
  class Rollback {
17352
17416
  getMatcher() {
17353
- return (0, combi_1.seq)("ROLLBACK", (0, combi_1.altPrio)("WORK", expressions_1.DatabaseConnection));
17417
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("ROLLBACK", (0, combi_1.altPrio)("WORK", expressions_1.DatabaseConnection)));
17354
17418
  }
17355
17419
  }
17356
17420
  exports.Rollback = Rollback;
@@ -17373,7 +17437,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src
17373
17437
  class RollbackEntities {
17374
17438
  getMatcher() {
17375
17439
  const s = "ROLLBACK ENTITIES";
17376
- return (0, combi_1.ver)(version_1.Release.v754, s);
17440
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v754, s));
17377
17441
  }
17378
17442
  }
17379
17443
  exports.RollbackEntities = RollbackEntities;
@@ -17777,12 +17841,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
17777
17841
  exports.SetHandler = void 0;
17778
17842
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
17779
17843
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
17844
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
17780
17845
  class SetHandler {
17781
17846
  getMatcher() {
17782
17847
  const activation = (0, combi_1.seq)("ACTIVATION", expressions_1.Source);
17783
17848
  const fo = (0, combi_1.seq)("FOR", (0, combi_1.altPrio)("ALL INSTANCES", expressions_1.Source));
17784
17849
  const ret = (0, combi_1.seq)("SET HANDLER", (0, combi_1.plus)(expressions_1.MethodSource), (0, combi_1.optPrio)(fo), (0, combi_1.optPrio)(activation));
17785
- return ret;
17850
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
17786
17851
  }
17787
17852
  }
17788
17853
  exports.SetHandler = SetHandler;
@@ -17880,7 +17945,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src
17880
17945
  class SetLocks {
17881
17946
  getMatcher() {
17882
17947
  const s = (0, combi_1.seq)("SET LOCKS OF", expressions_1.SimpleName, "ENTITY", expressions_1.SimpleName, "FROM", expressions_1.Source, "FAILED", expressions_1.Target, "REPORTED", expressions_1.Target);
17883
- return (0, combi_1.ver)(version_1.Release.v754, s);
17948
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v754, s));
17884
17949
  }
17885
17950
  }
17886
17951
  exports.SetLocks = SetLocks;
@@ -18307,12 +18372,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
18307
18372
  exports.Static = void 0;
18308
18373
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
18309
18374
  const Expressions = __importStar(__webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
18375
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
18310
18376
  class Static {
18311
18377
  getMatcher() {
18312
18378
  const p = (0, combi_1.opt)((0, combi_1.per)(Expressions.Type, Expressions.Value, Expressions.Length, Expressions.Decimals));
18313
18379
  const type = (0, combi_1.seq)((0, combi_1.opt)(Expressions.ConstantFieldLength), p);
18314
- const ret = (0, combi_1.seq)((0, combi_1.alt)("STATIC", "STATICS"), Expressions.DefinitionName, (0, combi_1.optPrio)(Expressions.ConstantFieldLength), (0, combi_1.alt)(type, Expressions.TypeTable));
18315
- return ret;
18380
+ const body = (0, combi_1.seq)(Expressions.DefinitionName, (0, combi_1.optPrio)(Expressions.ConstantFieldLength), (0, combi_1.alt)(type, Expressions.TypeTable));
18381
+ return (0, combi_1.altPrio)((0, combi_1.seq)("STATIC", body), (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("STATICS", body)));
18316
18382
  }
18317
18383
  }
18318
18384
  exports.Static = Static;
@@ -18455,12 +18521,13 @@ exports.Submit = Submit;
18455
18521
 
18456
18522
  Object.defineProperty(exports, "__esModule", ({ value: true }));
18457
18523
  exports.Subtract = void 0;
18524
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
18458
18525
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
18459
18526
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
18460
18527
  class Subtract {
18461
18528
  getMatcher() {
18462
18529
  const ret = (0, combi_1.seq)("SUBTRACT", expressions_1.Source, "FROM", expressions_1.Target);
18463
- return ret;
18530
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
18464
18531
  }
18465
18532
  }
18466
18533
  exports.Subtract = Subtract;
@@ -18686,11 +18753,12 @@ exports.Tables = Tables;
18686
18753
 
18687
18754
  Object.defineProperty(exports, "__esModule", ({ value: true }));
18688
18755
  exports.TestInjection = void 0;
18756
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
18689
18757
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
18690
18758
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
18691
18759
  class TestInjection {
18692
18760
  getMatcher() {
18693
- return (0, combi_1.seq)("TEST-INJECTION", expressions_1.TestSeamName);
18761
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("TEST-INJECTION", expressions_1.TestSeamName));
18694
18762
  }
18695
18763
  }
18696
18764
  exports.TestInjection = TestInjection;
@@ -18713,7 +18781,7 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/s
18713
18781
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
18714
18782
  class TestSeam {
18715
18783
  getMatcher() {
18716
- return (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.seq)("TEST-SEAM", expressions_1.TestSeamName), { also: combi_1.AlsoIn.OpenABAP });
18784
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.seq)("TEST-SEAM", expressions_1.TestSeamName), { also: combi_1.AlsoIn.OpenABAP }));
18717
18785
  }
18718
18786
  }
18719
18787
  exports.TestSeam = TestSeam;
@@ -19227,17 +19295,18 @@ exports.Unpack = Unpack;
19227
19295
 
19228
19296
  Object.defineProperty(exports, "__esModule", ({ value: true }));
19229
19297
  exports.UpdateDatabase = void 0;
19298
+ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
19230
19299
  const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
19231
19300
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
19232
- const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
19301
+ const version_2 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
19233
19302
  class UpdateDatabase {
19234
19303
  getMatcher() {
19235
19304
  const parameters = (0, combi_1.seq)(expressions_1.SQLFieldAndValue, (0, combi_1.star)((0, combi_1.seq)((0, combi_1.opt)(","), expressions_1.SQLFieldAndValue)));
19236
19305
  const set = (0, combi_1.seq)("SET", (0, combi_1.alt)(parameters, expressions_1.Dynamic), (0, combi_1.opt)((0, combi_1.seq)("WHERE", expressions_1.SQLCond)));
19237
19306
  const indicators = (0, combi_1.seq)("INDICATORS SET STRUCTURE", expressions_1.ComponentName);
19238
- const fromTable = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource, (0, combi_1.opt)((0, combi_1.ver)(version_1.Release.v755, indicators)));
19307
+ const fromTable = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource, (0, combi_1.opt)((0, combi_1.ver)(version_2.Release.v755, indicators)));
19239
19308
  const ret = (0, combi_1.seq)("UPDATE", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), (0, combi_1.opt)((0, combi_1.alt)(fromTable, set)));
19240
- return ret;
19309
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
19241
19310
  }
19242
19311
  }
19243
19312
  exports.UpdateDatabase = UpdateDatabase;
@@ -19280,19 +19349,20 @@ exports.VerificationMessage = VerificationMessage;
19280
19349
 
19281
19350
  Object.defineProperty(exports, "__esModule", ({ value: true }));
19282
19351
  exports.Wait = void 0;
19283
- const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
19284
19352
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
19353
+ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
19354
+ const version_2 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
19285
19355
  const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
19286
19356
  class Wait {
19287
19357
  getMatcher() {
19288
19358
  const up = (0, combi_1.seq)("UP TO", expressions_1.Source, "SECONDS");
19289
19359
  const channels = "MESSAGING CHANNELS";
19290
- const push = (0, combi_1.ver)(version_1.Release.v750, "PUSH CHANNELS", { also: combi_1.AlsoIn.OpenABAP });
19360
+ const push = (0, combi_1.ver)(version_2.Release.v750, "PUSH CHANNELS", { also: combi_1.AlsoIn.OpenABAP });
19291
19361
  const tasks = "ASYNCHRONOUS TASKS";
19292
19362
  const type = (0, combi_1.seq)("FOR", (0, combi_1.per)(channels, push, tasks));
19293
19363
  const until = (0, combi_1.seq)((0, combi_1.opt)(type), "UNTIL", expressions_1.Cond, (0, combi_1.opt)(up));
19294
19364
  const ret = (0, combi_1.seq)("WAIT", (0, combi_1.alt)(until, up));
19295
- return ret;
19365
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
19296
19366
  }
19297
19367
  }
19298
19368
  exports.Wait = Wait;
@@ -19435,7 +19505,7 @@ class With {
19435
19505
  getMatcher() {
19436
19506
  const exposing = (0, combi_1.optPrio)((0, combi_1.seq)("WITH", (0, combi_1.altPrio)(new expressions_1.SQLCTEHierarchy(), expressions_1.SQLCTEAssociations)));
19437
19507
  const cte = (0, combi_1.seq)(expressions_1.WithName, "AS", (0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SelectCTE, (0, combi_1.tok)(tokens_1.WParenRightW), exposing);
19438
- return (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)("WITH", cte, (0, combi_1.star)((0, combi_1.seq)(",", cte)), expressions_1.Select));
19508
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)("WITH", cte, (0, combi_1.star)((0, combi_1.seq)(",", cte)), expressions_1.Select)));
19439
19509
  }
19440
19510
  }
19441
19511
  exports.With = With;
@@ -25130,7 +25200,6 @@ BuiltIn.methods = {
25130
25200
 
25131
25201
  Object.defineProperty(exports, "__esModule", ({ value: true }));
25132
25202
  exports.CurrentScope = void 0;
25133
- const version_1 = __webpack_require__(/*! ../../version */ "../core/build/src/version.js");
25134
25203
  const _builtin_1 = __webpack_require__(/*! ./_builtin */ "../core/build/src/abap/5_syntax/_builtin.js");
25135
25204
  const ddic_1 = __webpack_require__(/*! ../../ddic */ "../core/build/src/ddic.js");
25136
25205
  const position_1 = __webpack_require__(/*! ../../position */ "../core/build/src/position.js");
@@ -25166,7 +25235,7 @@ class CurrentScope {
25166
25235
  }
25167
25236
  ///////////////////////////
25168
25237
  getRelease() {
25169
- return (0, version_1.versionToABAPRelease)(this.reg.getConfig().getVersion());
25238
+ return this.reg.getConfig().getRelease();
25170
25239
  }
25171
25240
  getVersion() {
25172
25241
  return this.reg.getConfig().getVersion();
@@ -51972,27 +52041,27 @@ class CDSParser {
51972
52041
  }
51973
52042
  let tokens = cds_lexer_1.CDSLexer.run(file);
51974
52043
  tokens = tokens.filter(t => !(t instanceof tokens_1.Comment));
51975
- let res = combi_1.Combi.run(new Expressions.CDSDefineView(), tokens, version_1.defaultVersion);
52044
+ let res = combi_1.Combi.run(new Expressions.CDSDefineView(), tokens, version_1.defaultRelease);
51976
52045
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51977
- res = combi_1.Combi.run(new Expressions.CDSDefineAbstract(), tokens, version_1.defaultVersion);
52046
+ res = combi_1.Combi.run(new Expressions.CDSDefineAbstract(), tokens, version_1.defaultRelease);
51978
52047
  }
51979
52048
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51980
- res = combi_1.Combi.run(new Expressions.CDSDefineProjection(), tokens, version_1.defaultVersion);
52049
+ res = combi_1.Combi.run(new Expressions.CDSDefineProjection(), tokens, version_1.defaultRelease);
51981
52050
  }
51982
52051
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51983
- res = combi_1.Combi.run(new Expressions.CDSAnnotate(), tokens, version_1.defaultVersion);
52052
+ res = combi_1.Combi.run(new Expressions.CDSAnnotate(), tokens, version_1.defaultRelease);
51984
52053
  }
51985
52054
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51986
- res = combi_1.Combi.run(new Expressions.CDSDefineCustom(), tokens, version_1.defaultVersion);
52055
+ res = combi_1.Combi.run(new Expressions.CDSDefineCustom(), tokens, version_1.defaultRelease);
51987
52056
  }
51988
52057
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51989
- res = combi_1.Combi.run(new Expressions.CDSDefineTableFunction(), tokens, version_1.defaultVersion);
52058
+ res = combi_1.Combi.run(new Expressions.CDSDefineTableFunction(), tokens, version_1.defaultRelease);
51990
52059
  }
51991
52060
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51992
- res = combi_1.Combi.run(new Expressions.CDSExtendView(), tokens, version_1.defaultVersion);
52061
+ res = combi_1.Combi.run(new Expressions.CDSExtendView(), tokens, version_1.defaultRelease);
51993
52062
  }
51994
52063
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51995
- res = combi_1.Combi.run(new Expressions.CDSDefineHierarchy(), tokens, version_1.defaultVersion);
52064
+ res = combi_1.Combi.run(new Expressions.CDSDefineHierarchy(), tokens, version_1.defaultRelease);
51996
52065
  }
51997
52066
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
51998
52067
  return undefined;
@@ -53340,10 +53409,7 @@ class Config {
53340
53409
  for (const rule of sorted) {
53341
53410
  rules[rule.getMetadata().key] = rule.getConfig();
53342
53411
  }
53343
- let version = version_1.defaultVersion;
53344
- if (ver) {
53345
- version = ver;
53346
- }
53412
+ const version = ver;
53347
53413
  // defaults: dont skip anything, report everything. The user can decide to skip stuff
53348
53414
  // its difficult to debug errors not being reported
53349
53415
  const config = {
@@ -53451,42 +53517,54 @@ class Config {
53451
53517
  return this.config.syntax;
53452
53518
  }
53453
53519
  getRelease() {
53454
- return (0, version_1.versionToABAPRelease)(this.getVersion());
53520
+ const v = this.config.syntax.version;
53521
+ if (v !== undefined && typeof v !== "string") {
53522
+ return version_1.Release[v.release];
53523
+ }
53524
+ if (this.config.global === undefined || v === undefined) {
53525
+ return version_1.defaultRelease;
53526
+ }
53527
+ return (0, version_1.versionToABAPRelease)(v);
53455
53528
  }
53456
53529
  getOpenABAP() {
53457
53530
  return this.config.syntax.openABAP === true;
53458
53531
  }
53459
53532
  getVersion() {
53460
- if (this.config.global === undefined || this.config.syntax.version === undefined) {
53461
- return version_1.defaultVersion;
53533
+ const v = this.config.syntax.version;
53534
+ if (this.config.global === undefined || v === undefined || typeof v !== "string") {
53535
+ return version_1.Version.v816;
53462
53536
  }
53463
- return this.config.syntax.version;
53537
+ return v;
53464
53538
  }
53465
53539
  getLanguageVersion() {
53466
53540
  var _a;
53541
+ const v = this.config.syntax.version;
53542
+ if (v !== undefined && typeof v !== "string") {
53543
+ return v.language;
53544
+ }
53467
53545
  return (_a = this.config.syntax.languageVersion) !== null && _a !== void 0 ? _a : version_1.LanguageVersion.Normal;
53468
53546
  }
53469
53547
  checkVersion() {
53470
- if (this.config.syntax.version === undefined) {
53471
- return; // handled in getVersion
53548
+ const version = this.config.syntax.version;
53549
+ if (version === undefined || typeof version !== "string") {
53550
+ return; // undefined handled in getVersion, object form is already explicit
53472
53551
  }
53473
53552
  let match = false;
53474
53553
  const vers = version_1.Version;
53475
53554
  for (const v in version_1.Version) {
53476
- if (vers[v] === this.config.syntax.version) {
53555
+ if (vers[v] === version) {
53477
53556
  match = true;
53478
53557
  break;
53479
53558
  }
53480
53559
  }
53481
53560
  if (match === false) {
53482
- this.config.syntax.version = version_1.defaultVersion;
53561
+ this.config.syntax.version = undefined;
53483
53562
  return;
53484
53563
  }
53485
- if (this.config.syntax.version === version_1.Version.Cloud) {
53486
- this.config.syntax.version = version_1.Version.Newest;
53564
+ if (version === version_1.Version.Cloud) {
53487
53565
  this.config.syntax.languageVersion = version_1.LanguageVersion.Cloud;
53488
53566
  }
53489
- else if (this.config.syntax.version === version_1.Version.OpenABAP) {
53567
+ else if (version === version_1.Version.OpenABAP) {
53490
53568
  this.config.syntax.version = version_1.Version.v702;
53491
53569
  this.config.syntax.openABAP = true;
53492
53570
  }
@@ -54169,9 +54247,9 @@ var DDLKind;
54169
54247
  class DDLParser {
54170
54248
  parse(file) {
54171
54249
  const tokens = ddl_lexer_1.DDLLexer.run(file);
54172
- let res = combi_1.Combi.run(new Expressions.DDLStructure(), tokens, version_1.defaultVersion);
54250
+ let res = combi_1.Combi.run(new Expressions.DDLStructure(), tokens, version_1.defaultRelease);
54173
54251
  if (res === undefined) {
54174
- res = combi_1.Combi.run(new Expressions.DDLTable(), tokens, version_1.defaultVersion);
54252
+ res = combi_1.Combi.run(new Expressions.DDLTable(), tokens, version_1.defaultRelease);
54175
54253
  }
54176
54254
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
54177
54255
  return undefined;
@@ -67317,7 +67395,7 @@ class Registry {
67317
67395
  }
67318
67396
  static abaplintVersion() {
67319
67397
  // magic, see build script "version.js"
67320
- return "2.119.44";
67398
+ return "2.119.45";
67321
67399
  }
67322
67400
  getDDICReferences() {
67323
67401
  return this.ddicReferences;
@@ -80866,6 +80944,7 @@ __exportStar(__webpack_require__(/*! ./strict_sql */ "../core/build/src/rules/st
80866
80944
  __exportStar(__webpack_require__(/*! ./superclass_final */ "../core/build/src/rules/superclass_final.js"), exports);
80867
80945
  __exportStar(__webpack_require__(/*! ./superfluous_value */ "../core/build/src/rules/superfluous_value.js"), exports);
80868
80946
  __exportStar(__webpack_require__(/*! ./sy_modification */ "../core/build/src/rules/sy_modification.js"), exports);
80947
+ __exportStar(__webpack_require__(/*! ./sy_read_restriction */ "../core/build/src/rules/sy_read_restriction.js"), exports);
80869
80948
  __exportStar(__webpack_require__(/*! ./tabl_enhancement_category */ "../core/build/src/rules/tabl_enhancement_category.js"), exports);
80870
80949
  __exportStar(__webpack_require__(/*! ./tables_declared_locally */ "../core/build/src/rules/tables_declared_locally.js"), exports);
80871
80950
  __exportStar(__webpack_require__(/*! ./try_without_catch */ "../core/build/src/rules/try_without_catch.js"), exports);
@@ -91930,6 +92009,168 @@ exports.SyModification = SyModification;
91930
92009
 
91931
92010
  /***/ },
91932
92011
 
92012
+ /***/ "../core/build/src/rules/sy_read_restriction.js"
92013
+ /*!******************************************************!*\
92014
+ !*** ../core/build/src/rules/sy_read_restriction.js ***!
92015
+ \******************************************************/
92016
+ (__unused_webpack_module, exports, __webpack_require__) {
92017
+
92018
+ "use strict";
92019
+
92020
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
92021
+ if (k2 === undefined) k2 = k;
92022
+ var desc = Object.getOwnPropertyDescriptor(m, k);
92023
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
92024
+ desc = { enumerable: true, get: function() { return m[k]; } };
92025
+ }
92026
+ Object.defineProperty(o, k2, desc);
92027
+ }) : (function(o, m, k, k2) {
92028
+ if (k2 === undefined) k2 = k;
92029
+ o[k2] = m[k];
92030
+ }));
92031
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
92032
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
92033
+ }) : function(o, v) {
92034
+ o["default"] = v;
92035
+ });
92036
+ var __importStar = (this && this.__importStar) || (function () {
92037
+ var ownKeys = function(o) {
92038
+ ownKeys = Object.getOwnPropertyNames || function (o) {
92039
+ var ar = [];
92040
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
92041
+ return ar;
92042
+ };
92043
+ return ownKeys(o);
92044
+ };
92045
+ return function (mod) {
92046
+ if (mod && mod.__esModule) return mod;
92047
+ var result = {};
92048
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
92049
+ __setModuleDefault(result, mod);
92050
+ return result;
92051
+ };
92052
+ })();
92053
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
92054
+ exports.SyReadRestriction = exports.SyReadRestrictionConf = void 0;
92055
+ const issue_1 = __webpack_require__(/*! ../issue */ "../core/build/src/issue.js");
92056
+ const Expressions = __importStar(__webpack_require__(/*! ../abap/2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
92057
+ const _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ "../core/build/src/rules/_abap_rule.js");
92058
+ const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "../core/build/src/rules/_basic_rule_config.js");
92059
+ const _irule_1 = __webpack_require__(/*! ./_irule */ "../core/build/src/rules/_irule.js");
92060
+ const version_1 = __webpack_require__(/*! ../version */ "../core/build/src/version.js");
92061
+ const severity_1 = __webpack_require__(/*! ../severity */ "../core/build/src/severity.js");
92062
+ // ABAP Cloud: 17 system fields allowed for reading
92063
+ // https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENSYSTEM_FIELDS.html
92064
+ const CLOUD_ALLOWED = new Set([
92065
+ "SY-BATCH",
92066
+ "SY-DBCNT",
92067
+ "SY-FDPOS",
92068
+ "SY-INDEX",
92069
+ "SY-LANGU",
92070
+ "SY-MANDT",
92071
+ "SY-MSGID",
92072
+ "SY-MSGNO",
92073
+ "SY-MSGTY",
92074
+ "SY-MSGV1",
92075
+ "SY-MSGV2",
92076
+ "SY-MSGV3",
92077
+ "SY-MSGV4",
92078
+ "SY-SUBRC",
92079
+ "SY-SYSID",
92080
+ "SY-TABIX",
92081
+ "SY-UNAME",
92082
+ ]);
92083
+ // ABAP for Key Users: 5 system fields allowed for reading
92084
+ const KEYUSER_ALLOWED = new Set([
92085
+ "SY-DBCNT",
92086
+ "SY-FDPOS",
92087
+ "SY-INDEX",
92088
+ "SY-SUBRC",
92089
+ "SY-TABIX",
92090
+ ]);
92091
+ class SyReadRestrictionConf extends _basic_rule_config_1.BasicRuleConfig {
92092
+ }
92093
+ exports.SyReadRestrictionConf = SyReadRestrictionConf;
92094
+ class SyReadRestriction extends _abap_rule_1.ABAPRule {
92095
+ constructor() {
92096
+ super(...arguments);
92097
+ this.conf = new SyReadRestrictionConf();
92098
+ }
92099
+ getMetadata() {
92100
+ return {
92101
+ key: "sy_read_restriction",
92102
+ title: "SY field read restriction",
92103
+ shortDescription: `Finds reads of SY fields not allowed in the current language version`,
92104
+ extendedInformation: `In ABAP Cloud, only 17 system fields may be read; reads of other fields produce a warning.\n` +
92105
+ `In ABAP for Key Users, only 5 system fields may be read:\n` +
92106
+ `SY-DBCNT, SY-FDPOS, SY-INDEX, SY-SUBRC, SY-TABIX.\n` +
92107
+ `https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENSYSTEM_FIELDS.html`,
92108
+ tags: [_irule_1.RuleTag.SingleFile],
92109
+ badExample: `lv = sy-uname.`,
92110
+ goodExample: `IF sy-subrc = 0. ENDIF.`,
92111
+ };
92112
+ }
92113
+ getConfig() {
92114
+ return this.conf;
92115
+ }
92116
+ setConfig(conf) {
92117
+ this.conf = conf;
92118
+ }
92119
+ runParsed(file, _obj) {
92120
+ var _a;
92121
+ const issues = [];
92122
+ const langVer = this.reg.getConfig().getLanguageVersion();
92123
+ if (langVer === version_1.LanguageVersion.Normal) {
92124
+ return [];
92125
+ }
92126
+ const allowed = langVer === version_1.LanguageVersion.KeyUser ? KEYUSER_ALLOWED : CLOUD_ALLOWED;
92127
+ const severity = langVer === version_1.LanguageVersion.KeyUser ? this.conf.severity : severity_1.Severity.Warning;
92128
+ // Collect tokens that appear in writable Target positions — they're modifications,
92129
+ // handled by the sy_modification rule, not this one.
92130
+ const writeTokens = new Set();
92131
+ for (const t of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressionsRecursive(Expressions.Target)) || []) {
92132
+ const concat = t.concatTokens().toUpperCase();
92133
+ if (!concat.startsWith("SY-")) {
92134
+ continue;
92135
+ }
92136
+ writeTokens.add(t.getFirstToken());
92137
+ }
92138
+ // Walk all tokens looking for the sequence SY - <fieldname>
92139
+ const tokens = file.getTokens();
92140
+ for (let i = 0; i + 2 < tokens.length; i++) {
92141
+ const sy = tokens[i];
92142
+ const dash = tokens[i + 1];
92143
+ const fld = tokens[i + 2];
92144
+ if (sy.getStr().toUpperCase() !== "SY") {
92145
+ continue;
92146
+ }
92147
+ if (dash.getStr() !== "-") {
92148
+ continue;
92149
+ }
92150
+ // Adjacent: no whitespace between the three tokens, on the same row
92151
+ if (sy.getEnd().getCol() !== dash.getStart().getCol()
92152
+ || dash.getEnd().getCol() !== fld.getStart().getCol()
92153
+ || sy.getRow() !== dash.getRow()
92154
+ || dash.getRow() !== fld.getRow()) {
92155
+ continue;
92156
+ }
92157
+ if (writeTokens.has(sy)) {
92158
+ continue;
92159
+ }
92160
+ const fieldName = "SY-" + fld.getStr().toUpperCase();
92161
+ if (!allowed.has(fieldName)) {
92162
+ const message = `SY field "${fieldName}" cannot be read in language version ${langVer}`;
92163
+ issues.push(issue_1.Issue.atToken(file, sy, message, this.getMetadata().key, severity));
92164
+ }
92165
+ }
92166
+ return issues;
92167
+ }
92168
+ }
92169
+ exports.SyReadRestriction = SyReadRestriction;
92170
+ //# sourceMappingURL=sy_read_restriction.js.map
92171
+
92172
+ /***/ },
92173
+
91933
92174
  /***/ "../core/build/src/rules/tabl_enhancement_category.js"
91934
92175
  /*!************************************************************!*\
91935
92176
  !*** ../core/build/src/rules/tabl_enhancement_category.js ***!
@@ -96713,12 +96954,8 @@ exports.NameValidator = NameValidator;
96713
96954
  "use strict";
96714
96955
 
96715
96956
  Object.defineProperty(exports, "__esModule", ({ value: true }));
96716
- exports.defaultRelease = exports.defaultVersion = exports.Release = exports.ReleaseList = exports.LanguageVersion = exports.Version = void 0;
96957
+ exports.defaultRelease = exports.Release = exports.ReleaseList = exports.LanguageVersion = exports.Version = void 0;
96717
96958
  exports.releaseAtLeast = releaseAtLeast;
96718
- exports.fromABAP = fromABAP;
96719
- exports.fromKernel = fromKernel;
96720
- exports.fromCloud = fromCloud;
96721
- exports.fromOP = fromOP;
96722
96959
  exports.versionToABAPRelease = versionToABAPRelease;
96723
96960
  exports.getPreviousVersion = getPreviousVersion;
96724
96961
  /** @deprecated Use ABAPRelease and Release instead */
@@ -96747,7 +96984,6 @@ var Version;
96747
96984
  * Release.Newest + {@link LanguageVersion.Cloud} pair.
96748
96985
  */
96749
96986
  Version["Cloud"] = "Cloud";
96750
- Version["Newest"] = "Newest";
96751
96987
  })(Version || (exports.Version = Version = {}));
96752
96988
  /**
96753
96989
  * Dialect / flavor axis, orthogonal to the on-prem/cloud release track.
@@ -96855,62 +97091,6 @@ exports.Release = Object.freeze(Object.assign(Object.assign({}, Object.fromEntri
96855
97091
  function releaseAtLeast(running, required) {
96856
97092
  return running.ordinal >= required.ordinal;
96857
97093
  }
96858
- // Lookup maps for the four constructor functions
96859
- const byAbap = new Map();
96860
- const byKernel = new Map();
96861
- const byOp = new Map();
96862
- const byCloud = new Map();
96863
- for (const r of exports.ReleaseList) {
96864
- if (r.abap !== null) {
96865
- byAbap.set(r.abap, r);
96866
- }
96867
- if (r.kernel !== null) {
96868
- byKernel.set(r.kernel, r);
96869
- }
96870
- if (r.cloud !== null) {
96871
- byCloud.set(r.cloud, r);
96872
- }
96873
- if (r.op !== null) {
96874
- // fromOP returns the *last* row at that op (the full on-prem release),
96875
- // so we overwrite on each iteration — later rows win.
96876
- byOp.set(r.op, r);
96877
- }
96878
- }
96879
- /** Look up a release by its ABAP name, e.g. "7.90", "740SP05", "9.16" */
96880
- function fromABAP(abap) {
96881
- const found = byAbap.get(abap);
96882
- if (found === undefined) {
96883
- throw new Error("Unknown ABAP release: " + abap);
96884
- }
96885
- return found;
96886
- }
96887
- /** Look up a release by its kernel release number, e.g. 753, 790, 916 */
96888
- function fromKernel(kernel) {
96889
- const found = byKernel.get(kernel);
96890
- if (found === undefined) {
96891
- throw new Error("Unknown kernel release: " + kernel);
96892
- }
96893
- return found;
96894
- }
96895
- /** Look up a release by its cloud release number, e.g. 793, 916 */
96896
- function fromCloud(cloud) {
96897
- const found = byCloud.get(cloud);
96898
- if (found === undefined) {
96899
- throw new Error("Unknown cloud release: " + cloud);
96900
- }
96901
- return found;
96902
- }
96903
- /**
96904
- * Look up a release by its on-prem release number, e.g. 758, 816.
96905
- * Returns the *last* cloud row at that op number, which is the full on-prem release.
96906
- */
96907
- function fromOP(op) {
96908
- const found = byOp.get(op);
96909
- if (found === undefined) {
96910
- throw new Error("Unknown on-prem release: " + op);
96911
- }
96912
- return found;
96913
- }
96914
97094
  // ---------------------------------------------------------------------------
96915
97095
  // Deprecated compatibility layer — keeps existing callers working
96916
97096
  // ---------------------------------------------------------------------------
@@ -96930,7 +97110,6 @@ const byDeprecated = Object.freeze({
96930
97110
  [Version.v757]: exports.Release["v757"],
96931
97111
  [Version.v758]: exports.Release["v758"],
96932
97112
  [Version.v816]: exports.Release["v816"],
96933
- [Version.Newest]: exports.Release["Newest"],
96934
97113
  [Version.Cloud]: exports.Release["Newest"], // Cloud → Newest sentinel
96935
97114
  [Version.OpenABAP]: exports.Release["v702"], // OpenABAP shares v702 release identity
96936
97115
  });
@@ -96941,8 +97120,7 @@ function versionToABAPRelease(v) {
96941
97120
  }
96942
97121
  return found;
96943
97122
  }
96944
- exports.defaultVersion = Version.v758;
96945
- exports.defaultRelease = exports.Release.v758;
97123
+ exports.defaultRelease = exports.Release.Newest;
96946
97124
  function getPreviousVersion(v) {
96947
97125
  if (v === Version.OpenABAP) {
96948
97126
  return Version.v702;