@abaplint/transpiler-cli 2.10.61 → 2.10.63

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/bundle.js +313 -35
  2. package/package.json +4 -4
package/build/bundle.js CHANGED
@@ -3758,7 +3758,8 @@ class CorrespondingBody extends combi_1.Expression {
3758
3758
  const mapping = (0, combi_1.seq)("MAPPING", (0, combi_1.plus)((0, combi_1.seq)(_1.ComponentName, "=", component_chain_1.ComponentChain)));
3759
3759
  const baseParen = (0, combi_1.seq)("BASE", (0, combi_1.tok)(tokens_1.WParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));
3760
3760
  const discarding = (0, combi_1.ver)(version_1.Version.v751, "DISCARDING DUPLICATES");
3761
- return (0, combi_1.seq)((0, combi_1.optPrio)("DEEP"), (0, combi_1.optPrio)(baseParen), _1.Source, (0, combi_1.optPrio)(discarding), (0, combi_1.optPrio)(mapping), (0, combi_1.optPrio)("CHANGING CONTROL"), (0, combi_1.optPrio)((0, combi_1.seq)("EXCEPT", (0, combi_1.alt)((0, combi_1.plus)(_1.Field), "*"))));
3761
+ return (0, combi_1.seq)((0, combi_1.optPrio)("DEEP"), (0, combi_1.optPrio)(baseParen), _1.Source, (0, combi_1.optPrio)(discarding), (0, combi_1.optPrio)(mapping), (0, combi_1.optPrio)("CHANGING CONTROL"), (0, combi_1.optPrio)((0, combi_1.seq)("MAPPING FROM ENTITY", (0, combi_1.optPrio)("USING CONTROL"))), // todo, version something?
3762
+ (0, combi_1.optPrio)((0, combi_1.seq)("EXCEPT", (0, combi_1.alt)((0, combi_1.plus)(_1.Field), "*"))));
3762
3763
  }
3763
3764
  }
3764
3765
  exports.CorrespondingBody = CorrespondingBody;
@@ -7394,7 +7395,7 @@ const integer_1 = __webpack_require__(/*! ./integer */ "./node_modules/@abaplint
7394
7395
  const sql_function_input_1 = __webpack_require__(/*! ./sql_function_input */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function_input.js");
7395
7396
  class SQLFunction extends combi_1.Expression {
7396
7397
  getRunnable() {
7397
- const castTypes = (0, combi_1.altPrio)((0, combi_1.seq)("CHAR", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), (0, combi_1.seq)("DEC", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, ",", integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.seq)("NUMC", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), "FLTP", "INT2", "INT8");
7398
+ const castTypes = (0, combi_1.altPrio)((0, combi_1.seq)("CHAR", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), (0, combi_1.seq)("DEC", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, ",", integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.seq)("NUMC", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), "FLTP", "INT2", "INT4", "INT8");
7398
7399
  const commaParam = (0, combi_1.seq)(",", sql_function_input_1.SQLFunctionInput);
7399
7400
  // note: the function names are not keywords, they are usually in lower case
7400
7401
  const abs = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^abs$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.tok)(tokens_1.WParenRightW)));
@@ -8366,15 +8367,17 @@ class TypeStructure extends combi_1.Expression {
8366
8367
  const create = (0, combi_1.seq)("CREATE", (0, combi_1.alt)(_1.NamespaceSimpleName, _1.EntityAssociation));
8367
8368
  const update = (0, combi_1.seq)("UPDATE", (0, combi_1.alt)(_1.NamespaceSimpleName, _1.EntityAssociation));
8368
8369
  const readResult = (0, combi_1.seq)("READ RESULT", (0, combi_1.alt)(_1.NamespaceSimpleName, _1.EntityAssociation));
8370
+ const readLink = (0, combi_1.seq)("READ LINK", _1.EntityAssociation);
8369
8371
  const action = (0, combi_1.seq)("ACTION IMPORT", _1.Source);
8370
8372
  const permissionsRequest = (0, combi_1.seq)("PERMISSIONS REQUEST", _1.NamespaceSimpleName);
8371
8373
  const evt = (0, combi_1.seq)("EVENT", _1.EventName);
8372
8374
  const failedEarly = (0, combi_1.seq)("FAILED EARLY", _1.NamespaceSimpleName);
8373
8375
  const mappedEarly = (0, combi_1.seq)("MAPPED EARLY", _1.NamespaceSimpleName);
8374
8376
  const reportedEarly = (0, combi_1.seq)("REPORTED EARLY", _1.NamespaceSimpleName);
8375
- const structure = (0, combi_1.seq)("STRUCTURE FOR", (0, combi_1.altPrio)(hier, evt, create, update, action, permissionsRequest, readResult));
8377
+ const structure = (0, combi_1.seq)("STRUCTURE FOR", (0, combi_1.altPrio)(hier, evt, create, update, action, permissionsRequest, readLink, readResult));
8376
8378
  const response = (0, combi_1.seq)("RESPONSE FOR", (0, combi_1.altPrio)(failedEarly, mappedEarly, reportedEarly));
8377
- return (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(structure, response));
8379
+ const request = (0, combi_1.seq)("REQUEST FOR CHANGE", _1.NamespaceSimpleName);
8380
+ return (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(structure, response, request));
8378
8381
  }
8379
8382
  }
8380
8383
  exports.TypeStructure = TypeStructure;
@@ -10283,7 +10286,7 @@ class CommitEntities {
10283
10286
  const failed = (0, combi_1.seq)("FAILED", expressions_1.Target);
10284
10287
  const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
10285
10288
  const responses = (0, combi_1.seq)("RESPONSES", failed, reported);
10286
- 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, failed, reported)));
10289
+ 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))));
10287
10290
  return (0, combi_1.ver)(version_1.Version.v754, s);
10288
10291
  }
10289
10292
  }
