@abaplint/core 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 (72) hide show
  1. package/build/abaplint.d.ts +360 -5
  2. package/build/src/abap/2_statements/expressions/_select_core.js +9 -7
  3. package/build/src/abap/2_statements/expressions/assign_source.js +9 -3
  4. package/build/src/abap/2_statements/expressions/database_table.js +8 -0
  5. package/build/src/abap/2_statements/expressions/select.js +1 -1
  6. package/build/src/abap/2_statements/expressions/select_cte.js +2 -1
  7. package/build/src/abap/2_statements/expressions/sql_client.js +1 -1
  8. package/build/src/abap/2_statements/expressions/sql_from.js +9 -8
  9. package/build/src/abap/2_statements/expressions/sql_from_source.js +2 -1
  10. package/build/src/abap/2_statements/statements/add.js +2 -1
  11. package/build/src/abap/2_statements/statements/assert.js +2 -1
  12. package/build/src/abap/2_statements/statements/assign.js +8 -3
  13. package/build/src/abap/2_statements/statements/at.js +2 -1
  14. package/build/src/abap/2_statements/statements/authority_check.js +2 -1
  15. package/build/src/abap/2_statements/statements/call.js +2 -1
  16. package/build/src/abap/2_statements/statements/call_function.js +1 -1
  17. package/build/src/abap/2_statements/statements/call_transformation.js +2 -1
  18. package/build/src/abap/2_statements/statements/class_deferred.js +2 -1
  19. package/build/src/abap/2_statements/statements/class_definition_load.js +2 -1
  20. package/build/src/abap/2_statements/statements/commit.js +2 -1
  21. package/build/src/abap/2_statements/statements/commit_entities.js +1 -1
  22. package/build/src/abap/2_statements/statements/create_data.js +1 -1
  23. package/build/src/abap/2_statements/statements/create_object.js +1 -1
  24. package/build/src/abap/2_statements/statements/delete_database.js +2 -1
  25. package/build/src/abap/2_statements/statements/delete_internal.js +3 -1
  26. package/build/src/abap/2_statements/statements/divide.js +2 -1
  27. package/build/src/abap/2_statements/statements/endform.js +2 -2
  28. package/build/src/abap/2_statements/statements/endfunction.js +2 -1
  29. package/build/src/abap/2_statements/statements/endwith.js +1 -1
  30. package/build/src/abap/2_statements/statements/export.js +4 -3
  31. package/build/src/abap/2_statements/statements/form.js +2 -1
  32. package/build/src/abap/2_statements/statements/free.js +2 -1
  33. package/build/src/abap/2_statements/statements/function_module.js +2 -1
  34. package/build/src/abap/2_statements/statements/function_pool.js +2 -1
  35. package/build/src/abap/2_statements/statements/get_reference.js +2 -1
  36. package/build/src/abap/2_statements/statements/get_time.js +2 -1
  37. package/build/src/abap/2_statements/statements/import.js +5 -4
  38. package/build/src/abap/2_statements/statements/insert_database.js +2 -1
  39. package/build/src/abap/2_statements/statements/interface_deferred.js +2 -1
  40. package/build/src/abap/2_statements/statements/interface_load.js +2 -1
  41. package/build/src/abap/2_statements/statements/loop.js +1 -1
  42. package/build/src/abap/2_statements/statements/loop_extract.js +2 -1
  43. package/build/src/abap/2_statements/statements/message.js +2 -1
  44. package/build/src/abap/2_statements/statements/method_def.js +8 -4
  45. package/build/src/abap/2_statements/statements/method_implementation.js +3 -1
  46. package/build/src/abap/2_statements/statements/modify_database.js +2 -1
  47. package/build/src/abap/2_statements/statements/multiply.js +2 -1
  48. package/build/src/abap/2_statements/statements/perform.js +1 -1
  49. package/build/src/abap/2_statements/statements/raise.js +2 -1
  50. package/build/src/abap/2_statements/statements/raise_entity_event.js +2 -1
  51. package/build/src/abap/2_statements/statements/raise_event.js +2 -1
  52. package/build/src/abap/2_statements/statements/read_table.js +3 -2
  53. package/build/src/abap/2_statements/statements/rollback.js +2 -1
  54. package/build/src/abap/2_statements/statements/rollback_entities.js +1 -1
  55. package/build/src/abap/2_statements/statements/set_handler.js +2 -1
  56. package/build/src/abap/2_statements/statements/set_locks.js +1 -1
  57. package/build/src/abap/2_statements/statements/static.js +3 -2
  58. package/build/src/abap/2_statements/statements/subtract.js +2 -1
  59. package/build/src/abap/2_statements/statements/test_injection.js +2 -1
  60. package/build/src/abap/2_statements/statements/test_seam.js +1 -1
  61. package/build/src/abap/2_statements/statements/update_database.js +4 -3
  62. package/build/src/abap/2_statements/statements/wait.js +4 -3
  63. package/build/src/abap/2_statements/statements/with.js +1 -1
  64. package/build/src/abap/5_syntax/_current_scope.js +1 -2
  65. package/build/src/cds/cds_parser.js +8 -8
  66. package/build/src/config.js +24 -15
  67. package/build/src/ddl/ddl_parser.js +2 -2
  68. package/build/src/registry.js +1 -1
  69. package/build/src/rules/index.js +1 -0
  70. package/build/src/rules/sy_read_restriction.js +152 -0
  71. package/build/src/version.js +2 -65
  72. package/package.json +1 -1
@@ -1463,7 +1463,7 @@ declare class CondSub extends Expression {
1463
1463
 
1464
1464
  export declare class Config implements IConfiguration {
1465
1465
  private readonly config;
1466
- static getDefault(ver?: Version, langVer?: LanguageVersion, openABAP?: boolean): Config;
1466
+ static getDefault(ver?: VersionOldOrNew, langVer?: LanguageVersion, openABAP?: boolean): Config;
1467
1467
  getEnabledRules(): IRule[];
1468
1468
  constructor(json: string);
1469
1469
  get(): IConfig;
@@ -1699,6 +1699,8 @@ declare class DatabaseConnection extends Expression {
1699
1699
  }
1700
1700
 
1701
1701
  declare class DatabaseTable extends Expression {
1702
+ private readonly noDynamic;
1703
+ constructor(noDynamic?: boolean);
1702
1704
  getRunnable(): IStatementRunnable;
1703
1705
  }
1704
1706
 
@@ -4350,8 +4352,8 @@ declare interface ISyntaxResult {
4350
4352
  }
4351
4353
 
4352
4354
  declare interface ISyntaxSettings {
4353
- /** ABAP release to parse against, e.g. `"v758"`, `"Newest"`, `"Cloud"`. */
4354
- version?: Version;
4355
+ /** ABAP language version */
4356
+ version?: VersionOldOrNew;
4355
4357
  languageVersion?: LanguageVersion;
4356
4358
  /** Use the OpenABAP dialect (v702 base + a set of additional language features). */
4357
4359
  openABAP?: boolean;
@@ -5950,6 +5952,353 @@ export declare const Release: {
5950
5952
  */
5951
5953
  export declare function releaseAtLeast(running: ABAPRelease, required: ABAPRelease): boolean;
5952
5954
 
5955
+ declare const releaseDefsRaw: readonly [readonly ["v700", {
5956
+ readonly abap: "700";
5957
+ readonly kernel: 700;
5958
+ readonly op: 700;
5959
+ readonly cloud: null;
5960
+ readonly ce: null;
5961
+ }], readonly ["v701", {
5962
+ readonly abap: "701";
5963
+ readonly kernel: 701;
5964
+ readonly op: 701;
5965
+ readonly cloud: null;
5966
+ readonly ce: null;
5967
+ }], readonly ["v702", {
5968
+ readonly abap: "702";
5969
+ readonly kernel: 702;
5970
+ readonly op: 702;
5971
+ readonly cloud: null;
5972
+ readonly ce: null;
5973
+ }], readonly ["v710", {
5974
+ readonly abap: "710";
5975
+ readonly kernel: 710;
5976
+ readonly op: 710;
5977
+ readonly cloud: null;
5978
+ readonly ce: null;
5979
+ }], readonly ["v711", {
5980
+ readonly abap: "711";
5981
+ readonly kernel: 711;
5982
+ readonly op: 711;
5983
+ readonly cloud: null;
5984
+ readonly ce: null;
5985
+ }], readonly ["v720", {
5986
+ readonly abap: "720";
5987
+ readonly kernel: 720;
5988
+ readonly op: 720;
5989
+ readonly cloud: null;
5990
+ readonly ce: null;
5991
+ }], readonly ["v722", {
5992
+ readonly abap: "722";
5993
+ readonly kernel: 722;
5994
+ readonly op: 722;
5995
+ readonly cloud: null;
5996
+ readonly ce: null;
5997
+ }], readonly ["v730", {
5998
+ readonly abap: "730";
5999
+ readonly kernel: 730;
6000
+ readonly op: 730;
6001
+ readonly cloud: null;
6002
+ readonly ce: null;
6003
+ }], readonly ["v731", {
6004
+ readonly abap: "731";
6005
+ readonly kernel: 731;
6006
+ readonly op: 731;
6007
+ readonly cloud: null;
6008
+ readonly ce: null;
6009
+ }], readonly ["v740sp02", {
6010
+ readonly abap: "740SP02";
6011
+ readonly kernel: 740;
6012
+ readonly op: 740;
6013
+ readonly cloud: null;
6014
+ readonly ce: null;
6015
+ }], readonly ["v740sp05", {
6016
+ readonly abap: "740SP05";
6017
+ readonly kernel: 741;
6018
+ readonly op: 740;
6019
+ readonly cloud: null;
6020
+ readonly ce: null;
6021
+ }], readonly ["v740sp08", {
6022
+ readonly abap: "740SP08";
6023
+ readonly kernel: 742;
6024
+ readonly op: 740;
6025
+ readonly cloud: null;
6026
+ readonly ce: null;
6027
+ }], readonly ["v760", {
6028
+ readonly abap: "7.60";
6029
+ readonly kernel: 743;
6030
+ readonly op: 750;
6031
+ readonly cloud: 760;
6032
+ readonly ce: null;
6033
+ }], readonly ["v761", {
6034
+ readonly abap: "7.61";
6035
+ readonly kernel: 744;
6036
+ readonly op: 750;
6037
+ readonly cloud: 761;
6038
+ readonly ce: null;
6039
+ }], readonly ["v762", {
6040
+ readonly abap: "7.62";
6041
+ readonly kernel: 745;
6042
+ readonly op: 750;
6043
+ readonly cloud: 762;
6044
+ readonly ce: null;
6045
+ }], readonly ["v763", {
6046
+ readonly abap: "7.63";
6047
+ readonly kernel: 746;
6048
+ readonly op: 751;
6049
+ readonly cloud: 763;
6050
+ readonly ce: null;
6051
+ }], readonly ["v764", {
6052
+ readonly abap: "7.64";
6053
+ readonly kernel: 747;
6054
+ readonly op: 751;
6055
+ readonly cloud: 764;
6056
+ readonly ce: null;
6057
+ }], readonly ["v765", {
6058
+ readonly abap: "7.65";
6059
+ readonly kernel: 748;
6060
+ readonly op: 751;
6061
+ readonly cloud: 765;
6062
+ readonly ce: null;
6063
+ }], readonly ["v766", {
6064
+ readonly abap: "7.66";
6065
+ readonly kernel: 749;
6066
+ readonly op: 752;
6067
+ readonly cloud: 766;
6068
+ readonly ce: null;
6069
+ }], readonly ["v767", {
6070
+ readonly abap: "7.67";
6071
+ readonly kernel: 750;
6072
+ readonly op: 752;
6073
+ readonly cloud: 767;
6074
+ readonly ce: 1702;
6075
+ }], readonly ["v768", {
6076
+ readonly abap: "7.68";
6077
+ readonly kernel: 751;
6078
+ readonly op: 752;
6079
+ readonly cloud: 768;
6080
+ readonly ce: 1705;
6081
+ }], readonly ["v769", {
6082
+ readonly abap: "7.69";
6083
+ readonly kernel: 752;
6084
+ readonly op: 752;
6085
+ readonly cloud: 769;
6086
+ readonly ce: 1708;
6087
+ }], readonly ["v770", {
6088
+ readonly abap: "7.70";
6089
+ readonly kernel: 753;
6090
+ readonly op: 753;
6091
+ readonly cloud: 770;
6092
+ readonly ce: 1711;
6093
+ }], readonly ["v771", {
6094
+ readonly abap: "7.71";
6095
+ readonly kernel: 771;
6096
+ readonly op: 753;
6097
+ readonly cloud: 771;
6098
+ readonly ce: 1802;
6099
+ }], readonly ["v772", {
6100
+ readonly abap: "7.72";
6101
+ readonly kernel: 772;
6102
+ readonly op: 753;
6103
+ readonly cloud: 772;
6104
+ readonly ce: 1805;
6105
+ }], readonly ["v773", {
6106
+ readonly abap: "7.73";
6107
+ readonly kernel: 773;
6108
+ readonly op: 753;
6109
+ readonly cloud: 773;
6110
+ readonly ce: 1808;
6111
+ }], readonly ["v774", {
6112
+ readonly abap: "7.74";
6113
+ readonly kernel: 774;
6114
+ readonly op: 754;
6115
+ readonly cloud: 774;
6116
+ readonly ce: 1811;
6117
+ }], readonly ["v775", {
6118
+ readonly abap: "7.75";
6119
+ readonly kernel: 775;
6120
+ readonly op: 754;
6121
+ readonly cloud: 775;
6122
+ readonly ce: 1902;
6123
+ }], readonly ["v776", {
6124
+ readonly abap: "7.76";
6125
+ readonly kernel: 776;
6126
+ readonly op: 754;
6127
+ readonly cloud: 776;
6128
+ readonly ce: 1905;
6129
+ }], readonly ["v777", {
6130
+ readonly abap: "7.77";
6131
+ readonly kernel: 777;
6132
+ readonly op: 754;
6133
+ readonly cloud: 777;
6134
+ readonly ce: 1908;
6135
+ }], readonly ["v778", {
6136
+ readonly abap: "7.78";
6137
+ readonly kernel: 778;
6138
+ readonly op: 755;
6139
+ readonly cloud: 778;
6140
+ readonly ce: 1911;
6141
+ }], readonly ["v779", {
6142
+ readonly abap: "7.79";
6143
+ readonly kernel: 779;
6144
+ readonly op: 755;
6145
+ readonly cloud: 779;
6146
+ readonly ce: 2002;
6147
+ }], readonly ["v780", {
6148
+ readonly abap: "7.80";
6149
+ readonly kernel: 780;
6150
+ readonly op: 755;
6151
+ readonly cloud: 780;
6152
+ readonly ce: 2005;
6153
+ }], readonly ["v781", {
6154
+ readonly abap: "7.81";
6155
+ readonly kernel: 781;
6156
+ readonly op: 755;
6157
+ readonly cloud: 781;
6158
+ readonly ce: 2008;
6159
+ }], readonly ["v782", {
6160
+ readonly abap: "7.82";
6161
+ readonly kernel: 782;
6162
+ readonly op: 756;
6163
+ readonly cloud: 782;
6164
+ readonly ce: 2011;
6165
+ }], readonly ["v783", {
6166
+ readonly abap: "7.83";
6167
+ readonly kernel: 783;
6168
+ readonly op: 756;
6169
+ readonly cloud: 783;
6170
+ readonly ce: 2102;
6171
+ }], readonly ["v784", {
6172
+ readonly abap: "7.84";
6173
+ readonly kernel: 784;
6174
+ readonly op: 756;
6175
+ readonly cloud: 784;
6176
+ readonly ce: 2105;
6177
+ }], readonly ["v785", {
6178
+ readonly abap: "7.85";
6179
+ readonly kernel: 785;
6180
+ readonly op: 756;
6181
+ readonly cloud: 785;
6182
+ readonly ce: 2108;
6183
+ }], readonly ["v786", {
6184
+ readonly abap: "7.86";
6185
+ readonly kernel: 786;
6186
+ readonly op: 757;
6187
+ readonly cloud: 786;
6188
+ readonly ce: 2111;
6189
+ }], readonly ["v787", {
6190
+ readonly abap: "7.87";
6191
+ readonly kernel: 787;
6192
+ readonly op: 757;
6193
+ readonly cloud: 787;
6194
+ readonly ce: 2202;
6195
+ }], readonly ["v788", {
6196
+ readonly abap: "7.88";
6197
+ readonly kernel: 788;
6198
+ readonly op: 757;
6199
+ readonly cloud: 788;
6200
+ readonly ce: 2205;
6201
+ }], readonly ["v789", {
6202
+ readonly abap: "7.89";
6203
+ readonly kernel: 789;
6204
+ readonly op: 757;
6205
+ readonly cloud: 789;
6206
+ readonly ce: 2208;
6207
+ }], readonly ["v790", {
6208
+ readonly abap: "7.90";
6209
+ readonly kernel: 790;
6210
+ readonly op: 758;
6211
+ readonly cloud: 790;
6212
+ readonly ce: 2211;
6213
+ }], readonly ["v791", {
6214
+ readonly abap: "7.91";
6215
+ readonly kernel: 791;
6216
+ readonly op: 758;
6217
+ readonly cloud: 791;
6218
+ readonly ce: 2302;
6219
+ }], readonly ["v792", {
6220
+ readonly abap: "7.92";
6221
+ readonly kernel: 792;
6222
+ readonly op: 758;
6223
+ readonly cloud: 792;
6224
+ readonly ce: 2305;
6225
+ }], readonly ["v793", {
6226
+ readonly abap: "7.93";
6227
+ readonly kernel: 793;
6228
+ readonly op: 758;
6229
+ readonly cloud: 793;
6230
+ readonly ce: 2308;
6231
+ }], readonly ["v794", {
6232
+ readonly abap: "7.94";
6233
+ readonly kernel: 794;
6234
+ readonly op: 816;
6235
+ readonly cloud: 794;
6236
+ readonly ce: 2311;
6237
+ }], readonly ["v795", {
6238
+ readonly abap: "7.95";
6239
+ readonly kernel: 795;
6240
+ readonly op: 816;
6241
+ readonly cloud: 795;
6242
+ readonly ce: 2402;
6243
+ }], readonly ["v796", {
6244
+ readonly abap: "7.96";
6245
+ readonly kernel: 796;
6246
+ readonly op: 816;
6247
+ readonly cloud: 796;
6248
+ readonly ce: 2405;
6249
+ }], readonly ["v912", {
6250
+ readonly abap: "9.12";
6251
+ readonly kernel: 912;
6252
+ readonly op: 816;
6253
+ readonly cloud: 912;
6254
+ readonly ce: 2408;
6255
+ }], readonly ["v913", {
6256
+ readonly abap: "9.13";
6257
+ readonly kernel: 913;
6258
+ readonly op: 816;
6259
+ readonly cloud: 913;
6260
+ readonly ce: 2411;
6261
+ }], readonly ["v914", {
6262
+ readonly abap: "9.14";
6263
+ readonly kernel: 914;
6264
+ readonly op: 816;
6265
+ readonly cloud: 914;
6266
+ readonly ce: 2502;
6267
+ }], readonly ["v915", {
6268
+ readonly abap: "9.15";
6269
+ readonly kernel: 915;
6270
+ readonly op: 816;
6271
+ readonly cloud: 915;
6272
+ readonly ce: 2505;
6273
+ }], readonly ["v916", {
6274
+ readonly abap: "9.16";
6275
+ readonly kernel: 916;
6276
+ readonly op: 816;
6277
+ readonly cloud: 916;
6278
+ readonly ce: 2508;
6279
+ }], readonly ["v917", {
6280
+ readonly abap: "9.17";
6281
+ readonly kernel: 917;
6282
+ readonly op: null;
6283
+ readonly cloud: 917;
6284
+ readonly ce: 2511;
6285
+ }], readonly ["v918", {
6286
+ readonly abap: "9.18";
6287
+ readonly kernel: 918;
6288
+ readonly op: null;
6289
+ readonly cloud: 918;
6290
+ readonly ce: 2602;
6291
+ }], readonly ["Newest", {
6292
+ readonly abap: null;
6293
+ readonly kernel: null;
6294
+ readonly op: null;
6295
+ readonly cloud: null;
6296
+ readonly ce: null;
6297
+ }]];
6298
+
6299
+ /** Union of all raw release name strings, e.g. `"v700" | "v758" | "Newest"`. */
6300
+ declare type ReleaseName = (typeof releaseDefsRaw)[number][0];
6301
+
5953
6302
  export declare class Rename {
5954
6303
  private readonly reg;
5955
6304
  constructor(reg: IRegistry);
@@ -7911,10 +8260,16 @@ export declare enum Version {
7911
8260
  * restrictions". It expands into the explicit
7912
8261
  * Release.Newest + {@link LanguageVersion.Cloud} pair.
7913
8262
  */
7914
- Cloud = "Cloud",
7915
- Newest = "Newest"
8263
+ Cloud = "Cloud"
7916
8264
  }
7917
8265
 
8266
+ declare type VersionNew = {
8267
+ release: ReleaseName;
8268
+ language: LanguageVersion;
8269
+ };
8270
+
8271
+ declare type VersionOldOrNew = Version | VersionNew;
8272
+
7918
8273
  export declare function versionToABAPRelease(v: Version): ABAPRelease;
7919
8274
 
7920
8275
  declare class View extends AbstractObject {
@@ -15,16 +15,17 @@ function buildSelectSingleCore(allowInto = false) {
15
15
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
16
16
  const client = (0, combi_1.optPrio)(_1.SQLClient);
17
17
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
18
+ const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
18
19
  const whereClause = (0, combi_1.optPrio)(where);
19
20
  const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(sql_group_by_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
20
- 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));
21
+ const trailingOpts = (0, combi_1.seq)(conn, (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
21
22
  const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
22
23
  if (!allowInto) {
23
24
  const singleBody = (0, combi_1.seq)(_1.SQLFrom, client, byp, whereClause, groupHaving, trailingOpts);
24
25
  return (0, combi_1.seq)(fieldList, singleBody);
25
26
  }
26
- 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))));
27
- const singleIntoBeforeFrom = (0, combi_1.seq)(intoSingle, _1.SQLFrom, client, byp, (0, combi_1.optPrio)(_1.DatabaseConnection), whereClause, groupHaving, trailingOpts);
27
+ 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)));
28
+ const singleIntoBeforeFrom = (0, combi_1.seq)(intoSingle, _1.SQLFrom, client, byp, conn, whereClause, groupHaving, trailingOpts);
28
29
  return (0, combi_1.seq)(fieldList, byp, (0, combi_1.altPrio)(singleIntoBeforeFrom, singleAfterFrom));
29
30
  }