@@ -13112,6 +13115,7 @@ __exportStar(__webpack_require__(/*! ./modify_entities */ "./node_modules/@abapl
13112
13115
  __exportStar(__webpack_require__(/*! ./read_entities */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_entities.js"), exports);
13113
13116
  __exportStar(__webpack_require__(/*! ./rollback_entities */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback_entities.js"), exports);
13114
13117
  __exportStar(__webpack_require__(/*! ./summary */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/summary.js"), exports);
13118
+ __exportStar(__webpack_require__(/*! ./input */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/input.js"), exports);
13115
13119
  __exportStar(__webpack_require__(/*! ./on_change */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/on_change.js"), exports);
13116
13120
  __exportStar(__webpack_require__(/*! ./at_user_command */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_user_command.js"), exports);
13117
13121
  __exportStar(__webpack_require__(/*! ./position */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/position.js"), exports);
@@ -13393,6 +13397,28 @@ exports.Initialization = Initialization;
13393
13397
 
13394
13398
  /***/ }),
13395
13399
 
13400
+ /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/input.js":
13401
+ /*!*************************************************************************************!*\
13402
+ !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/input.js ***!
13403
+ \*************************************************************************************/
13404
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
13405
+
13406
+ "use strict";
13407
+
13408
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
13409
+ exports.Input = void 0;
13410
+ const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
13411
+ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
13412
+ class Input {
13413
+ getMatcher() {
13414
+ return (0, combi_1.verNot)(version_1.Version.Cloud, "INPUT");
13415
+ }
13416
+ }
13417
+ exports.Input = Input;
13418
+ //# sourceMappingURL=input.js.map
13419
+
13420
+ /***/ }),
13421
+
13396
13422
  /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_database.js":
13397
13423
  /*!***********************************************************************************************!*\
13398
13424
  !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_database.js ***!
@@ -13863,20 +13889,18 @@ class MethodDef {
13863
13889
  const def = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)("DEFAULT", (0, combi_1.altPrio)("FAIL", "IGNORE")));
13864
13890
  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)));
13865
13891
  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)));
13866
- // todo, this is only from version something
13867
- const tableFunction = (0, combi_1.seq)("TABLE FUNCTION", expressions_1.NamespaceSimpleName);
13868
- // todo, this is only from version something
13869
- const ddl = "DDL OBJECT OPTIONS CDS SESSION CLIENT REQUIRED";
13870
13892
  const result = (0, combi_1.seq)("RESULT", expressions_1.MethodParamName);
13871
13893
  const link = (0, combi_1.seq)("LINK", expressions_1.MethodParamName);
13872
13894
  const full = (0, combi_1.seq)("FULL", expressions_1.MethodParamName);
13873
13895
  const modify = (0, combi_1.alt)((0, combi_1.seq)("FOR ACTION", expressions_1.TypeName, (0, combi_1.optPrio)(result)), (0, combi_1.seq)("FOR CREATE", (0, combi_1.alt)(expressions_1.TypeName, expressions_1.EntityAssociation)), (0, combi_1.seq)("FOR DELETE", expressions_1.TypeName), (0, combi_1.seq)("FOR UPDATE", expressions_1.TypeName));
13874
13896
  const forRead = (0, combi_1.seq)("FOR READ", (0, combi_1.alt)(expressions_1.TypeName, expressions_1.EntityAssociation), (0, combi_1.optPrio)(full), result, (0, combi_1.optPrio)(link));
13875
13897
  const forfunction = (0, combi_1.seq)("FOR FUNCTION", expressions_1.TypeName, result);
13876
- const behavior = (0, combi_1.altPrio)((0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY 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)((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)("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));
13898
+ const behavior = (0, combi_1.altPrio)("DDL OBJECT OPTIONS CDS SESSION CLIENT REQUIRED", // todo, this is only from version something
13899
+ (0, combi_1.seq)("TABLE FUNCTION", expressions_1.NamespaceSimpleName), // todo, this is only from version something
13900
+ (0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY 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)("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)((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)("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));
13877
13901
  // todo, this is only from version something
13878
13902
  const amdp = (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT CURRENT", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
13879
- 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", (0, combi_1.alt)(tableFunction, ddl, behavior)), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
13903
+ 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)));
13880
13904
  return ret;
13881
13905
  }
13882
13906
  }
@@ -13954,14 +13978,15 @@ class ModifyEntities {
13954
13978
  const withh = (0, combi_1.seq)("WITH", expressions_1.Source);
13955
13979
  const fieldsWith = (0, combi_1.seq)("FIELDS (", (0, combi_1.plus)(expressions_1.SimpleName), ")", withh);
13956
13980
  const by = (0, combi_1.seq)("BY", expressions_1.AssociationName);
13957
- const operation = (0, combi_1.alt)((0, combi_1.seq)("UPDATE SET FIELDS WITH", expressions_1.Source), (0, combi_1.seq)("CREATE SET FIELDS WITH", expressions_1.Source), (0, combi_1.seq)("UPDATE", fieldsWith), (0, combi_1.seq)("DELETE FROM", expressions_1.Source), (0, combi_1.seq)("CREATE", (0, combi_1.opt)(by), "FROM", expressions_1.Source), (0, combi_1.seq)("EXECUTE", expressions_1.SimpleName, "FROM", expressions_1.Source), (0, combi_1.seq)("CREATE", (0, combi_1.opt)(by), (0, combi_1.optPrio)("AUTO FILL CID"), (0, combi_1.altPrio)(withh, fieldsWith)));
13981
+ const relating = (0, combi_1.seq)("RELATING TO", expressions_1.NamespaceSimpleName, "BY", expressions_1.NamespaceSimpleName);
13982
+ const operation = (0, combi_1.alt)((0, combi_1.seq)("UPDATE SET FIELDS WITH", expressions_1.Source), (0, combi_1.seq)("CREATE SET FIELDS WITH", expressions_1.Source), (0, combi_1.seq)("UPDATE", fieldsWith), (0, combi_1.seq)("DELETE FROM", expressions_1.Source), (0, combi_1.seq)("UPDATE FROM", expressions_1.Source, relating), (0, combi_1.seq)("CREATE", (0, combi_1.opt)(by), "FROM", expressions_1.Source, (0, combi_1.opt)(relating)), (0, combi_1.seq)("EXECUTE", expressions_1.SimpleName, "FROM", expressions_1.Source), (0, combi_1.seq)("CREATE", (0, combi_1.opt)(by), (0, combi_1.optPrio)("AUTO FILL CID"), (0, combi_1.altPrio)(withh, fieldsWith)));
13958
13983
  const failed = (0, combi_1.seq)("FAILED", expressions_1.Target);
13959
13984
  const result = (0, combi_1.seq)("RESULT", expressions_1.Target);
13960
13985
  const mapped = (0, combi_1.seq)("MAPPED", expressions_1.Target);
13961
13986
  const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
13962
13987
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
13963
13988
  const execute = (0, combi_1.seq)("EXECUTE", expressions_1.NamespaceSimpleName);
13964
- const entities = (0, combi_1.seq)("ENTITIES OF", expressions_1.NamespaceSimpleName, (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.plusPrio)((0, combi_1.seq)("ENTITY", expressions_1.SimpleName, (0, combi_1.plus)(operation))), (0, combi_1.optPrio)((0, combi_1.per)(failed, result, mapped, reported)));
13989
+ const entities = (0, combi_1.seq)((0, combi_1.optPrio)("AUGMENTING"), "ENTITIES OF", expressions_1.NamespaceSimpleName, (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.plusPrio)((0, combi_1.seq)("ENTITY", expressions_1.SimpleName, (0, combi_1.plus)(operation))), (0, combi_1.optPrio)((0, combi_1.per)(failed, result, mapped, reported)));
13965
13990
  const entity = (0, combi_1.seq)("ENTITY", expressions_1.NamespaceSimpleName, execute, from, mapped, failed, reported);
13966
13991
  return (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("MODIFY", (0, combi_1.alt)(entities, entity)));
13967
13992
  }
@@ -22309,6 +22334,13 @@ class TypeUtils {
22309
22334
  }
22310
22335
  return ret;
22311
22336
  }
22337
+ isConvable(source, target) {
22338
+ if (source instanceof basic_1.TableType && target instanceof basic_1.TableType) {
22339
+ // table key conversion, eg DEFAULT to EMPTY
22340
+ return this.isAssignable(source.getRowType(), target.getRowType());
22341
+ }
22342
+ return this.isAssignable(source, target);
22343
+ }
22312
22344
  isCastable(_source, _target) {
22313
22345
  // todo
22314
22346
  return true;
@@ -23198,6 +23230,9 @@ class BasicTypes {
23198
23230
  if (found && this.isOccurs(node)) {
23199
23231
  found = new Types.TableType(found, { withHeader: text.includes("WITH HEADER LINE"), keyType: Types.TableKeyType.default }, qualifiedName);
23200
23232
  }
23233
+ else if (text.endsWith(" WITH HEADER LINE") && found instanceof Types.TableType) {
23234
+ found = new Types.TableType(found.getRowType(), { withHeader: true, keyType: Types.TableKeyType.default }, qualifiedName);
23235
+ }
23201
23236
  }
23202
23237
  else if (text.startsWith("TYPE LINE OF ")) {
23203
23238
  const sub = node.findFirstExpression(Expressions.TypeName);
@@ -26761,10 +26796,12 @@ class Select {
26761
26796
  var _a, _b;
26762
26797
  let expr = undefined;
26763
26798
  const ret = [];
26764
- expr = node.findFirstExpression(Expressions.SQLFieldList);
26765
- if (expr === undefined) {
26799
+ if (node.get() instanceof Expressions.SelectLoop) {
26766
26800
  expr = node.findFirstExpression(Expressions.SQLFieldListLoop);
26767
26801
  }
26802
+ else {
26803
+ expr = node.findFirstExpression(Expressions.SQLFieldList);
26804
+ }
26768
26805
  if (((_a = expr === null || expr === void 0 ? void 0 : expr.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Dynamic) {
26769
26806
  dynamic_1.Dynamic.runSyntax(expr.getFirstChild(), input);
26770
26807
  }
@@ -26929,7 +26966,7 @@ class Source {
26929
26966
  {
26930
26967
  const foundType = this.determineType(node, input, targetType);
26931
26968
  const bodyType = conv_body_1.ConvBody.runSyntax(node.findDirectExpression(Expressions.ConvBody), input);
26932
- if (new _type_utils_1.TypeUtils(input.scope).isAssignable(foundType, bodyType) === false) {
26969
+ if (new _type_utils_1.TypeUtils(input.scope).isConvable(foundType, bodyType) === false) {
26933
26970
  const message = `CONV: Types not compatible, ${foundType === null || foundType === void 0 ? void 0 : foundType.constructor.name}, ${bodyType === null || bodyType === void 0 ? void 0 : bodyType.constructor.name}`;
26934
26971
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
26935
26972
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
@@ -32257,7 +32294,9 @@ class ReadTable {
32257
32294
  }
32258
32295
  const type = source_1.Source.runSyntax(s, input);
32259
32296
  if (s === afterKey) {
32260
- if (type instanceof basic_1.StringType || type instanceof basic_1.TableType || type instanceof basic_1.ObjectReferenceType) {
32297
+ if (type instanceof basic_1.StringType
32298
+ || (type instanceof basic_1.TableType && type.isWithHeader() === false)
32299
+ || type instanceof basic_1.ObjectReferenceType) {
32261
32300
  const message = "Key cannot be string or table or reference";
32262
32301
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, s.getFirstToken(), message));
32263
32302
  return;
@@ -38401,6 +38440,7 @@ class ClassDefinition extends _identifier_1.Identifier {
38401
38440
  this.abstract = (def === null || def === void 0 ? void 0 : def.findDirectTokenByText("ABSTRACT")) !== undefined;
38402
38441
  // perform checks after everything has been initialized
38403
38442
  this.checkMethodsFromSuperClasses(input.scope);
38443
+ this.checkMethodNameLength();
38404
38444
  }
38405
38445
  getFriends() {
38406
38446
  return this.friends;
@@ -38453,6 +38493,14 @@ class ClassDefinition extends _identifier_1.Identifier {
38453
38493
  const name = token === null || token === void 0 ? void 0 : token.getStr();
38454
38494
  return name;
38455
38495
  }
38496
+ checkMethodNameLength() {
38497
+ for (const m of this.methodDefs.getAll()) {
38498
+ if (m.getName().length > 30 && m.getName().includes("~") === false) {
38499
+ const message = `Method name "${m.getName()}" is too long, maximum length is 30 characters`;
38500
+ throw new Error(message);
38501
+ }
38502
+ }
38503
+ }
38456
38504
  checkMethodsFromSuperClasses(scope) {
38457
38505
  var _a;
38458
38506
  let sup = this.getSuperClass();
@@ -38892,6 +38940,8 @@ class InterfaceDefinition extends _identifier_1.Identifier {
38892
38940
  input.scope.push(_scope_type_1.ScopeType.Interface, name.getStr(), node.getFirstToken().getStart(), input.filename);
38893
38941
  this.parse(input, node);
38894
38942
  input.scope.pop(node.getLastToken().getEnd());
38943
+ // perform checks after everything has been initialized
38944
+ this.checkMethodNameLength();
38895
38945
  }
38896
38946
  getSuperClass() {
38897
38947
  return undefined;
@@ -38921,6 +38971,14 @@ class InterfaceDefinition extends _identifier_1.Identifier {
38921
38971
  return this.methodDefinitions;
38922
38972
  }
38923
38973
  /////////////////
38974
+ checkMethodNameLength() {
38975
+ for (const m of this.methodDefinitions.getAll()) {
38976
+ if (m.getName().length > 30) {
38977
+ const message = `Method name "${m.getName()}" is too long, maximum length is 30 characters`;
38978
+ throw new Error(message);
38979
+ }
38980
+ }
38981
+ }
38924
38982
  checkInterfacesExists(input, node) {
38925
38983
  var _a;
38926
38984
  for (const i of node.findAllStatements(Statements.InterfaceDef)) {
@@ -39729,7 +39787,7 @@ class Result {
39729
39787
  add(text, row, col, mode) {
39730
39788
  if (text.length > 0) {
39731
39789
  if (mode === Mode.SingleLineComment) {
39732
- this.result.push(new tokens_1.Comment(new position_1.Position(row, col), text));
39790
+ this.result.push(new tokens_1.Comment(new position_1.Position(row, col - text.length), text));
39733
39791
  }
39734
39792
  else {
39735
39793
  this.result.push(new tokens_1.Identifier(new position_1.Position(row, col), text));
@@ -40039,7 +40097,7 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
40039
40097
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
40040
40098
  class CDSAnnotationSimple extends combi_1.Expression {
40041
40099
  getRunnable() {
40042
- const value = (0, combi_1.alt)(_1.CDSString, "true", "false", (0, combi_1.regex)(/^\d+$/), (0, combi_1.seq)((0, combi_1.regex)(/^\d+$/), ".", (0, combi_1.regex)(/^\d+$/)), (0, combi_1.regex)(/^#[\w_]+$/));
40100
+ const value = (0, combi_1.alt)(_1.CDSString, "true", "false", (0, combi_1.regex)(/^\d+$/), (0, combi_1.seq)((0, combi_1.regex)(/^\d+$/), ".", (0, combi_1.regex)(/^\d+$/)), (0, combi_1.seq)("#", "(", (0, combi_1.regex)(/^[\w_]+$/), ")"), (0, combi_1.regex)(/^#[\w_]+$/));
40043
40101
  return value;
40044
40102
  }
40045
40103
  }
@@ -40290,7 +40348,8 @@ const cds_type_1 = __webpack_require__(/*! ./cds_type */ "./node_modules/@abapli
40290
40348
  class CDSDefineCustom extends combi_1.Expression {
40291
40349
  getRunnable() {
40292
40350
  const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)((0, combi_1.str)("KEY")), cds_name_1.CDSName, ":", cds_type_1.CDSType, ";");
40293
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("DEFINE"), (0, combi_1.opt)((0, combi_1.str)("ROOT")), (0, combi_1.str)("CUSTOM ENTITY"), cds_name_1.CDSName, (0, combi_1.str)("{"), (0, combi_1.plus)(field), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
40351
+ const composition = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), cds_name_1.CDSName, ":", _1.CDSComposition, ";");
40352
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("DEFINE"), (0, combi_1.opt)((0, combi_1.str)("ROOT")), (0, combi_1.str)("CUSTOM ENTITY"), cds_name_1.CDSName, (0, combi_1.str)("{"), (0, combi_1.plus)((0, combi_1.alt)(field, composition)), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
40294
40353
  }
40295
40354
  }
40296
40355
  exports.CDSDefineCustom = CDSDefineCustom;
@@ -40802,7 +40861,7 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
40802
40861
  class CDSString extends combi_1.Expression {
40803
40862
  getRunnable() {
40804
40863
  // https://stackoverflow.com/a/57754227
40805
- return (0, combi_1.regex)(/^'[A-Za-zÀ-ž\u0370-\u03FF\u0400-\u04FF: -_]*'$/);
40864
+ return (0, combi_1.regex)(/^'[A-Za-zÀ-ž\u0370-\u03FF\u0400-\u04FF:\| -_]*'$/);
40806
40865
  }
40807
40866
  }
40808
40867
  exports.CDSString = CDSString;
@@ -46009,6 +46068,37 @@ exports.BusinessCatalogAppAssignment = BusinessCatalogAppAssignment;
46009
46068
 
46010
46069
  /***/ }),
46011
46070
 
46071
+ /***/ "./node_modules/@abaplint/core/build/src/objects/business_configuration_maintenance_object.js":
46072
+ /*!****************************************************************************************************!*\
46073
+ !*** ./node_modules/@abaplint/core/build/src/objects/business_configuration_maintenance_object.js ***!
46074
+ \****************************************************************************************************/
46075
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
46076
+
46077
+ "use strict";
46078
+
46079
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
46080
+ exports.BusinessConfigurationMaintenanceObject = void 0;
46081
+ const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js");
46082
+ class BusinessConfigurationMaintenanceObject extends _abstract_object_1.AbstractObject {
46083
+ getType() {
46084
+ return "SMBC";
46085
+ }
46086
+ getAllowedNaming() {
46087
+ return {
46088
+ maxLength: 60, // todo
46089
+ allowNamespace: true,
46090
+ };
46091
+ }
46092
+ getDescription() {
46093
+ // todo
46094
+ return undefined;
46095
+ }
46096
+ }
46097
+ exports.BusinessConfigurationMaintenanceObject = BusinessConfigurationMaintenanceObject;
46098
+ //# sourceMappingURL=business_configuration_maintenance_object.js.map
46099
+
46100
+ /***/ }),
46101
+
46012
46102
  /***/ "./node_modules/@abaplint/core/build/src/objects/business_configuration_set.js":
46013
46103
  /*!*************************************************************************************!*\
46014
46104
  !*** ./node_modules/@abaplint/core/build/src/objects/business_configuration_set.js ***!
@@ -46623,6 +46713,37 @@ exports.ConceptsOfPackage = ConceptsOfPackage;
46623
46713
 
46624
46714
  /***/ }),
46625
46715
 
46716
+ /***/ "./node_modules/@abaplint/core/build/src/objects/custom_data_browser_object.js":
46717
+ /*!*************************************************************************************!*\
46718
+ !*** ./node_modules/@abaplint/core/build/src/objects/custom_data_browser_object.js ***!
46719
+ \*************************************************************************************/
46720
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
46721
+
46722
+ "use strict";
46723
+
46724
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
46725
+ exports.CustomDataBrowserObject = void 0;
46726
+ const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js");
46727
+ class CustomDataBrowserObject extends _abstract_object_1.AbstractObject {
46728
+ getType() {
46729
+ return "CDBO";
46730
+ }
46731
+ getAllowedNaming() {
46732
+ return {
46733
+ maxLength: 32,
46734
+ allowNamespace: true,
46735
+ };
46736
+ }
46737
+ getDescription() {
46738
+ // todo
46739
+ return undefined;
46740
+ }
46741
+ }
46742
+ exports.CustomDataBrowserObject = CustomDataBrowserObject;
46743
+ //# sourceMappingURL=custom_data_browser_object.js.map
46744
+
46745
+ /***/ }),
46746
+
46626
46747
  /***/ "./node_modules/@abaplint/core/build/src/objects/customer_enhancement_project.js":
46627
46748
  /*!***************************************************************************************!*\
46628
46749
  !*** ./node_modules/@abaplint/core/build/src/objects/customer_enhancement_project.js ***!
@@ -48026,6 +48147,37 @@ exports.GatewayModelMetadata = GatewayModelMetadata;
48026
48147
 
48027
48148
  /***/ }),
48028
48149
 
48150
+ /***/ "./node_modules/@abaplint/core/build/src/objects/gateway_odata_group_and_assignment.js":
48151
+ /*!*********************************************************************************************!*\
48152
+ !*** ./node_modules/@abaplint/core/build/src/objects/gateway_odata_group_and_assignment.js ***!
48153
+ \*********************************************************************************************/
48154
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
48155
+
48156
+ "use strict";
48157
+
48158
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
48159
+ exports.GatewayODataGroupAndAssignment = void 0;
48160
+ const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js");
48161
+ class GatewayODataGroupAndAssignment extends _abstract_object_1.AbstractObject {
48162
+ getType() {
48163
+ return "G4BA";
48164
+ }
48165
+ getAllowedNaming() {
48166
+ return {
48167
+ maxLength: 32,
48168
+ allowNamespace: true,
48169
+ };
48170
+ }
48171
+ getDescription() {
48172
+ // todo
48173
+ return undefined;
48174
+ }
48175
+ }
48176
+ exports.GatewayODataGroupAndAssignment = GatewayODataGroupAndAssignment;
48177
+ //# sourceMappingURL=gateway_odata_group_and_assignment.js.map
48178
+
48179
+ /***/ }),
48180
+
48029
48181
  /***/ "./node_modules/@abaplint/core/build/src/objects/gateway_project.js":