30
31
  function buildSelectCore(allowInto = false, allowOrderBy = true) {
@@ -35,25 +36,26 @@ function buildSelectCore(allowInto = false, allowOrderBy = true) {
35
36
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
36
37
  const client = (0, combi_1.optPrio)(_1.SQLClient);
37
38
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
39
+ const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
38
40
  const fae = (0, combi_1.optPrio)(_1.SQLForAllEntries);
39
41
  const whereClause = (0, combi_1.optPrio)(where);
40
42
  const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(sql_group_by_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
41
43
  const orderUpOff = allowOrderBy
42
44
  ? [(0, combi_1.optPrio)((0, combi_1.seq)(_1.SQLOrderBy, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), (0, combi_1.optPrio)(offset)))]
43
45
  : [];
44
- 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));
46
+ const trailingOpts = (0, combi_1.seq)(conn, (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
45
47
  const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
46
48
  const intoForPackSize = _1.SQLIntoTable;
47
49
  if (!allowInto) {
48
50
  const afterFromNoInto = (0, combi_1.seq)(_1.SQLFrom, client, byp, (0, combi_1.seq)((0, combi_1.optPrio)(sqlFields), fae, whereClause, groupHaving, ...orderUpOff, trailingOpts));
49
51
  return (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", buildSelectSingleCore(false)), (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, byp, afterFromNoInto));
50
52
  }
51
- 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));
53
+ 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));
52
54
  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));