48030
48182
  /*!**************************************************************************!*\
48031
48183
  !*** ./node_modules/@abaplint/core/build/src/objects/gateway_project.js ***!
@@ -48638,6 +48790,7 @@ __exportStar(__webpack_require__(/*! ./bsp_application */ "./node_modules/@abapl
48638
48790
  __exportStar(__webpack_require__(/*! ./business_add_in_implementation */ "./node_modules/@abaplint/core/build/src/objects/business_add_in_implementation.js"), exports);
48639
48791
  __exportStar(__webpack_require__(/*! ./business_catalog_app_assignment */ "./node_modules/@abaplint/core/build/src/objects/business_catalog_app_assignment.js"), exports);
48640
48792
  __exportStar(__webpack_require__(/*! ./business_catalog */ "./node_modules/@abaplint/core/build/src/objects/business_catalog.js"), exports);
48793
+ __exportStar(__webpack_require__(/*! ./business_configuration_maintenance_object */ "./node_modules/@abaplint/core/build/src/objects/business_configuration_maintenance_object.js"), exports);
48641
48794
  __exportStar(__webpack_require__(/*! ./business_configuration_set */ "./node_modules/@abaplint/core/build/src/objects/business_configuration_set.js"), exports);
48642
48795
  __exportStar(__webpack_require__(/*! ./business_function_assignment */ "./node_modules/@abaplint/core/build/src/objects/business_function_assignment.js"), exports);
48643
48796
  __exportStar(__webpack_require__(/*! ./business_function_set_assignment */ "./node_modules/@abaplint/core/build/src/objects/business_function_set_assignment.js"), exports);
@@ -48654,6 +48807,7 @@ __exportStar(__webpack_require__(/*! ./communication_scenario */ "./node_modules
48654
48807
  __exportStar(__webpack_require__(/*! ./composite_enhancement_implementation */ "./node_modules/@abaplint/core/build/src/objects/composite_enhancement_implementation.js"), exports);
48655
48808
  __exportStar(__webpack_require__(/*! ./composite_enhancement_spot */ "./node_modules/@abaplint/core/build/src/objects/composite_enhancement_spot.js"), exports);
48656
48809
  __exportStar(__webpack_require__(/*! ./concepts_of_package */ "./node_modules/@abaplint/core/build/src/objects/concepts_of_package.js"), exports);
48810
+ __exportStar(__webpack_require__(/*! ./custom_data_browser_object */ "./node_modules/@abaplint/core/build/src/objects/custom_data_browser_object.js"), exports);
48657
48811
  __exportStar(__webpack_require__(/*! ./customer_enhancement_project */ "./node_modules/@abaplint/core/build/src/objects/customer_enhancement_project.js"), exports);
48658
48812
  __exportStar(__webpack_require__(/*! ./customizing_attributes */ "./node_modules/@abaplint/core/build/src/objects/customizing_attributes.js"), exports);
48659
48813
  __exportStar(__webpack_require__(/*! ./customizing_img_activity */ "./node_modules/@abaplint/core/build/src/objects/customizing_img_activity.js"), exports);
@@ -48681,6 +48835,7 @@ __exportStar(__webpack_require__(/*! ./format_type */ "./node_modules/@abaplint/
48681
48835
  __exportStar(__webpack_require__(/*! ./function_group */ "./node_modules/@abaplint/core/build/src/objects/function_group.js"), exports);
48682
48836
  __exportStar(__webpack_require__(/*! ./gateway_model_metadata */ "./node_modules/@abaplint/core/build/src/objects/gateway_model_metadata.js"), exports);
48683
48837
  __exportStar(__webpack_require__(/*! ./gateway_model */ "./node_modules/@abaplint/core/build/src/objects/gateway_model.js"), exports);
48838
+ __exportStar(__webpack_require__(/*! ./gateway_odata_group_and_assignment */ "./node_modules/@abaplint/core/build/src/objects/gateway_odata_group_and_assignment.js"), exports);
48684
48839
  __exportStar(__webpack_require__(/*! ./gateway_project */ "./node_modules/@abaplint/core/build/src/objects/gateway_project.js"), exports);
48685
48840
  __exportStar(__webpack_require__(/*! ./gateway_service_groups_metadata */ "./node_modules/@abaplint/core/build/src/objects/gateway_service_groups_metadata.js"), exports);
48686
48841
  __exportStar(__webpack_require__(/*! ./gateway_service */ "./node_modules/@abaplint/core/build/src/objects/gateway_service.js"), exports);
@@ -48701,6 +48856,7 @@ __exportStar(__webpack_require__(/*! ./inbound_service */ "./node_modules/@abapl
48701
48856
  __exportStar(__webpack_require__(/*! ./info_area */ "./node_modules/@abaplint/core/build/src/objects/info_area.js"), exports);
48702
48857
  __exportStar(__webpack_require__(/*! ./info_object */ "./node_modules/@abaplint/core/build/src/objects/info_object.js"), exports);
48703
48858
  __exportStar(__webpack_require__(/*! ./interface */ "./node_modules/@abaplint/core/build/src/objects/interface.js"), exports);
48859
+ __exportStar(__webpack_require__(/*! ./knowledge_transfer_document */ "./node_modules/@abaplint/core/build/src/objects/knowledge_transfer_document.js"), exports);
48704
48860
  __exportStar(__webpack_require__(/*! ./lock_object */ "./node_modules/@abaplint/core/build/src/objects/lock_object.js"), exports);
48705
48861
  __exportStar(__webpack_require__(/*! ./maintenance_and_transport_object */ "./node_modules/@abaplint/core/build/src/objects/maintenance_and_transport_object.js"), exports);
48706
48862
  __exportStar(__webpack_require__(/*! ./message_class */ "./node_modules/@abaplint/core/build/src/objects/message_class.js"), exports);
@@ -48736,6 +48892,7 @@ __exportStar(__webpack_require__(/*! ./object_characteristic */ "./node_modules/
48736
48892
  __exportStar(__webpack_require__(/*! ./outbound_service */ "./node_modules/@abaplint/core/build/src/objects/outbound_service.js"), exports);
48737
48893
  __exportStar(__webpack_require__(/*! ./package_interface */ "./node_modules/@abaplint/core/build/src/objects/package_interface.js"), exports);
48738
48894
  __exportStar(__webpack_require__(/*! ./package */ "./node_modules/@abaplint/core/build/src/objects/package.js"), exports);
48895
+ __exportStar(__webpack_require__(/*! ./page_format */ "./node_modules/@abaplint/core/build/src/objects/page_format.js"), exports);
48739
48896
  __exportStar(__webpack_require__(/*! ./parameter */ "./node_modules/@abaplint/core/build/src/objects/parameter.js"), exports);
48740
48897
  __exportStar(__webpack_require__(/*! ./personalization_object */ "./node_modules/@abaplint/core/build/src/objects/personalization_object.js"), exports);
48741
48898
  __exportStar(__webpack_require__(/*! ./program */ "./node_modules/@abaplint/core/build/src/objects/program.js"), exports);
@@ -48928,6 +49085,37 @@ exports.Interface = Interface;
48928
49085
 
48929
49086
  /***/ }),
48930
49087
 
49088
+ /***/ "./node_modules/@abaplint/core/build/src/objects/knowledge_transfer_document.js":
49089
+ /*!**************************************************************************************!*\
49090
+ !*** ./node_modules/@abaplint/core/build/src/objects/knowledge_transfer_document.js ***!
49091
+ \**************************************************************************************/
49092
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
49093
+
49094
+ "use strict";
49095
+
49096
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
49097
+ exports.KnowledgeTransferDocument = void 0;
49098
+ const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js");
49099
+ class KnowledgeTransferDocument extends _abstract_object_1.AbstractObject {
49100
+ getType() {
49101
+ return "SKTD";
49102
+ }
49103
+ getAllowedNaming() {
49104
+ return {
49105
+ maxLength: 60, // todo
49106
+ allowNamespace: true,
49107
+ };
49108
+ }
49109
+ getDescription() {
49110
+ // todo
49111
+ return undefined;
49112
+ }
49113
+ }
49114
+ exports.KnowledgeTransferDocument = KnowledgeTransferDocument;
49115
+ //# sourceMappingURL=knowledge_transfer_document.js.map
49116
+
49117
+ /***/ }),
49118
+
48931
49119
  /***/ "./node_modules/@abaplint/core/build/src/objects/lock_object.js":
48932
49120
  /*!**********************************************************************!*\
48933
49121
  !*** ./node_modules/@abaplint/core/build/src/objects/lock_object.js ***!
@@ -50268,6 +50456,37 @@ exports.PackageInterface = PackageInterface;
50268
50456
 
50269
50457
  /***/ }),
50270
50458
 
50459
+ /***/ "./node_modules/@abaplint/core/build/src/objects/page_format.js":
50460
+ /*!**********************************************************************!*\
50461
+ !*** ./node_modules/@abaplint/core/build/src/objects/page_format.js ***!
50462
+ \**********************************************************************/
50463
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
50464
+
50465
+ "use strict";
50466
+
50467
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
50468
+ exports.PageFormat = void 0;
50469
+ const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js");
50470
+ class PageFormat extends _abstract_object_1.AbstractObject {
50471
+ getType() {
50472
+ return "SPPF";
50473
+ }
50474
+ getAllowedNaming() {
50475
+ return {
50476
+ maxLength: 30,
50477
+ allowNamespace: true,
50478
+ };
50479
+ }
50480
+ getDescription() {
50481
+ // todo
50482
+ return undefined;
50483
+ }
50484
+ }
50485
+ exports.PageFormat = PageFormat;
50486
+ //# sourceMappingURL=page_format.js.map
50487
+
50488
+ /***/ }),
50489
+
50271
50490
  /***/ "./node_modules/@abaplint/core/build/src/objects/parameter.js":