53
- 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)));
55
+ 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)));
54
56
  const selectTableIntoThenFrom = (0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize));
55
57
  const selectOtherIntoThenFrom = intoSingle;
56
- 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);
58
+ 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);
57
59
  return (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", buildSelectSingleCore(true)), nonSingleBody);
58
60
  }
59
61
  //# sourceMappingURL=_select_core.js.map
@@ -11,9 +11,15 @@ const version_1 = require("../../../version");
11
11
  class AssignSource extends combi_1.Expression {
12
12
  getRunnable() {
13
13
  const component = (0, combi_1.seq)("COMPONENT", (0, combi_1.alt)(simple_source3_1.SimpleSource3, (0, combi_1.ver)(version_1.Release.v740sp02, source_1.Source, { also: combi_1.AlsoIn.OpenABAP })), "OF STRUCTURE", source_1.Source);
14
- const tableField = (0, combi_1.seq)("TABLE FIELD", (0, combi_1.alt)(source_1.Source, dynamic_1.Dynamic));
15
- const arrow = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));
16
- const source = (0, combi_1.alt)((0, combi_1.seq)(source_1.Source, (0, combi_1.opt)((0, combi_1.seq)(arrow, dynamic_1.Dynamic))), component, tableField, (0, combi_1.seq)(dynamic_1.Dynamic, (0, combi_1.opt)((0, combi_1.seq)(arrow, (0, combi_1.alt)(field_1.Field, dynamic_1.Dynamic)))));
14
+ // TABLE FIELD form: blocked in KeyUser
15
+ 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)));
16
+ // class=>(dyn_attr) via static arrow is blocked in KeyUser
17
+ // ref->(dyn_comp) via instance arrow is allowed — leave unguarded
18
+ 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)));
19
+ const anyArrow = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));
20
+ 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,
21
+ // standalone dynamic symbol (dyn_sym) blocked in KeyUser
22
+ (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))))));
17
23
  return source;