50272
50491
  /*!********************************************************************!*\
50273
50492
  !*** ./node_modules/@abaplint/core/build/src/objects/parameter.js ***!
@@ -53262,7 +53481,7 @@ class Registry {
53262
53481
  }
53263
53482
  static abaplintVersion() {
53264
53483
  // magic, see build script "version.sh"
53265
- return "2.113.131";
53484
+ return "2.113.136";
53266
53485
  }
53267
53486
  getDDICReferences() {
53268
53487
  return this.ddicReferences;
@@ -66234,6 +66453,7 @@ ENDIF.
66234
66453
  return issues;
66235
66454
  }
66236
66455
  analyze(file, cond) {
66456
+ var _a, _b;
66237
66457
  const issues = [];
66238
66458
  let comparator = "";
66239
66459
  let found = false;
@@ -66259,6 +66479,17 @@ ENDIF.
66259
66479
  found = true; // dont report for the simple case that contains quick fixes
66260
66480
  }
66261
66481
  }
66482
+ else if (c instanceof nodes_1.ExpressionNode
66483
+ && c.get() instanceof Expressions.Compare
66484
+ && ((_a = c.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Source
66485
+ && c.getChildren().length === 3) {
66486
+ const concat = (_b = c.getFirstChild()) === null || _b === void 0 ? void 0 : _b.concatTokens();
66487
+ if ((concat === null || concat === void 0 ? void 0 : concat.startsWith("(")) && concat.endsWith(")")) {
66488
+ const message = "Parentheses can be removed";
66489
+ const issue = issue_1.Issue.atToken(file, c.getFirstToken(), message, this.getMetadata().key, this.conf.severity);
66490
+ issues.push(issue);
66491
+ }
66492
+ }
66262
66493
  if (comparator === "") {
66263
66494
  comparator = current;
66264
66495
  }
@@ -84480,7 +84711,6 @@ __exportStar(__webpack_require__(/*! ./close_dataset */ "./node_modules/@abaplin
84480
84711
  __exportStar(__webpack_require__(/*! ./collect */ "./node_modules/@abaplint/transpiler/build/src/statements/collect.js"), exports);