18
24
  }
19
25
  }
@@ -3,8 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DatabaseTable = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const dynamic_1 = require("./dynamic");
6
+ const version_1 = require("../../../version");
6
7
  class DatabaseTable extends combi_1.Expression {
8
+ constructor(noDynamic = false) {
9
+ super();
10
+ this.noDynamic = noDynamic;
11
+ }
7
12
  getRunnable() {
13
+ if (this.noDynamic) {
14
+ return (0, combi_1.altPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, dynamic_1.Dynamic), (0, combi_1.regex)(/^\*?(\/\w+\/)?\w+$/));
15
+ }
8
16
  return (0, combi_1.altPrio)(dynamic_1.Dynamic, (0, combi_1.regex)(/^\*?(\/\w+\/)?\w+$/));
9
17
  }
10
18
  }
@@ -9,7 +9,7 @@ const _select_core_1 = require("./_select_core");
9
9
  class Select extends combi_1.Expression {
10
10
  getRunnable() {
11
11
  const into = (0, combi_1.altPrio)(_1.SQLIntoTable, sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
12
- 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));
12
+ 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));
13
13
  const unionTail = (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.plusPrio)(_1.SQLSetOp), { also: combi_1.AlsoIn.OpenABAP });
14
14
  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));
15
15
  return (0, combi_1.seq)("SELECT", (0, combi_1.altPrio)(chained, standalone));