84481
84712
  __exportStar(__webpack_require__(/*! ./commit */ "./node_modules/@abaplint/transpiler/build/src/statements/commit.js"), exports);
84482
84713
  __exportStar(__webpack_require__(/*! ./compute */ "./node_modules/@abaplint/transpiler/build/src/statements/compute.js"), exports);
84483
- __exportStar(__webpack_require__(/*! ./program */ "./node_modules/@abaplint/transpiler/build/src/statements/program.js"), exports);
84484
84714
  __exportStar(__webpack_require__(/*! ./concatenate */ "./node_modules/@abaplint/transpiler/build/src/statements/concatenate.js"), exports);
84485
84715
  __exportStar(__webpack_require__(/*! ./condense */ "./node_modules/@abaplint/transpiler/build/src/statements/condense.js"), exports);
84486
84716
  __exportStar(__webpack_require__(/*! ./constant */ "./node_modules/@abaplint/transpiler/build/src/statements/constant.js"), exports);
@@ -84492,8 +84722,8 @@ __exportStar(__webpack_require__(/*! ./data */ "./node_modules/@abaplint/transpi
84492
84722
  __exportStar(__webpack_require__(/*! ./delete_database */ "./node_modules/@abaplint/transpiler/build/src/statements/delete_database.js"), exports);
84493
84723
  __exportStar(__webpack_require__(/*! ./delete_dataset */ "./node_modules/@abaplint/transpiler/build/src/statements/delete_dataset.js"), exports);
84494
84724
  __exportStar(__webpack_require__(/*! ./delete_internal */ "./node_modules/@abaplint/transpiler/build/src/statements/delete_internal.js"), exports);
84495
- __exportStar(__webpack_require__(/*! ./delete_report */ "./node_modules/@abaplint/transpiler/build/src/statements/delete_report.js"), exports);
84496
84725
  __exportStar(__webpack_require__(/*! ./delete_memory */ "./node_modules/@abaplint/transpiler/build/src/statements/delete_memory.js"), exports);
84726
+ __exportStar(__webpack_require__(/*! ./delete_report */ "./node_modules/@abaplint/transpiler/build/src/statements/delete_report.js"), exports);
84497
84727
  __exportStar(__webpack_require__(/*! ./delete_textpool */ "./node_modules/@abaplint/transpiler/build/src/statements/delete_textpool.js"), exports);
84498
84728
  __exportStar(__webpack_require__(/*! ./describe */ "./node_modules/@abaplint/transpiler/build/src/statements/describe.js"), exports);
84499
84729
  __exportStar(__webpack_require__(/*! ./do */ "./node_modules/@abaplint/transpiler/build/src/statements/do.js"), exports);
@@ -84554,8 +84784,10 @@ __exportStar(__webpack_require__(/*! ./open_dataset */ "./node_modules/@abaplint
84554
84784
  __exportStar(__webpack_require__(/*! ./overlay */ "./node_modules/@abaplint/transpiler/build/src/statements/overlay.js"), exports);
84555
84785
  __exportStar(__webpack_require__(/*! ./parameter */ "./node_modules/@abaplint/transpiler/build/src/statements/parameter.js"), exports);
84556
84786
  __exportStar(__webpack_require__(/*! ./perform */ "./node_modules/@abaplint/transpiler/build/src/statements/perform.js"), exports);
84787
+ __exportStar(__webpack_require__(/*! ./program */ "./node_modules/@abaplint/transpiler/build/src/statements/program.js"), exports);
84557
84788
  __exportStar(__webpack_require__(/*! ./raise_event */ "./node_modules/@abaplint/transpiler/build/src/statements/raise_event.js"), exports);
84558
84789
  __exportStar(__webpack_require__(/*! ./raise */ "./node_modules/@abaplint/transpiler/build/src/statements/raise.js"), exports);
84790
+ __exportStar(__webpack_require__(/*! ./ranges */ "./node_modules/@abaplint/transpiler/build/src/statements/ranges.js"), exports);
84559
84791
  __exportStar(__webpack_require__(/*! ./read_dataset */ "./node_modules/@abaplint/transpiler/build/src/statements/read_dataset.js"), exports);
84560
84792
  __exportStar(__webpack_require__(/*! ./read_line */ "./node_modules/@abaplint/transpiler/build/src/statements/read_line.js"), exports);
84561
84793
  __exportStar(__webpack_require__(/*! ./read_report */ "./node_modules/@abaplint/transpiler/build/src/statements/read_report.js"), exports);
@@ -85816,6 +86048,47 @@ exports.RaiseEventTranspiler = RaiseEventTranspiler;
85816
86048
 
85817
86049
  /***/ }),
85818
86050
 
86051
+ /***/ "./node_modules/@abaplint/transpiler/build/src/statements/ranges.js":
86052
+ /*!**************************************************************************!*\
86053
+ !*** ./node_modules/@abaplint/transpiler/build/src/statements/ranges.js ***!
86054
+ \**************************************************************************/
86055
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
86056
+
86057
+ "use strict";
86058
+
86059
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
86060
+ exports.RangesTranspiler = void 0;
86061
+ const abaplint = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
86062
+ const traversal_1 = __webpack_require__(/*! ../traversal */ "./node_modules/@abaplint/transpiler/build/src/traversal.js");
86063
+ const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
86064
+ const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
86065
+ class RangesTranspiler {
86066
+ transpile(node, traversal) {
86067
+ const token = node.findFirstExpression(abaplint.Expressions.SimpleName)?.getFirstToken();
86068
+ if (token === undefined) {
86069
+ throw new Error("RangesTranspiler, token not found");
86070
+ }
86071
+ const scope = traversal.findCurrentScopeByToken(token);
86072
+ if (scope === undefined) {
86073
+ throw new Error("RangesTranspiler, scope not found: " + node.concatTokens());
86074
+ }
86075
+ const found = scope.findVariable(token.getStr());
86076
+ if (found === undefined) {
86077
+ throw new Error("RangesTranspiler, var not found, \"" + token.getStr() + "\", " + traversal.getFilename() + ", line: " + token.getRow());
86078
+ }
86079
+ const ret = new chunk_1.Chunk()
86080
+ .appendString("let ")
86081
+ .appendString(traversal_1.Traversal.prefixVariable(traversal_1.Traversal.escapeNamespace(found.getName().toLowerCase())))
86082
+ .appendString(" = " + new transpile_types_1.TranspileTypes().toType(found.getType()))
86083
+ .appendString(";");
86084
+ return ret;
86085
+ }
86086
+ }
86087
+ exports.RangesTranspiler = RangesTranspiler;
86088
+ //# sourceMappingURL=ranges.js.map
86089
+
86090
+ /***/ }),
86091
+
85819
86092
  /***/ "./node_modules/@abaplint/transpiler/build/src/statements/read_dataset.js":