@@ -15,8 +15,9 @@ class SelectCTE extends combi_1.Expression {
15
15
  const bypass = "BYPASSING BUFFER";
16
16
  const privileged = (0, combi_1.ver)(version_1.Release.v758, _1.SQLPrivilegedAccess);
17
17
  const offset = (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)("OFFSET", sql_source_1.SQLSource));
18
+ const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
18
19
  const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
19
- 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));
20
+ 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);
20
21
  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);
21
22
  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);
22
23
  const union = (0, combi_1.seq)("UNION", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")));
@@ -9,7 +9,7 @@ const dynamic_1 = require("./dynamic");
9
9
  class SQLClient extends combi_1.Expression {
10
10
  getRunnable() {
11
11
  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)))));
12
- 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"))));
12
+ 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")))));
13
13
  return client;
14
14
  }
15
15
  }
@@ -4,20 +4,21 @@ exports.SQLFrom = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const tokens_1 = require("../../1_lexer/tokens");
6
6
  const _1 = require(".");
7
+ const version_1 = require("../../../version");
7
8
  class SQLFrom extends combi_1.Expression {
8
9
  // todo: rewrite/refactor this method
9
10
  getRunnable() {
10
11
  const joins = (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), _1.SQLJoin));
11
12
  // No opening parens
12
13
  const from0 = (0, combi_1.seq)("FROM", _1.SQLFromSource, joins);
13
- // 1 to 7 opening parens, with up to that many closing parens at the end
14
- 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)));
15
- 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)));
16
- 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)));
17
- 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)));
18
- 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)));
19
- 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)));
20
- 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)));
14
+ // 1 to 7 opening parens, with up to that many closing parens at the end (dynamic FROM, not allowed in KeyUser)
15
+ 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))));
16
+ 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))));
17
+ 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))));
18
+ 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))));
19
+ 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))));
20
+ 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))));
21
+ 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))));
21
22
  const source = (0, combi_1.altPrio)(from7, from6, from5, from4, from3, from2, from1, from0);
22
23
  return source;
23
24
  }
@@ -16,7 +16,8 @@ class SQLFromSource extends combi_1.Expression {
16
16
  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 });
17
17
  const aas = (0, combi_1.seq)("AS", _1.SQLAsName);
18
18
  const privileged = (0, combi_1.ver)(version_1.Release.v752, (0, combi_1.seq)("WITH", _1.SQLPrivilegedAccess));
19
- 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));
19
+ const pathForEntity = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, new sql_path_for_entity_1.SQLPathForEntity()));
20
+ 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));
20
21
  }
21
22
  }