85820
86093
  /*!********************************************************************************!*\
85821
86094
  !*** ./node_modules/@abaplint/transpiler/build/src/statements/read_dataset.js ***!
@@ -88463,7 +88736,14 @@ class SelectTranspiler {
88463
88736
  }
88464
88737
  const concat = selectStatement.concatTokens().toUpperCase();
88465
88738
  const from = selectStatement.findFirstExpression(abaplint.Expressions.SQLFromSource)?.concatTokens().toUpperCase();
88466
- const intoName = new expressions_1.SQLTargetTranspiler().transpile(selectStatement.findFirstExpression(abaplint.Expressions.SQLTarget), traversal).getCode();
88739
+ const sTarget = selectStatement.findFirstExpression(abaplint.Expressions.SQLTarget);
88740
+ let intoName = "";
88741
+ if (sTarget === undefined) {
88742
+ intoName = from.toLowerCase();
88743
+ }
88744
+ else {
88745
+ intoName = new expressions_1.SQLTargetTranspiler().transpile(sTarget, traversal).getCode();
88746
+ }
88467
88747
  // note: this implementation SELECTs everything into memory, which might be bad, and sometimes not correct
88468
88748
  const targetName = unique_identifier_1.UniqueIdentifier.get();
88469
88749
  const loopName = unique_identifier_1.UniqueIdentifier.get();
@@ -101108,8 +101388,8 @@ class Progress {
101108
101388
  this.bar.render();
101109
101389
  }
101110
101390
  }
101111
- function loadLib(config) {
101112
- const files = [];
101391
+ async function loadLib(config) {
101392
+ let files = [];
101113
101393
  if (config.lib && config.lib !== "" && config.libs === undefined) {
101114
101394
  config.libs = [{ url: config.lib }];
101115
101395
  }
@@ -101126,7 +101406,6 @@ function loadLib(config) {
101126
101406
  childProcess.execSync("git clone --quiet --depth 1 " + l.url + " .", { cwd: dir, stdio: "inherit" });
101127
101407
  cleanupFolder = true;
101128
101408
  }
101129
- let count = 0;
101130
101409
  let patterns = ["/src/**"];
101131
101410
  if (l.files !== undefined && typeof l.files === "string" && l.files !== "") {
101132
101411
  patterns = [l.files];
@@ -101134,18 +101413,17 @@ function loadLib(config) {
101134
101413
  else if (Array.isArray(l.files)) {
101135
101414
  patterns = l.files;
101136
101415
  }
101416
+ const filesToRead = [];
101137
101417
  for (const pattern of patterns) {
101138
- for (let filename of glob.sync(dir + pattern, { nosort: true, nodir: true })) {
101418
+ for (const filename of glob.sync(dir + pattern, { nosort: true, nodir: true })) {
101139
101419
  if (filename.endsWith(".clas.testclasses.abap")) {
101140
101420
  continue;
101141
101421
  }
101142
- const contents = fs.readFileSync(filename, "utf8");
101143
- filename = path.basename(filename);
101144
- files.push({ filename, contents });
101145
- count++;
101422
+ filesToRead.push(filename);
101146
101423
  }
101147
101424
  }
101148
- console.log("\t" + count + " files added from lib");
101425
+ files = await file_operations_1.FileOperations.readAllFiles(filesToRead, "");
101426
+ console.log("\t" + filesToRead.length + " files added from lib");
101149
101427
  if (cleanupFolder === true) {
101150
101428
  file_operations_1.FileOperations.deleteFolderRecursive(dir);
101151
101429
  }
@@ -101189,7 +101467,7 @@ function writeObjects(objects, config, outputFolder, files) {
101189
101467
  async function run() {
101190
101468
  console.log("Transpiler CLI");
101191
101469
  const config = config_1.TranspilerConfig.find(process.argv[2]);
101192
- const libFiles = loadLib(config);
101470
+ const libFiles = await loadLib(config);
101193
101471
  const files = await file_operations_1.FileOperations.loadFiles(config);
101194
101472
  console.log("\nBuilding");
101195
101473
  const t = new Transpiler.Transpiler(config.options);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler-cli",
3
- "version": "2.10.61",
3
+ "version": "2.10.63",
4
4
  "description": "Transpiler - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -27,10 +27,10 @@
27
27
  "author": "abaplint",
28
28
  "license": "MIT",
29
29
  "devDependencies": {
30
- "@abaplint/core": "^2.113.131",
31
- "@abaplint/transpiler": "^2.10.61",
30
+ "@abaplint/core": "^2.113.136",
31
+ "@abaplint/transpiler": "^2.10.63",
32
32
  "@types/glob": "^8.1.0",
33
- "@types/node": "^22.15.33",
33
+ "@types/node": "^22.16.0",
34
34
  "@types/progress": "^2.0.7",
35
35
  "glob": "=7.2.0",
36
36
  "progress": "^2.0.3",