22
23
  exports.SQLFromSource = SQLFromSource;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Add = void 0;
4
+ const version_1 = require("../../../version");
4
5
  const combi_1 = require("../combi");
5
6
  const expressions_1 = require("../expressions");
6
7
  class Add {
@@ -10,7 +11,7 @@ class Add {
10
11
  const giving = (0, combi_1.seq)("GIVING", expressions_1.Source);
11
12
  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));
12
13
  const ret = (0, combi_1.seq)("ADD", expressions_1.Source, (0, combi_1.altPrio)(to, then));
13
- return ret;
14
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
14
15
  }
15
16
  }
16
17
  exports.Add = Add;
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Assert = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const version_1 = require("../../../version");
6
7
  class Assert {
7
8
  getMatcher() {
8
9
  const fields = (0, combi_1.seq)("FIELDS", (0, combi_1.plus)(expressions_1.Source));
9
10
  const subkey = (0, combi_1.seq)("SUBKEY", expressions_1.Source);
10
11
  const id = (0, combi_1.seq)("ID", expressions_1.NamespaceSimpleName);
11
- 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);
12
+ 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));
12
13
  }
13
14
  }
14
15
  exports.Assert = Assert;
@@ -6,14 +6,19 @@ const expressions_1 = require("../expressions");
6
6
  const version_1 = require("../../../version");
7
7
  class Assign {
8
8
  getMatcher() {
9
- const type = (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(expressions_1.Dynamic, expressions_1.TypeName));
9
+ const dynamicType = (0, combi_1.altPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic), expressions_1.TypeName);
10
+ const type = (0, combi_1.seq)("TYPE", dynamicType);
10
11
  const like = (0, combi_1.seq)("LIKE", (0, combi_1.altPrio)(expressions_1.Dynamic, expressions_1.Source));
11
12
  const handle = (0, combi_1.seq)("TYPE HANDLE", expressions_1.Source);
12
13
  const range = (0, combi_1.seq)("RANGE", expressions_1.Source);
13
14
  const decimals = (0, combi_1.seq)("DECIMALS", expressions_1.Source);
14
- const casting = (0, combi_1.seq)("CASTING", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
15
+ const castingType = (0, combi_1.seq)("CASTING", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
16
+ // CASTING TYPE (dyntype) blocked in KeyUser
17
+ const casting = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, castingType);
15
18
  const obsoleteType = (0, combi_1.seq)("TYPE", expressions_1.Source, (0, combi_1.optPrio)(decimals));
16
- 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")));
19
+ const ret = (0, combi_1.seq)("ASSIGN",
20
+ // INCREMENT addition blocked in KeyUser
21
+ (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")));
17
22
  return ret;
18
23
  }
19
24
  }