@abaplint/cli 2.119.54 → 2.119.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/build/cli.js +484 -141
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -1839,7 +1839,7 @@ class Regex {
1839
1839
  return result;
1840
1840
  }
1841
1841
  railroad() {
1842
- return "Railroad.Terminal(\"" + this.regexp.source.replace(/\\/g, "\\\\") + "\")";
1842
+ return "Railroad.Terminal(\"" + this.regexp.source.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\")";
1843
1843
  }
1844
1844
  toStr() {
1845
1845
  return this.regexp.toString();
@@ -10777,10 +10777,10 @@ const _derived_types_1 = __webpack_require__(/*! ./_derived_types */ "../core/bu
10777
10777
  class TypeStructure extends combi_1.Expression {
10778
10778
  getRunnable() {
10779
10779
  const entity = (0, combi_1.alt)(_1.TypeName, _1.EntityAssociation);
10780
- const derivedTypes = (0, _derived_types_1.derivedTypesAlt)((0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("FUNCTION REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("ACTION REQUEST", entity)), (0, combi_1.seq)("ACTION IMPORT", _1.Source), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION RESULT", entity)), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES RESULT", entity)), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("AUTHORIZATION REQUEST", entity)), (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("FEATURES REQUEST", entity)), (0, combi_1.seq)("PERMISSIONS REQUEST", _1.NamespaceSimpleName), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("PERMISSIONS RESULT", entity)), (0, combi_1.seq)("READ LINK", _1.EntityAssociation), (0, combi_1.seq)("HIERARCHY", _1.NamespaceSimpleName), (0, combi_1.seq)("EVENT", _1.EventName));
10781
- const structure = (0, combi_1.ver)(version_1.Release.v774, (0, combi_1.seq)("STRUCTURE FOR", derivedTypes));
10782
- const response = (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("RESPONSE FOR", (0, combi_1.altPrio)((0, combi_1.seq)("FAILED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED", _1.NamespaceSimpleName))));
10783
- const request = (0, combi_1.ver)(version_1.Release.v778, (0, combi_1.seq)("REQUEST FOR", (0, combi_1.alt)("CHANGE", "DELETE"), _1.NamespaceSimpleName));
10780
+ const derivedTypes = (0, _derived_types_1.derivedTypesAlt)((0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("FUNCTION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v779, (0, combi_1.seq)("ACTION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.seq)("ACTION IMPORT", _1.Source), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL AUTHORIZATION RESULT", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v781, (0, combi_1.seq)("GLOBAL FEATURES RESULT", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("AUTHORIZATION REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("FEATURES REQUEST", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.seq)("PERMISSIONS REQUEST", _1.NamespaceSimpleName), (0, combi_1.ver)(version_1.Release.v780, (0, combi_1.seq)("PERMISSIONS RESULT", entity), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.seq)("READ LINK", _1.EntityAssociation), (0, combi_1.seq)("HIERARCHY", _1.NamespaceSimpleName), (0, combi_1.seq)("EVENT", _1.EventName));
10781
+ const structure = (0, combi_1.ver)(version_1.Release.v774, (0, combi_1.seq)("STRUCTURE FOR", derivedTypes), { also: combi_1.AlsoIn.OpenABAP });
10782
+ const response = (0, combi_1.ver)(version_1.Release.v776, (0, combi_1.seq)("RESPONSE FOR", (0, combi_1.altPrio)((0, combi_1.seq)("FAILED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("FAILED", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("MAPPED", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED EARLY", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED LATE", _1.NamespaceSimpleName), (0, combi_1.seq)("REPORTED", _1.NamespaceSimpleName))), { also: combi_1.AlsoIn.OpenABAP });
10783
+ const request = (0, combi_1.ver)(version_1.Release.v778, (0, combi_1.seq)("REQUEST FOR", (0, combi_1.alt)("CHANGE", "DELETE"), _1.NamespaceSimpleName), { also: combi_1.AlsoIn.OpenABAP });
10784
10784
  return (0, combi_1.seq)("TYPE", (0, combi_1.altPrio)(structure, response, request), (0, combi_1.optPrio)("VALUE IS INITIAL"));
10785
10785
  }
10786
10786
  }
@@ -52797,6 +52797,12 @@ class CDSParser {
52797
52797
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
52798
52798
  res = combi_1.Combi.run(new Expressions.CDSDefineHierarchy(), tokens, version_1.defaultRelease);
52799
52799
  }
52800
+ if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
52801
+ res = combi_1.Combi.run(new Expressions.CDSDefineExternalEntity(), tokens, version_1.defaultRelease);
52802
+ }
52803
+ if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
52804
+ res = combi_1.Combi.run(new Expressions.CDSDefineTableEntity(), tokens, version_1.defaultRelease);
52805
+ }
52800
52806
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
52801
52807
  return undefined;
52802
52808
  }
@@ -52822,12 +52828,10 @@ const _1 = __webpack_require__(/*! . */ "../core/build/src/cds/expressions/index
52822
52828
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
52823
52829
  class CDSAggregate extends combi_1.Expression {
52824
52830
  getRunnable() {
52825
- // CDSPrefixedName handles dotted paths with path filters e.g. a._Assoc[filter].Field
52826
- // CDSArithmetics handles expressions like sum(A + B), max(A * 100)
52827
- // fieldAsType handles avg(field AS type) / sum(field AS type) — SAP inline type coercion
52828
52831
  const fieldAsType = (0, combi_1.seq)(_1.CDSPrefixedName, "AS", _1.CDSType);
52829
- const value = (0, combi_1.altPrio)(_1.CDSArithmetics, _1.CDSCast, _1.CDSCase, _1.CDSFunction, fieldAsType, _1.CDSPrefixedName, _1.CDSString, "*");
52830
- return (0, combi_1.seq)((0, combi_1.altPrio)("MAX", "MIN", "SUM", "AVG", "COUNT"), "(", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")), value, ")");
52832
+ const funcAsType = (0, combi_1.seq)(_1.CDSFunction, "AS", _1.CDSType);
52833
+ const value = (0, combi_1.altPrio)(_1.CDSArithmetics, _1.CDSCast, _1.CDSCase, funcAsType, _1.CDSFunction, fieldAsType, _1.CDSPrefixedName, _1.CDSString, "*");
52834
+ return (0, combi_1.seq)((0, combi_1.altPrio)("MAX", "MIN", "SUM", "AVG", "COUNT"), "(", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")), value, (0, combi_1.opt)((0, combi_1.seq)("AS", _1.CDSType)), ")");
52831
52835
  }
52832
52836
  }
52833
52837
  exports.CDSAggregate = CDSAggregate;
@@ -53286,7 +53290,7 @@ class CDSDefineAbstract extends combi_1.Expression {
53286
53290
  getRunnable() {
53287
53291
  const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), cds_name_1.CDSName, ":", _1.CDSType, ";");
53288
53292
  const compsiOrAssoci = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), cds_name_1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53289
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), "ABSTRACT", "ENTITY", cds_name_1.CDSName, (0, combi_1.str)("{"), (0, combi_1.plus)((0, combi_1.alt)(field, compsiOrAssoci)), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
53293
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), "ABSTRACT", "ENTITY", cds_name_1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), (0, combi_1.str)("{"), (0, combi_1.plus)((0, combi_1.alt)(field, compsiOrAssoci)), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
53290
53294
  }
53291
53295
  }
53292
53296
  exports.CDSDefineAbstract = CDSDefineAbstract;
@@ -53320,6 +53324,36 @@ exports.CDSDefineCustom = CDSDefineCustom;
53320
53324
 
53321
53325
  /***/ },
53322
53326
 
53327
+ /***/ "../core/build/src/cds/expressions/cds_define_external_entity.js"
53328
+ /*!***********************************************************************!*\
53329
+ !*** ../core/build/src/cds/expressions/cds_define_external_entity.js ***!
53330
+ \***********************************************************************/
53331
+ (__unused_webpack_module, exports, __webpack_require__) {
53332
+
53333
+ "use strict";
53334
+
53335
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
53336
+ exports.CDSDefineExternalEntity = void 0;
53337
+ const _1 = __webpack_require__(/*! . */ "../core/build/src/cds/expressions/index.js");
53338
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
53339
+ class CDSDefineExternalEntity extends combi_1.Expression {
53340
+ getRunnable() {
53341
+ const extNameValue = (0, combi_1.alt)(_1.CDSName, (0, combi_1.regex)(/^"[^"]*"$/));
53342
+ const externalName = (0, combi_1.seq)("EXTERNAL", "NAME", extNameValue);
53343
+ const nullability = (0, combi_1.optPrio)((0, combi_1.alt)("NOT NULL", "NULL"));
53344
+ const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), _1.CDSName, ":", _1.CDSType, nullability, (0, combi_1.optPrio)(externalName), ";");
53345
+ const assocOrComp = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), _1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53346
+ const body = (0, combi_1.plus)((0, combi_1.alt)(field, assocOrComp));
53347
+ const externalEntity = (0, combi_1.seq)((0, combi_1.opt)("WRITABLE"), "EXTERNAL", "ENTITY", _1.CDSName, (0, combi_1.opt)(externalName), (0, combi_1.opt)(_1.CDSWithParameters));
53348
+ const staticEntity = (0, combi_1.seq)("STATIC", "ENTITY", _1.CDSName, (0, combi_1.opt)(externalName));
53349
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.alt)(externalEntity, staticEntity), (0, combi_1.str)("{"), body, (0, combi_1.str)("}"), (0, combi_1.opt)((0, combi_1.seq)("WITH", "FEDERATED", "DATA", (0, combi_1.optPrio)((0, combi_1.alt)((0, combi_1.seq)("PROVIDED", "AT", "RUNTIME"), (0, combi_1.seq)("PROVIDED", "BY", _1.CDSName))))), (0, combi_1.opt)(";"));
53350
+ }
53351
+ }
53352
+ exports.CDSDefineExternalEntity = CDSDefineExternalEntity;
53353
+ //# sourceMappingURL=cds_define_external_entity.js.map
53354
+
53355
+ /***/ },
53356
+
53323
53357
  /***/ "../core/build/src/cds/expressions/cds_define_hierarchy.js"
53324
53358
  /*!*****************************************************************!*\
53325
53359
  !*** ../core/build/src/cds/expressions/cds_define_hierarchy.js ***!
@@ -53339,7 +53373,13 @@ class CDSDefineHierarchy extends combi_1.Expression {
53339
53373
  const siblingsOrderField = (0, combi_1.seq)(_1.CDSPrefixedName, (0, combi_1.optPrio)(sortDirection));
53340
53374
  const siblingsOrder = (0, combi_1.seq)("SIBLINGS", "ORDER", "BY", siblingsOrderField, (0, combi_1.star)((0, combi_1.seq)(",", siblingsOrderField)));
53341
53375
  const directory = (0, combi_1.seq)("DIRECTORY", _1.CDSName, "FILTER", "BY", _1.CDSCondition);
53342
- const hierarchyBody = (0, combi_1.seq)("SOURCE", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), "CHILD", "TO", "PARENT", "ASSOCIATION", _1.CDSName, (0, combi_1.opt)(directory), (0, combi_1.opt)((0, combi_1.seq)("START", "WHERE", _1.CDSCondition)), (0, combi_1.opt)(siblingsOrder), (0, combi_1.opt)((0, combi_1.seq)("NODETYPE", _1.CDSName)), (0, combi_1.opt)((0, combi_1.seq)("DEPTH", _1.CDSInteger)), (0, combi_1.opt)((0, combi_1.seq)("MULTIPLE", "PARENTS", (0, combi_1.altPrio)("NOT ALLOWED", "ALLOWED"))), (0, combi_1.opt)((0, combi_1.seq)("ORPHANS", (0, combi_1.altPrio)("IGNORE", "ROOT"))), (0, combi_1.opt)((0, combi_1.seq)("CYCLES", "BREAKUP")), (0, combi_1.opt)((0, combi_1.seq)("CACHE", (0, combi_1.altPrio)("FORCE", "NONE", "EMPTY", "OFF"))));
53376
+ // DATE PERIOD: period from <field> to <field> [valid from :p to :p]
53377
+ const datePeriod = (0, combi_1.seq)("PERIOD", "FROM", _1.CDSName, "TO", _1.CDSName, (0, combi_1.opt)((0, combi_1.seq)("VALID", "FROM", _1.CDSPrefixedName, "TO", _1.CDSPrefixedName)));
53378
+ // DEPTH accepts an integer literal or a parameter reference (:param)
53379
+ const depthValue = (0, combi_1.altPrio)(_1.CDSInteger, _1.CDSPrefixedName);
53380
+ // LOAD mode: BULK, INCREMENTAL, or a parameter reference ($parameters.p_load)
53381
+ const loadMode = (0, combi_1.altPrio)("BULK", "INCREMENTAL", _1.CDSPrefixedName);
53382
+ const hierarchyBody = (0, combi_1.seq)("SOURCE", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), "CHILD", "TO", "PARENT", "ASSOCIATION", _1.CDSName, (0, combi_1.opt)(directory), (0, combi_1.opt)(datePeriod), (0, combi_1.opt)((0, combi_1.seq)("START", "WHERE", _1.CDSCondition)), (0, combi_1.opt)(siblingsOrder), (0, combi_1.opt)((0, combi_1.seq)("LOAD", loadMode)), (0, combi_1.opt)((0, combi_1.seq)("NODETYPE", _1.CDSName)), (0, combi_1.opt)((0, combi_1.seq)("DEPTH", depthValue)), (0, combi_1.opt)((0, combi_1.seq)("MULTIPLE", "PARENTS", (0, combi_1.altPrio)("NOT ALLOWED", "ALLOWED", (0, combi_1.seq)("LEAVES", (0, combi_1.optPrio)("ONLY"))))), (0, combi_1.opt)((0, combi_1.seq)("ORPHANS", (0, combi_1.altPrio)("IGNORE", "ROOT", "ERROR"))), (0, combi_1.opt)((0, combi_1.seq)("CYCLES", (0, combi_1.altPrio)("BREAKUP", "ERROR"))), (0, combi_1.opt)((0, combi_1.seq)("GENERATE", "SPANTREE")), (0, combi_1.opt)((0, combi_1.seq)("CACHE", (0, combi_1.altPrio)("ON", "OFF", "FORCE"))));
53343
53383
  return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", "HIERARCHY", _1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), "AS", "PARENT", "CHILD", "HIERARCHY", "(", hierarchyBody, ")", "{", (0, combi_1.seq)(field, (0, combi_1.star)((0, combi_1.seq)(",", field))), "}", (0, combi_1.opt)(";"));
53344
53384
  }
53345
53385
  }
@@ -53363,7 +53403,9 @@ const __1 = __webpack_require__(/*! ../.. */ "../core/build/src/index.js");
53363
53403
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
53364
53404
  class CDSDefineProjection extends combi_1.Expression {
53365
53405
  getRunnable() {
53366
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), (0, combi_1.opt)("TRANSIENT"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), _1.CDSName, (0, combi_1.opt)(_1.CDSProviderContract), (0, combi_1.opt)(_1.CDSWithParameters), "AS PROJECTION ON", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), (0, combi_1.opt)(_1.CDSAs), (0, combi_1.star)(_1.CDSAssociation), (0, combi_1.str)("{"), (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(",")), (0, combi_1.str)("}"), (0, combi_1.opt)(_1.CDSWhere), (0, combi_1.opt)(";"));
53406
+ // redefine association _Assoc redirected to [composition child | parent] Entity
53407
+ const redefineAssoc = (0, combi_1.seq)("REDEFINE", "ASSOCIATION", _1.CDSName, "REDIRECTED", "TO", (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("COMPOSITION", "CHILD"), "PARENT")), _1.CDSName);
53408
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), (0, combi_1.opt)("TRANSIENT"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), _1.CDSName, (0, combi_1.opt)(_1.CDSProviderContract), (0, combi_1.opt)(_1.CDSWithParameters), "AS PROJECTION ON", _1.CDSName, (0, combi_1.opt)(_1.CDSParametersSelect), (0, combi_1.opt)(_1.CDSAs), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSAssociation, redefineAssoc)), (0, combi_1.str)("{"), (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(",")), (0, combi_1.str)("}"), (0, combi_1.opt)(_1.CDSWhere), (0, combi_1.opt)(";"));
53367
53409
  }
53368
53410
  }
53369
53411
  exports.CDSDefineProjection = CDSDefineProjection;
@@ -53371,6 +53413,35 @@ exports.CDSDefineProjection = CDSDefineProjection;
53371
53413
 
53372
53414
  /***/ },
53373
53415
 
53416
+ /***/ "../core/build/src/cds/expressions/cds_define_table_entity.js"
53417
+ /*!********************************************************************!*\
53418
+ !*** ../core/build/src/cds/expressions/cds_define_table_entity.js ***!
53419
+ \********************************************************************/
53420
+ (__unused_webpack_module, exports, __webpack_require__) {
53421
+
53422
+ "use strict";
53423
+
53424
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
53425
+ exports.CDSDefineTableEntity = void 0;
53426
+ const _1 = __webpack_require__(/*! . */ "../core/build/src/cds/expressions/index.js");
53427
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
53428
+ class CDSDefineTableEntity extends combi_1.Expression {
53429
+ getRunnable() {
53430
+ const nullability = (0, combi_1.optPrio)((0, combi_1.alt)("NOT NULL", "NULL"));
53431
+ const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), _1.CDSName, ":", _1.CDSType, nullability, ";");
53432
+ const assocOrComp = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), _1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53433
+ const inlineBody = (0, combi_1.plus)((0, combi_1.alt)(field, assocOrComp));
53434
+ const elementList = (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(","));
53435
+ const elements = (0, combi_1.seq)((0, combi_1.str)("{"), (0, combi_1.altPrio)("*", elementList), (0, combi_1.str)("}"));
53436
+ const selectBody = (0, combi_1.seq)("AS", "SELECT", "FROM", _1.CDSSource, (0, combi_1.star)(_1.CDSJoin), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSComposition, _1.CDSAssociation)), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere));
53437
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "DEFINE", (0, combi_1.opt)("ROOT"), "TABLE", "ENTITY", _1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.str)("{"), inlineBody, (0, combi_1.str)("}")), selectBody), (0, combi_1.opt)(";"));
53438
+ }
53439
+ }
53440
+ exports.CDSDefineTableEntity = CDSDefineTableEntity;
53441
+ //# sourceMappingURL=cds_define_table_entity.js.map
53442
+
53443
+ /***/ },
53444
+
53374
53445
  /***/ "../core/build/src/cds/expressions/cds_define_table_function.js"
53375
53446
  /*!**********************************************************************!*\
53376
53447
  !*** ../core/build/src/cds/expressions/cds_define_table_function.js ***!
@@ -53414,7 +53485,8 @@ const cds_with_parameters_1 = __webpack_require__(/*! ./cds_with_parameters */ "
53414
53485
  class CDSDefineView extends combi_1.Expression {
53415
53486
  getRunnable() {
53416
53487
  const columnAlias = (0, combi_1.seq)("(", cds_name_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(",", cds_name_1.CDSName)), ")");
53417
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)("DEFINE"), (0, combi_1.opt)("ROOT"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), cds_name_1.CDSName, (0, combi_1.opt)(columnAlias), (0, combi_1.opt)(cds_with_parameters_1.CDSWithParameters), "AS", cds_select_1.CDSSelect, (0, combi_1.opt)(";"));
53488
+ return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)("DEFINE"), (0, combi_1.opt)("ROOT"), (0, combi_1.opt)("WRITABLE"), "VIEW", (0, combi_1.ver)(__1.Release.v755, (0, combi_1.opt)("ENTITY")), cds_name_1.CDSName, (0, combi_1.opt)(columnAlias), (0, combi_1.opt)(cds_with_parameters_1.CDSWithParameters), "AS", cds_select_1.CDSSelect, (0, combi_1.opt)((0, combi_1.seq)("WITH", "HIERARCHY", cds_name_1.CDSName)), // post-select WITH HIERARCHY clause
53489
+ (0, combi_1.opt)(";"));
53418
53490
  }
53419
53491
  }
53420
53492
  exports.CDSDefineView = CDSDefineView;
@@ -53440,14 +53512,11 @@ class CDSElement extends combi_1.Expression {
53440
53512
  getRunnable() {
53441
53513
  const redirected = (0, combi_1.seq)(": REDIRECTED TO", (0, combi_1.optPrio)((0, combi_1.altPrio)("PARENT", "COMPOSITION CHILD")), _1.CDSName);
53442
53514
  const colonThing = (0, combi_1.seq)(":", (0, combi_1.altPrio)(_1.CDSType, _1.CDSName, "LOCALIZED"));
53443
- // $extension.* — extension field wildcard
53444
53515
  const extensionWildcard = (0, combi_1.seq)("$extension", ".", "*");
53445
- const body = (0, combi_1.altPrio)(extensionWildcard, _1.CDSArithmetics, _1.CDSAggregate, _1.CDSString, _1.CDSArithParen, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)("(", _1.CDSCase, ")"), (0, combi_1.seq)(_1.CDSPrefixedName, (0, combi_1.optPrio)(cds_as_1.CDSAs), (0, combi_1.optPrio)((0, combi_1.altPrio)(redirected, colonThing))), _1.CDSInteger);
53446
- // KEY/VIRTUAL keyword handling via altPrio:
53447
- // - Try keyword form first: if keyword consumed but body fails (e.g. "virtual.Field"),
53448
- // altPrio backtracks to plain body (which handles "virtual" as a datasource alias prefix).
53449
- // - This gives exactly 1 state in all cases (no exponential blowup from opt()).
53450
- const elementBody = (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.altPrio)("KEY", "VIRTUAL"), body), body);
53516
+ const includeElement = (0, combi_1.seq)("INCLUDE", _1.CDSPrefixedName);
53517
+ const typedVirtual = (0, combi_1.seq)("VIRTUAL", _1.CDSName, ":", _1.CDSType);
53518
+ const body = (0, combi_1.altPrio)(extensionWildcard, includeElement, _1.CDSArithmetics, _1.CDSAggregate, _1.CDSString, _1.CDSArithParen, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)("(", _1.CDSCase, ")"), (0, combi_1.seq)(_1.CDSPrefixedName, (0, combi_1.optPrio)(cds_as_1.CDSAs), (0, combi_1.optPrio)((0, combi_1.altPrio)(redirected, colonThing))), _1.CDSInteger);
53519
+ const elementBody = (0, combi_1.altPrio)(typedVirtual, (0, combi_1.seq)((0, combi_1.altPrio)("KEY", "VIRTUAL"), body), body);
53451
53520
  return (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), elementBody, (0, combi_1.optPrio)(cds_as_1.CDSAs));
53452
53521
  }
53453
53522
  }
@@ -53468,12 +53537,17 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
53468
53537
  exports.CDSExtendView = void 0;
53469
53538
  const _1 = __webpack_require__(/*! . */ "../core/build/src/cds/expressions/index.js");
53470
53539
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
53471
- const cds_name_1 = __webpack_require__(/*! ./cds_name */ "../core/build/src/cds/expressions/cds_name.js");
53472
53540
  class CDSExtendView extends combi_1.Expression {
53473
53541
  getRunnable() {
53474
- const namedot = (0, combi_1.seq)(cds_name_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", cds_name_1.CDSName)), (0, combi_1.optPrio)(_1.CDSAs));
53542
+ const namedot = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)), (0, combi_1.optPrio)(_1.CDSAs));
53475
53543
  const valueNested = (0, combi_1.seq)("{", namedot, (0, combi_1.star)((0, combi_1.seq)(",", namedot)), "}");
53476
- return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("EXTEND VIEW"), (0, combi_1.opt)((0, combi_1.str)("ENTITY")), cds_name_1.CDSName, (0, combi_1.str)("WITH"), (0, combi_1.opt)(cds_name_1.CDSName), valueNested, (0, combi_1.opt)(";"));
53544
+ const redefineAssoc = (0, combi_1.seq)("REDEFINE", "ASSOCIATION", _1.CDSPrefixedName, (0, combi_1.optPrio)((0, combi_1.seq)("[", _1.CDSCondition, "]")), (0, combi_1.opt)(_1.CDSAs), "REDIRECTED", "TO", (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("COMPOSITION", "CHILD"), "PARENT")), _1.CDSName);
53545
+ const extendView = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("EXTEND VIEW"), (0, combi_1.opt)((0, combi_1.str)("ENTITY")), _1.CDSName, (0, combi_1.str)("WITH"), (0, combi_1.opt)(_1.CDSName), (0, combi_1.star)(redefineAssoc), valueNested, (0, combi_1.opt)(";"));
53546
+ const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)((0, combi_1.str)("KEY")), _1.CDSName, ":", _1.CDSType, ";");
53547
+ const assocOrComp = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), _1.CDSName, ":", (0, combi_1.alt)(_1.CDSComposition, _1.CDSAssociation), ";");
53548
+ const entityBody = (0, combi_1.seq)("{", (0, combi_1.plus)((0, combi_1.alt)(field, assocOrComp)), "}");
53549
+ const extendAbstractOrCustom = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), "EXTEND", (0, combi_1.alt)("ABSTRACT", "CUSTOM"), "ENTITY", _1.CDSName, (0, combi_1.opt)(_1.CDSWithParameters), "WITH", entityBody, (0, combi_1.opt)(";"));
53550
+ return (0, combi_1.alt)(extendAbstractOrCustom, extendView);
53477
53551
  }
53478
53552
  }
53479
53553
  exports.CDSExtendView = CDSExtendView;
@@ -53548,12 +53622,13 @@ class CDSFunction extends combi_1.Expression {
53548
53622
  const occurrencesRegexpr = (0, combi_1.seq)("OCCURRENCES_REGEXPR", "(", conversionInputs, ")");
53549
53623
  const substrRegexpr = (0, combi_1.seq)("SUBSTR_REGEXPR", "(", conversionInputs, ")");
53550
53624
  const locateRegexpr = (0, combi_1.seq)("LOCATE_REGEXPR", "(", conversionInputs, ")");
53551
- // Generic fallback: user-defined/extension functions like GET_NUMERIC_VALUE(arg).
53552
- // Use a regex that excludes CDS keywords that would otherwise be matched by CDSName.
53553
- // Must contain at least one underscore to distinguish from keywords (e.g. GET_NUMERIC_VALUE).
53554
53625
  const extFuncName = (0, combi_1.regex)(/^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)+$/i);
53555
53626
  const genericArgs = (0, combi_1.seq)(_1.CDSFunctionInput, (0, combi_1.starPrio)((0, combi_1.seq)(",", _1.CDSFunctionInput)));
53556
- const genericFunc = (0, combi_1.seq)(extFuncName, "(", genericArgs, ")");
53627
+ const namedArgValue = (0, combi_1.altPrio)((0, combi_1.seq)("INTERVAL", _1.CDSFunctionInput, _1.CDSName), _1.CDSFunctionInput, _1.CDSName);
53628
+ const namedArgArrow = (0, combi_1.seq)(_1.CDSName, "=", ">", namedArgValue);
53629
+ const namedArgColon = (0, combi_1.seq)(_1.CDSName, ":", namedArgValue);
53630
+ const namedArgs = (0, combi_1.seq)((0, combi_1.altPrio)(namedArgArrow, namedArgColon), (0, combi_1.starPrio)((0, combi_1.seq)(",", (0, combi_1.altPrio)(namedArgArrow, namedArgColon))));
53631
+ const genericFunc = (0, combi_1.seq)(extFuncName, "(", (0, combi_1.optPrio)((0, combi_1.altPrio)(namedArgs, genericArgs)), ")");
53557
53632
  return (0, combi_1.altPrio)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, upper, lower, abs, ceil, floor, round, div, division, concat_with_space, dats_is_valid, tims_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, utcl_current, abap_system_timezone, abap_user_timezone, bintohex, hextobin, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp, mod, left, right, lpad, rpad, instr, length, ltrim, rtrim, replace, unitConversion, currencyConversion, decimalShift, fltp_to_dec, ratioOf, replaceRegexpr, matchesRegexpr, occurrencesRegexpr, substrRegexpr, locateRegexpr, curr_to_decfloat_amount, genericFunc);
53558
53633
  }
53559
53634
  }
@@ -53785,31 +53860,18 @@ const cds_integer_1 = __webpack_require__(/*! ./cds_integer */ "../core/build/sr
53785
53860
  const cds_string_1 = __webpack_require__(/*! ./cds_string */ "../core/build/src/cds/expressions/cds_string.js");
53786
53861
  class CDSPrefixedName extends combi_1.Expression {
53787
53862
  getRunnable() {
53788
- // Path filter variants:
53789
- // [inner], [left outer], [cross] — join-type redirect
53790
- // [1:left outer], [1:inner] — cardinality + join-type
53791
- // [1: condition] — cardinality + filter condition
53792
- // [condition] — filter condition only
53793
53863
  const joinType = (0, combi_1.altPrio)("LEFT OUTER", "INNER", "CROSS");
53794
53864
  const joinRedirect = (0, combi_1.seq)("[", joinType, "]");
53795
- // Cardinality spec: integer or * (e.g. [*:inner], [1:inner])
53796
53865
  const cardSpec = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, "*");
53797
53866
  const cardinalityJoin = (0, combi_1.seq)("[", cardSpec, ":", joinType, "]");
53798
- // [1: left outer where condition] — cardinality + join-type + WHERE filter
53799
53867
  const cardinalityJoinWhere = (0, combi_1.seq)("[", cardSpec, ":", joinType, "WHERE", cds_condition_1.CDSCondition, "]");
53800
- // [left outer where condition] — join-type + WHERE filter (no cardinality prefix)
53801
53868
  const joinWhere = (0, combi_1.seq)("[", joinType, "WHERE", cds_condition_1.CDSCondition, "]");
53802
- // Text cardinality forms: [to one: cond], [to many: cond]
53803
- const textCard = (0, combi_1.altPrio)("TO ONE", "TO MANY");
53804
- const textCardFilter = (0, combi_1.seq)("[", textCard, ":", cds_condition_1.CDSCondition, "]");
53805
- // Numeric range cardinality: [0..1: cond], [1..1: cond], [0..*: cond], [n..m: cond]
53869
+ const textCard = (0, combi_1.altPrio)("TO EXACT ONE", "TO ONE", "TO MANY");
53870
+ const textCardFilter = (0, combi_1.seq)("[", textCard, (0, combi_1.optPrio)((0, combi_1.seq)(":", (0, combi_1.altPrio)((0, combi_1.seq)(joinType, "WHERE", cds_condition_1.CDSCondition), joinType, cds_condition_1.CDSCondition))), "]");
53806
53871
  const cardNum = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, "*");
53807
53872
  const rangeCard = (0, combi_1.seq)(cds_integer_1.CDSInteger, ".", ".", cardNum);
53808
53873
  const rangeCardFilter = (0, combi_1.seq)("[", rangeCard, ":", cds_condition_1.CDSCondition, "]");
53809
53874
  const pathFilter = (0, combi_1.altPrio)(cardinalityJoinWhere, joinWhere, cardinalityJoin, joinRedirect, textCardFilter, rangeCardFilter, (0, combi_1.seq)("[", cardSpec, ":", cds_condition_1.CDSCondition, "]"), (0, combi_1.seq)("[", cds_condition_1.CDSCondition, "]"));
53810
- // Each dotted segment may have its own path filter: A[cond].B[cond].C
53811
- // The final segment may also be a string literal: #enum.'value'
53812
- // A segment may have a parameterized call: _Assoc( P_Key : value ) or _Assoc[filter]
53813
53875
  const segment = (0, combi_1.seq)(".", (0, combi_1.altPrio)(cds_string_1.CDSString, cds_name_1.CDSName), (0, combi_1.optPrio)((0, combi_1.altPrio)(cds_parameters_select_1.CDSParametersSelect, cds_parameters_1.CDSParameters)), (0, combi_1.optPrio)(pathFilter));
53814
53876
  return (0, combi_1.seq)(cds_name_1.CDSName, (0, combi_1.optPrio)((0, combi_1.altPrio)(cds_parameters_1.CDSParameters, cds_parameters_select_1.CDSParametersSelect)), (0, combi_1.optPrio)(pathFilter), (0, combi_1.star)(segment));
53815
53877
  }
@@ -53832,7 +53894,7 @@ exports.CDSProviderContract = void 0;
53832
53894
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
53833
53895
  class CDSProviderContract extends combi_1.Expression {
53834
53896
  getRunnable() {
53835
- return (0, combi_1.seq)("PROVIDER CONTRACT", (0, combi_1.alt)("TRANSACTIONAL_QUERY", "TRANSACTIONAL_INTERFACE", "ANALYTICAL_QUERY"));
53897
+ return (0, combi_1.seq)("PROVIDER CONTRACT", (0, combi_1.alt)("TRANSACTIONAL_QUERY", "TRANSACTIONAL_INTERFACE", "ANALYTICAL_QUERY", "SQL_QUERY", "STRUCTURED_QUERY"));
53836
53898
  }
53837
53899
  }
53838
53900
  exports.CDSProviderContract = CDSProviderContract;
@@ -53881,10 +53943,13 @@ class CDSSelect extends combi_1.Expression {
53881
53943
  getRunnable() {
53882
53944
  const fields = (0, combi_1.seq)((0, combi_1.star)((0, combi_1.seq)(_1.CDSElement, ",")), _1.CDSElement);
53883
53945
  const distinct = (0, combi_1.str)("DISTINCT");
53884
- // elem (,elem)* [,] — handles separator commas and optional trailing comma
53885
53946
  const elementList = (0, combi_1.seq)(_1.CDSElement, (0, combi_1.star)((0, combi_1.seq)(",", _1.CDSElement)), (0, combi_1.opt)(","));
53886
53947
  const elements = (0, combi_1.seq)((0, combi_1.str)("{"), (0, combi_1.altPrio)("*", elementList), (0, combi_1.str)("}"));
53887
- return (0, combi_1.seq)("SELECT", (0, combi_1.optPrio)(distinct), (0, combi_1.opt)((0, combi_1.altPrio)("*", fields)), "FROM", _1.CDSSource, (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSComposition, cds_association_1.CDSAssociation)), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere), (0, combi_1.optPrio)(_1.CDSGroupBy), (0, combi_1.optPrio)(_1.CDSHaving), (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("UNION", (0, combi_1.optPrio)("ALL"), CDSSelect), (0, combi_1.seq)("EXCEPT", CDSSelect), (0, combi_1.seq)("INTERSECT", CDSSelect))));
53948
+ const aspectBinding = (0, combi_1.seq)(_1.CDSPrefixedName, "=", ">", _1.CDSPrefixedName);
53949
+ const bindAspect = (0, combi_1.seq)("BIND", "ASPECT", _1.CDSName, "(", aspectBinding, (0, combi_1.starPrio)((0, combi_1.seq)(",", aspectBinding)), ")");
53950
+ const parenSelect = (0, combi_1.seq)("(", CDSSelect, ")");
53951
+ const unionBranch = (0, combi_1.altPrio)(parenSelect, CDSSelect);
53952
+ return (0, combi_1.seq)("SELECT", (0, combi_1.optPrio)(distinct), (0, combi_1.opt)((0, combi_1.altPrio)("*", fields)), "FROM", _1.CDSSource, (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)((0, combi_1.altPrio)(_1.CDSComposition, cds_association_1.CDSAssociation)), (0, combi_1.optPrio)(bindAspect), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere), (0, combi_1.optPrio)(_1.CDSGroupBy), (0, combi_1.optPrio)(_1.CDSHaving), (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.seq)("UNION", (0, combi_1.optPrio)("ALL"), unionBranch), (0, combi_1.seq)("EXCEPT", unionBranch), (0, combi_1.seq)("INTERSECT", unionBranch))));
53888
53953
  }
53889
53954
  }
53890
53955
  exports.CDSSelect = CDSSelect;
@@ -53906,13 +53971,14 @@ const _1 = __webpack_require__(/*! . */ "../core/build/src/cds/expressions/index
53906
53971
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
53907
53972
  class CDSSource extends combi_1.Expression {
53908
53973
  getRunnable() {
53909
- // Static where filter in FROM: SomeTable [Field = 'Value']
53910
53974
  const staticFilter = (0, combi_1.seq)("[", _1.CDSCondition, "]");
53911
- const singleSource = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)(_1.CDSParametersSelect), (0, combi_1.optPrio)(staticFilter), (0, combi_1.opt)((0, combi_1.altPrio)(_1.CDSAs, _1.CDSName)));
53912
- // FROM ( src [JOIN src ON cond]* ) — parenthesized join chain, arbitrarily nested
53913
- // CDSSource is self-referential here to handle: (((T1 join T2) join T3) join T4)
53975
+ // Dotted path: T._Assoc association path as FROM source
53976
+ const dottedName = (0, combi_1.seq)(_1.CDSName, ".", _1.CDSName);
53977
+ const namedSource = (0, combi_1.altPrio)(dottedName, _1.CDSName);
53978
+ const singleSource = (0, combi_1.seq)(namedSource, (0, combi_1.optPrio)(_1.CDSParametersSelect), (0, combi_1.optPrio)(staticFilter), (0, combi_1.opt)((0, combi_1.altPrio)(_1.CDSAs, _1.CDSName)));
53979
+ const funcSingleSource = (0, combi_1.seq)(_1.CDSFunction, (0, combi_1.opt)((0, combi_1.altPrio)(_1.CDSAs, _1.CDSName)));
53914
53980
  const parenSource = (0, combi_1.seq)("(", (0, combi_1.altPrio)(CDSSource, singleSource), (0, combi_1.star)(_1.CDSJoin), ")");
53915
- return (0, combi_1.altPrio)(parenSource, singleSource);
53981
+ return (0, combi_1.altPrio)(parenSource, funcSingleSource, singleSource);
53916
53982
  }
53917
53983
  }
53918
53984
  exports.CDSSource = CDSSource;
@@ -53933,15 +53999,8 @@ exports.CDSString = void 0;
53933
53999
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
53934
54000
  class CDSString extends combi_1.Expression {
53935
54001
  getRunnable() {
53936
- // Allow any character except unescaped single quote; escape sequences:
53937
- // '' — escaped single quote (doubling)
53938
- // \' — escaped single quote (backslash form)
53939
- // \\ — escaped backslash (e.g. '\\' in ltrim/rtrim calls)
53940
- // \x — other backslash sequences not followed by '
53941
54002
  const reg = (0, combi_1.regex)(/^'(?:[^'\\]|''|\\'|\\\\|\\(?!'))*'$/);
53942
- // Typed literal: abap.int4'1', abap.char'X', abap.numc(3)'123', etc.
53943
- // Lexed as tokens: abap, ., typename, 'value'
53944
- const abapTypeName = (0, combi_1.regex)(/^(?:int[1-9]|sstring|char|numc|dats|tims|fltp|decfloat\d+|dec|string|raw|xstring|clnt|lang|unit|cuky|curr|quan|d|t|p|n|c|x|f)$/i);
54003
+ const abapTypeName = (0, combi_1.regex)(/^(?:int[1-9]|int8|sstring|char|numc|dats|datn|tims|timn|utcl|utclong|fltp|decfloat\d+|dec|string|rawstring|rstr|raw|xstring|clnt|lang|unit|cuky|curr|quan|geom_ewkb|d34n|d16n|d34d|d16d|d34s|d16s|d34r|d16r|d|t|p|n|c|x|f)$/i);
53945
54004
  const abap = (0, combi_1.seq)("abap", ".", abapTypeName, (0, combi_1.optPrio)((0, combi_1.seq)("(", (0, combi_1.regex)(/^\d+$/), ")")), reg);
53946
54005
  return (0, combi_1.altPrio)(abap, reg);
53947
54006
  }
@@ -54059,8 +54118,10 @@ __exportStar(__webpack_require__(/*! ./cds_composition */ "../core/build/src/cds
54059
54118
  __exportStar(__webpack_require__(/*! ./cds_condition */ "../core/build/src/cds/expressions/cds_condition.js"), exports);
54060
54119
  __exportStar(__webpack_require__(/*! ./cds_define_abstract */ "../core/build/src/cds/expressions/cds_define_abstract.js"), exports);
54061
54120
  __exportStar(__webpack_require__(/*! ./cds_define_custom */ "../core/build/src/cds/expressions/cds_define_custom.js"), exports);
54121
+ __exportStar(__webpack_require__(/*! ./cds_define_external_entity */ "../core/build/src/cds/expressions/cds_define_external_entity.js"), exports);
54062
54122
  __exportStar(__webpack_require__(/*! ./cds_define_hierarchy */ "../core/build/src/cds/expressions/cds_define_hierarchy.js"), exports);
54063
54123
  __exportStar(__webpack_require__(/*! ./cds_define_projection */ "../core/build/src/cds/expressions/cds_define_projection.js"), exports);
54124
+ __exportStar(__webpack_require__(/*! ./cds_define_table_entity */ "../core/build/src/cds/expressions/cds_define_table_entity.js"), exports);
54064
54125
  __exportStar(__webpack_require__(/*! ./cds_define_table_function */ "../core/build/src/cds/expressions/cds_define_table_function.js"), exports);
54065
54126
  __exportStar(__webpack_require__(/*! ./cds_define_view */ "../core/build/src/cds/expressions/cds_define_view.js"), exports);
54066
54127
  __exportStar(__webpack_require__(/*! ./cds_element */ "../core/build/src/cds/expressions/cds_element.js"), exports);
@@ -54143,7 +54204,10 @@ class Config {
54143
54204
  for (const rule of sorted) {
54144
54205
  rules[rule.getMetadata().key] = rule.getConfig();
54145
54206
  }
54146
- const version = ver;
54207
+ const version = ver !== null && ver !== void 0 ? ver : {
54208
+ release: version_1.Release.Newest.name,
54209
+ language: langVer !== null && langVer !== void 0 ? langVer : version_1.LanguageVersion.Normal,
54210
+ };
54147
54211
  // defaults: dont skip anything, report everything. The user can decide to skip stuff
54148
54212
  // its difficult to debug errors not being reported
54149
54213
  const config = {
@@ -54270,12 +54334,14 @@ class Config {
54270
54334
  return v;
54271
54335
  }
54272
54336
  getLanguageVersion() {
54273
- var _a;
54337
+ if (this.config.syntax.languageVersion !== undefined) {
54338
+ return this.config.syntax.languageVersion;
54339
+ }
54274
54340
  const v = this.config.syntax.version;
54275
54341
  if (v !== undefined && typeof v !== "string") {
54276
54342
  return v.language;
54277
54343
  }
54278
- return (_a = this.config.syntax.languageVersion) !== null && _a !== void 0 ? _a : version_1.LanguageVersion.Normal;
54344
+ return version_1.LanguageVersion.Normal;
54279
54345
  }
54280
54346
  checkVersion() {
54281
54347
  const version = this.config.syntax.version;
@@ -54879,49 +54945,6 @@ exports.DDICReferences = DDICReferences;
54879
54945
 
54880
54946
  /***/ },
54881
54947
 
54882
- /***/ "../core/build/src/ddl/ddl_lexer.js"
54883
- /*!******************************************!*\
54884
- !*** ../core/build/src/ddl/ddl_lexer.js ***!
54885
- \******************************************/
54886
- (__unused_webpack_module, exports, __webpack_require__) {
54887
-
54888
- "use strict";
54889
-
54890
- Object.defineProperty(exports, "__esModule", ({ value: true }));
54891
- exports.DDLLexer = void 0;
54892
- const tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
54893
- const position_1 = __webpack_require__(/*! ../position */ "../core/build/src/position.js");
54894
- class DDLLexer {
54895
- static run(file) {
54896
- const step1 = [];
54897
- const lines = file.getRaw().replace(/\r/g, "").split("\n");
54898
- for (const l of lines) {
54899
- if (l.startsWith("@")) {
54900
- continue; // skip annotations for now
54901
- }
54902
- step1.push(...l.split(" "));
54903
- }
54904
- const step2 = [];
54905
- for (const t of step1) {
54906
- if (t === "") {
54907
- continue;
54908
- }
54909
- else if (t.endsWith(";")) {
54910
- step2.push(t.substr(0, t.length - 1));
54911
- step2.push(";");
54912
- }
54913
- else {
54914
- step2.push(t);
54915
- }
54916
- }
54917
- return step2.map(t => new tokens_1.Identifier(new position_1.Position(1, 1), t));
54918
- }
54919
- }
54920
- exports.DDLLexer = DDLLexer;
54921
- //# sourceMappingURL=ddl_lexer.js.map
54922
-
54923
- /***/ },
54924
-
54925
54948
  /***/ "../core/build/src/ddl/ddl_parser.js"
54926
54949
  /*!*******************************************!*\
54927
54950
  !*** ../core/build/src/ddl/ddl_parser.js ***!
@@ -54965,67 +54988,250 @@ var __importStar = (this && this.__importStar) || (function () {
54965
54988
  })();
54966
54989
  Object.defineProperty(exports, "__esModule", ({ value: true }));
54967
54990
  exports.DDLParser = exports.DDLKind = void 0;
54991
+ const tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
54968
54992
  const combi_1 = __webpack_require__(/*! ../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
54969
54993
  const nodes_1 = __webpack_require__(/*! ../abap/nodes */ "../core/build/src/abap/nodes/index.js");
54970
54994
  const version_1 = __webpack_require__(/*! ../version */ "../core/build/src/version.js");
54971
- const ddl_lexer_1 = __webpack_require__(/*! ./ddl_lexer */ "../core/build/src/ddl/ddl_lexer.js");
54995
+ const cds_lexer_1 = __webpack_require__(/*! ../cds/cds_lexer */ "../core/build/src/cds/cds_lexer.js");
54972
54996
  const Expressions = __importStar(__webpack_require__(/*! ./expressions */ "../core/build/src/ddl/expressions/index.js"));
54973
54997
  var DDLKind;
54974
54998
  (function (DDLKind) {
54975
54999
  DDLKind["Structure"] = "structure";
54976
55000
  DDLKind["Table"] = "table";
55001
+ DDLKind["Aspect"] = "aspect";
55002
+ DDLKind["ExtendType"] = "extend-type";
54977
55003
  })(DDLKind || (exports.DDLKind = DDLKind = {}));
54978
55004
  class DDLParser {
54979
55005
  parse(file) {
54980
- const tokens = ddl_lexer_1.DDLLexer.run(file);
55006
+ let tokens = cds_lexer_1.CDSLexer.run(file);
55007
+ tokens = tokens.filter(t => !(t instanceof tokens_1.Comment));
54981
55008
  let res = combi_1.Combi.run(new Expressions.DDLStructure(), tokens, version_1.defaultRelease);
54982
55009
  if (res === undefined) {
54983
55010
  res = combi_1.Combi.run(new Expressions.DDLTable(), tokens, version_1.defaultRelease);
54984
55011
  }
55012
+ if (res === undefined) {
55013
+ res = combi_1.Combi.run(new Expressions.DDLAspect(), tokens, version_1.defaultRelease);
55014
+ }
55015
+ if (res === undefined) {
55016
+ res = combi_1.Combi.run(new Expressions.DDLExtendType(), tokens, version_1.defaultRelease);
55017
+ }
54985
55018
  if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
54986
55019
  return undefined;
54987
55020
  }
54988
55021
  return this.parsedToResult(res[0]);
54989
55022
  }
54990
55023
  parsedToResult(node) {
54991
- var _a, _b;
54992
55024
  const fields = [];
54993
- let found = node.findDirectExpressions(Expressions.DDLStructureField);
54994
- found = found.concat(node.findDirectExpressions(Expressions.DDLTableField));
54995
- found = found.concat(node.findDirectExpressions(Expressions.DDLInclude));
54996
- for (const f of found) {
54997
- const name = ((_a = f.findDirectExpression(Expressions.DDLName)) === null || _a === void 0 ? void 0 : _a.concatTokens()) || "";
54998
- if (f.get() instanceof Expressions.DDLInclude) {
54999
- fields.push({
55000
- name: ".INCLUDE",
55001
- type: name,
55002
- key: false,
55003
- notNull: false,
55004
- });
55025
+ for (const child of node.getChildren()) {
55026
+ if (!(child instanceof nodes_1.ExpressionNode)) {
55027
+ continue;
55028
+ }
55029
+ const expr = child.get();
55030
+ const isField = expr instanceof Expressions.DDLStructureField
55031
+ || expr instanceof Expressions.DDLTableField
55032
+ || expr instanceof Expressions.DDLInclude
55033
+ || expr instanceof Expressions.DDLNamedInclude;
55034
+ if (!isField) {
55035
+ continue;
55036
+ }
55037
+ const key = this.hasKey(child);
55038
+ const notNull = this.hasNotNull(child);
55039
+ if (expr instanceof Expressions.DDLInclude) {
55040
+ const target = this.compactTokens(child.findDirectExpression(Expressions.DDLName));
55041
+ fields.push({ name: ".INCLUDE", type: target, key, notNull });
55042
+ }
55043
+ else if (expr instanceof Expressions.DDLNamedInclude) {
55044
+ const names = child.findDirectExpressions(Expressions.DDLName);
55045
+ const alias = this.compactTokens(names[0]);
55046
+ const target = this.compactTokens(names[1]);
55047
+ fields.push({ name: alias, type: target, key, notNull });
55005
55048
  }
55006
55049
  else {
55007
- const type = ((_b = f.findDirectExpression(Expressions.DDLType)) === null || _b === void 0 ? void 0 : _b.concatTokens()) || "";
55008
- fields.push({
55009
- name,
55010
- type,
55011
- key: false,
55012
- notNull: false,
55013
- });
55050
+ const name = this.compactTokens(child.findDirectExpression(Expressions.DDLName));
55051
+ const type = this.compactTokens(child.findDirectExpression(Expressions.DDLType));
55052
+ fields.push({ name, type, key, notNull });
55014
55053
  }
55015
55054
  }
55016
55055
  const result = {
55017
- name: node.findDirectExpression(Expressions.DDLName).concatTokens(),
55018
- kind: node.get() instanceof Expressions.DDLStructure ? DDLKind.Structure : DDLKind.Table,
55056
+ name: this.compactTokens(node.findDirectExpression(Expressions.DDLName)),
55057
+ kind: this.kindOf(node),
55019
55058
  fields,
55020
55059
  };
55021
55060
  return result;
55022
55061
  }
55062
+ compactTokens(node) {
55063
+ if (node === undefined) {
55064
+ return "";
55065
+ }
55066
+ return node.concatTokens().replace(/\s+/g, "");
55067
+ }
55068
+ hasKey(node) {
55069
+ var _a, _b, _c;
55070
+ for (const c of node.getChildren()) {
55071
+ const expr = (_b = (_a = c).get) === null || _b === void 0 ? void 0 : _b.call(_a);
55072
+ const ctor = (_c = expr === null || expr === void 0 ? void 0 : expr.constructor) === null || _c === void 0 ? void 0 : _c.name;
55073
+ if (ctor === "CDSAnnotation") {
55074
+ continue;
55075
+ }
55076
+ const tok = c.concatTokens().toUpperCase().trim();
55077
+ if (tok === "KEY") {
55078
+ return true;
55079
+ }
55080
+ if (tok !== "") {
55081
+ return false;
55082
+ }
55083
+ }
55084
+ return false;
55085
+ }
55086
+ hasNotNull(node) {
55087
+ var _a, _b, _c, _d;
55088
+ const children = node.getChildren();
55089
+ for (let i = 0; i < children.length - 1; i++) {
55090
+ const a = (_b = (_a = children[i]).concatTokens) === null || _b === void 0 ? void 0 : _b.call(_a).toUpperCase().trim();
55091
+ const b = (_d = (_c = children[i + 1]).concatTokens) === null || _d === void 0 ? void 0 : _d.call(_c).toUpperCase().trim();
55092
+ if (a === "NOT" && b === "NULL") {
55093
+ return true;
55094
+ }
55095
+ }
55096
+ return false;
55097
+ }
55098
+ kindOf(node) {
55099
+ const expr = node.get();
55100
+ if (expr instanceof Expressions.DDLStructure) {
55101
+ return DDLKind.Structure;
55102
+ }
55103
+ if (expr instanceof Expressions.DDLAspect) {
55104
+ return DDLKind.Aspect;
55105
+ }
55106
+ if (expr instanceof Expressions.DDLExtendType) {
55107
+ return DDLKind.ExtendType;
55108
+ }
55109
+ return DDLKind.Table;
55110
+ }
55023
55111
  }
55024
55112
  exports.DDLParser = DDLParser;
55025
55113
  //# sourceMappingURL=ddl_parser.js.map
55026
55114
 
55027
55115
  /***/ },
55028
55116
 
55117
+ /***/ "../core/build/src/ddl/expressions/ddl_aspect.js"
55118
+ /*!*******************************************************!*\
55119
+ !*** ../core/build/src/ddl/expressions/ddl_aspect.js ***!
55120
+ \*******************************************************/
55121
+ (__unused_webpack_module, exports, __webpack_require__) {
55122
+
55123
+ "use strict";
55124
+
55125
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55126
+ exports.DDLAspect = void 0;
55127
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55128
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55129
+ const ddl_extend_1 = __webpack_require__(/*! ./ddl_extend */ "../core/build/src/ddl/expressions/ddl_extend.js");
55130
+ const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "../core/build/src/ddl/expressions/ddl_include.js");
55131
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55132
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "../core/build/src/ddl/expressions/ddl_named_include.js");
55133
+ const ddl_table_field_1 = __webpack_require__(/*! ./ddl_table_field */ "../core/build/src/ddl/expressions/ddl_table_field.js");
55134
+ class DDLAspect extends combi_1.Expression {
55135
+ getRunnable() {
55136
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_table_field_1.DDLTableField, ddl_extend_1.DDLExtend);
55137
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "DEFINE", "ASPECT", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55138
+ }
55139
+ }
55140
+ exports.DDLAspect = DDLAspect;
55141
+ //# sourceMappingURL=ddl_aspect.js.map
55142
+
55143
+ /***/ },
55144
+
55145
+ /***/ "../core/build/src/ddl/expressions/ddl_clauses.js"
55146
+ /*!********************************************************!*\
55147
+ !*** ../core/build/src/ddl/expressions/ddl_clauses.js ***!
55148
+ \********************************************************/
55149
+ (__unused_webpack_module, exports, __webpack_require__) {
55150
+
55151
+ "use strict";
55152
+
55153
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55154
+ exports.DDLValueHelp = exports.DDLForeignKey = exports.DDLForeignKeyTarget = void 0;
55155
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55156
+ const ddl_literal_1 = __webpack_require__(/*! ./ddl_literal */ "../core/build/src/ddl/expressions/ddl_literal.js");
55157
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55158
+ const ddl_where_1 = __webpack_require__(/*! ./ddl_where */ "../core/build/src/ddl/expressions/ddl_where.js");
55159
+ class DDLForeignKeyTarget extends combi_1.Expression {
55160
+ getRunnable() {
55161
+ const cardinality = (0, combi_1.seq)("[", ddl_literal_1.DDLCardinalityValue, ".", ".", ddl_literal_1.DDLCardinalityValue, (0, combi_1.optPrio)((0, combi_1.seq)(",", ddl_literal_1.DDLCardinalityValue)), "]");
55162
+ return (0, combi_1.seq)((0, combi_1.optPrio)(cardinality), ddl_name_1.DDLName);
55163
+ }
55164
+ }
55165
+ exports.DDLForeignKeyTarget = DDLForeignKeyTarget;
55166
+ class DDLForeignKey extends combi_1.Expression {
55167
+ getRunnable() {
55168
+ return (0, combi_1.seq)("WITH", "FOREIGN", "KEY", DDLForeignKeyTarget, (0, combi_1.optPrio)(ddl_where_1.DDLWhere));
55169
+ }
55170
+ }
55171
+ exports.DDLForeignKey = DDLForeignKey;
55172
+ class DDLValueHelp extends combi_1.Expression {
55173
+ getRunnable() {
55174
+ return (0, combi_1.seq)("WITH", "VALUE", "HELP", ddl_name_1.DDLName, (0, combi_1.optPrio)(ddl_where_1.DDLWhere));
55175
+ }
55176
+ }
55177
+ exports.DDLValueHelp = DDLValueHelp;
55178
+ //# sourceMappingURL=ddl_clauses.js.map
55179
+
55180
+ /***/ },
55181
+
55182
+ /***/ "../core/build/src/ddl/expressions/ddl_extend.js"
55183
+ /*!*******************************************************!*\
55184
+ !*** ../core/build/src/ddl/expressions/ddl_extend.js ***!
55185
+ \*******************************************************/
55186
+ (__unused_webpack_module, exports, __webpack_require__) {
55187
+
55188
+ "use strict";
55189
+
55190
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55191
+ exports.DDLExtend = void 0;
55192
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55193
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55194
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "../core/build/src/ddl/expressions/ddl_clauses.js");
55195
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55196
+ class DDLExtend extends combi_1.Expression {
55197
+ getRunnable() {
55198
+ const clause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55199
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "EXTEND", ddl_name_1.DDLName, ":", (0, combi_1.plus)(clause), ";");
55200
+ }
55201
+ }
55202
+ exports.DDLExtend = DDLExtend;
55203
+ //# sourceMappingURL=ddl_extend.js.map
55204
+
55205
+ /***/ },
55206
+
55207
+ /***/ "../core/build/src/ddl/expressions/ddl_extend_type.js"
55208
+ /*!************************************************************!*\
55209
+ !*** ../core/build/src/ddl/expressions/ddl_extend_type.js ***!
55210
+ \************************************************************/
55211
+ (__unused_webpack_module, exports, __webpack_require__) {
55212
+
55213
+ "use strict";
55214
+
55215
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55216
+ exports.DDLExtendType = void 0;
55217
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55218
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55219
+ const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "../core/build/src/ddl/expressions/ddl_include.js");
55220
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55221
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "../core/build/src/ddl/expressions/ddl_named_include.js");
55222
+ const ddl_structure_field_1 = __webpack_require__(/*! ./ddl_structure_field */ "../core/build/src/ddl/expressions/ddl_structure_field.js");
55223
+ const ddl_table_field_1 = __webpack_require__(/*! ./ddl_table_field */ "../core/build/src/ddl/expressions/ddl_table_field.js");
55224
+ class DDLExtendType extends combi_1.Expression {
55225
+ getRunnable() {
55226
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_table_field_1.DDLTableField, ddl_structure_field_1.DDLStructureField);
55227
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "EXTEND", "TYPE", ddl_name_1.DDLName, "WITH", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55228
+ }
55229
+ }
55230
+ exports.DDLExtendType = DDLExtendType;
55231
+ //# sourceMappingURL=ddl_extend_type.js.map
55232
+
55233
+ /***/ },
55234
+
55029
55235
  /***/ "../core/build/src/ddl/expressions/ddl_include.js"
55030
55236
  /*!********************************************************!*\
55031
55237
  !*** ../core/build/src/ddl/expressions/ddl_include.js ***!
@@ -55037,10 +55243,13 @@ exports.DDLParser = DDLParser;
55037
55243
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55038
55244
  exports.DDLInclude = void 0;
55039
55245
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55246
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55247
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "../core/build/src/ddl/expressions/ddl_clauses.js");
55040
55248
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55041
55249
  class DDLInclude extends combi_1.Expression {
55042
55250
  getRunnable() {
55043
- return (0, combi_1.seq)("INCLUDE", ddl_name_1.DDLName, ";");
55251
+ const trailingClause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55252
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), "INCLUDE", ddl_name_1.DDLName, (0, combi_1.optPrio)((0, combi_1.seq)("WITH", "SUFFIX", ddl_name_1.DDLName)), (0, combi_1.optPrio)("NOT NULL"), (0, combi_1.star)(trailingClause), ";");
55044
55253
  }
55045
55254
  }
55046
55255
  exports.DDLInclude = DDLInclude;
@@ -55048,6 +55257,34 @@ exports.DDLInclude = DDLInclude;
55048
55257
 
55049
55258
  /***/ },
55050
55259
 
55260
+ /***/ "../core/build/src/ddl/expressions/ddl_literal.js"
55261
+ /*!********************************************************!*\
55262
+ !*** ../core/build/src/ddl/expressions/ddl_literal.js ***!
55263
+ \********************************************************/
55264
+ (__unused_webpack_module, exports, __webpack_require__) {
55265
+
55266
+ "use strict";
55267
+
55268
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55269
+ exports.DDLStringLiteral = exports.DDLCardinalityValue = void 0;
55270
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55271
+ const cds_integer_1 = __webpack_require__(/*! ../../cds/expressions/cds_integer */ "../core/build/src/cds/expressions/cds_integer.js");
55272
+ class DDLCardinalityValue extends combi_1.Expression {
55273
+ getRunnable() {
55274
+ return (0, combi_1.altPrio)(cds_integer_1.CDSInteger, "*");
55275
+ }
55276
+ }
55277
+ exports.DDLCardinalityValue = DDLCardinalityValue;
55278
+ class DDLStringLiteral extends combi_1.Expression {
55279
+ getRunnable() {
55280
+ return (0, combi_1.regex)(/^'[^']*'$/);
55281
+ }
55282
+ }
55283
+ exports.DDLStringLiteral = DDLStringLiteral;
55284
+ //# sourceMappingURL=ddl_literal.js.map
55285
+
55286
+ /***/ },
55287
+
55051
55288
  /***/ "../core/build/src/ddl/expressions/ddl_name.js"
55052
55289
  /*!*****************************************************!*\
55053
55290
  !*** ../core/build/src/ddl/expressions/ddl_name.js ***!
@@ -55059,9 +55296,10 @@ exports.DDLInclude = DDLInclude;
55059
55296
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55060
55297
  exports.DDLName = void 0;
55061
55298
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55299
+ const cds_name_1 = __webpack_require__(/*! ../../cds/expressions/cds_name */ "../core/build/src/cds/expressions/cds_name.js");
55062
55300
  class DDLName extends combi_1.Expression {
55063
55301
  getRunnable() {
55064
- return (0, combi_1.regex)(/^\w+$/);
55302
+ return (0, combi_1.alt)(cds_name_1.CDSName, (0, combi_1.regex)(/^"[^"]*"$/));
55065
55303
  }
55066
55304
  }
55067
55305
  exports.DDLName = DDLName;
@@ -55069,6 +55307,53 @@ exports.DDLName = DDLName;
55069
55307
 
55070
55308
  /***/ },
55071
55309
 
55310
+ /***/ "../core/build/src/ddl/expressions/ddl_named_include.js"
55311
+ /*!**************************************************************!*\
55312
+ !*** ../core/build/src/ddl/expressions/ddl_named_include.js ***!
55313
+ \**************************************************************/
55314
+ (__unused_webpack_module, exports, __webpack_require__) {
55315
+
55316
+ "use strict";
55317
+
55318
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55319
+ exports.DDLNamedInclude = void 0;
55320
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55321
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55322
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "../core/build/src/ddl/expressions/ddl_clauses.js");
55323
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55324
+ class DDLNamedInclude extends combi_1.Expression {
55325
+ getRunnable() {
55326
+ const trailingClause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55327
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), ddl_name_1.DDLName, ":", "INCLUDE", ddl_name_1.DDLName, (0, combi_1.optPrio)((0, combi_1.seq)("WITH", "SUFFIX", ddl_name_1.DDLName)), (0, combi_1.optPrio)("NOT NULL"), (0, combi_1.star)(trailingClause), ";");
55328
+ }
55329
+ }
55330
+ exports.DDLNamedInclude = DDLNamedInclude;
55331
+ //# sourceMappingURL=ddl_named_include.js.map
55332
+
55333
+ /***/ },
55334
+
55335
+ /***/ "../core/build/src/ddl/expressions/ddl_qualified_name.js"
55336
+ /*!***************************************************************!*\
55337
+ !*** ../core/build/src/ddl/expressions/ddl_qualified_name.js ***!
55338
+ \***************************************************************/
55339
+ (__unused_webpack_module, exports, __webpack_require__) {
55340
+
55341
+ "use strict";
55342
+
55343
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55344
+ exports.DDLQualifiedName = void 0;
55345
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55346
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55347
+ class DDLQualifiedName extends combi_1.Expression {
55348
+ getRunnable() {
55349
+ return (0, combi_1.seq)(ddl_name_1.DDLName, (0, combi_1.optPrio)((0, combi_1.seq)(".", ddl_name_1.DDLName)));
55350
+ }
55351
+ }
55352
+ exports.DDLQualifiedName = DDLQualifiedName;
55353
+ //# sourceMappingURL=ddl_qualified_name.js.map
55354
+
55355
+ /***/ },
55356
+
55072
55357
  /***/ "../core/build/src/ddl/expressions/ddl_structure.js"
55073
55358
  /*!**********************************************************!*\
55074
55359
  !*** ../core/build/src/ddl/expressions/ddl_structure.js ***!
@@ -55080,12 +55365,15 @@ exports.DDLName = DDLName;
55080
55365
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55081
55366
  exports.DDLStructure = void 0;
55082
55367
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55083
- const ddl_structure_field_1 = __webpack_require__(/*! ./ddl_structure_field */ "../core/build/src/ddl/expressions/ddl_structure_field.js");
55084
- const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55368
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55085
55369
  const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "../core/build/src/ddl/expressions/ddl_include.js");
55370
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55371
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "../core/build/src/ddl/expressions/ddl_named_include.js");
55372
+ const ddl_structure_field_1 = __webpack_require__(/*! ./ddl_structure_field */ "../core/build/src/ddl/expressions/ddl_structure_field.js");
55086
55373
  class DDLStructure extends combi_1.Expression {
55087
55374
  getRunnable() {
55088
- return (0, combi_1.seq)("DEFINE STRUCTURE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)((0, combi_1.altPrio)(ddl_structure_field_1.DDLStructureField, ddl_include_1.DDLInclude)), "}");
55375
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_structure_field_1.DDLStructureField);
55376
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "DEFINE", "STRUCTURE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55089
55377
  }
55090
55378
  }
55091
55379
  exports.DDLStructure = DDLStructure;
@@ -55104,11 +55392,12 @@ exports.DDLStructure = DDLStructure;
55104
55392
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55105
55393
  exports.DDLStructureField = void 0;
55106
55394
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55395
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55107
55396
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55108
55397
  const ddl_type_1 = __webpack_require__(/*! ./ddl_type */ "../core/build/src/ddl/expressions/ddl_type.js");
55109
55398
  class DDLStructureField extends combi_1.Expression {
55110
55399
  getRunnable() {
55111
- return (0, combi_1.seq)(ddl_name_1.DDLName, ":", ddl_type_1.DDLType, ";");
55400
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), ddl_name_1.DDLName, ":", ddl_type_1.DDLType, (0, combi_1.optPrio)("NOT NULL"), ";");
55112
55401
  }
55113
55402
  }
55114
55403
  exports.DDLStructureField = DDLStructureField;
@@ -55127,12 +55416,16 @@ exports.DDLStructureField = DDLStructureField;
55127
55416
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55128
55417
  exports.DDLTable = void 0;
55129
55418
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55419
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55420
+ const ddl_extend_1 = __webpack_require__(/*! ./ddl_extend */ "../core/build/src/ddl/expressions/ddl_extend.js");
55130
55421
  const ddl_include_1 = __webpack_require__(/*! ./ddl_include */ "../core/build/src/ddl/expressions/ddl_include.js");
55131
55422
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55423
+ const ddl_named_include_1 = __webpack_require__(/*! ./ddl_named_include */ "../core/build/src/ddl/expressions/ddl_named_include.js");
55132
55424
  const ddl_table_field_1 = __webpack_require__(/*! ./ddl_table_field */ "../core/build/src/ddl/expressions/ddl_table_field.js");
55133
55425
  class DDLTable extends combi_1.Expression {
55134
55426
  getRunnable() {
55135
- return (0, combi_1.seq)("DEFINE TABLE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)((0, combi_1.altPrio)(ddl_table_field_1.DDLTableField, ddl_include_1.DDLInclude)), "}");
55427
+ const entry = (0, combi_1.altPrio)(ddl_named_include_1.DDLNamedInclude, ddl_include_1.DDLInclude, ddl_table_field_1.DDLTableField, ddl_extend_1.DDLExtend);
55428
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), "DEFINE", "TABLE", ddl_name_1.DDLName, "{", (0, combi_1.plusPrio)(entry), "}", (0, combi_1.optPrio)(";"));
55136
55429
  }
55137
55430
  }
55138
55431
  exports.DDLTable = DDLTable;
@@ -55151,11 +55444,14 @@ exports.DDLTable = DDLTable;
55151
55444
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55152
55445
  exports.DDLTableField = void 0;
55153
55446
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55447
+ const expressions_1 = __webpack_require__(/*! ../../cds/expressions */ "../core/build/src/cds/expressions/index.js");
55448
+ const ddl_clauses_1 = __webpack_require__(/*! ./ddl_clauses */ "../core/build/src/ddl/expressions/ddl_clauses.js");
55154
55449
  const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55155
55450
  const ddl_type_1 = __webpack_require__(/*! ./ddl_type */ "../core/build/src/ddl/expressions/ddl_type.js");
55156
55451
  class DDLTableField extends combi_1.Expression {
55157
55452
  getRunnable() {
55158
- return (0, combi_1.seq)((0, combi_1.optPrio)("KEY"), ddl_name_1.DDLName, ":", ddl_type_1.DDLType, (0, combi_1.optPrio)("NOT NULL"), ";");
55453
+ const trailingClause = (0, combi_1.alt)(ddl_clauses_1.DDLForeignKey, ddl_clauses_1.DDLValueHelp);
55454
+ return (0, combi_1.seq)((0, combi_1.star)(expressions_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), ddl_name_1.DDLName, ":", ddl_type_1.DDLType, (0, combi_1.optPrio)("NOT NULL"), (0, combi_1.star)(trailingClause), ";");
55159
55455
  }
55160
55456
  }
55161
55457
  exports.DDLTableField = DDLTableField;
@@ -55174,9 +55470,15 @@ exports.DDLTableField = DDLTableField;
55174
55470
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55175
55471
  exports.DDLType = void 0;
55176
55472
  const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55473
+ const cds_integer_1 = __webpack_require__(/*! ../../cds/expressions/cds_integer */ "../core/build/src/cds/expressions/cds_integer.js");
55474
+ const ddl_name_1 = __webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js");
55177
55475
  class DDLType extends combi_1.Expression {
55178
55476
  getRunnable() {
55179
- return (0, combi_1.regex)(/^(abap\.)?\w+(\(\d+\))?$/);
55477
+ const decimals = (0, combi_1.seq)(",", cds_integer_1.CDSInteger);
55478
+ const lenSpec = (0, combi_1.seq)("(", cds_integer_1.CDSInteger, (0, combi_1.optPrio)(decimals), ")");
55479
+ const dotted = (0, combi_1.seq)(ddl_name_1.DDLName, ".", ddl_name_1.DDLName, (0, combi_1.optPrio)(lenSpec));
55480
+ const plain = (0, combi_1.seq)(ddl_name_1.DDLName, (0, combi_1.optPrio)(lenSpec));
55481
+ return (0, combi_1.altPrio)(dotted, plain);
55180
55482
  }
55181
55483
  }
55182
55484
  exports.DDLType = DDLType;
@@ -55184,6 +55486,31 @@ exports.DDLType = DDLType;
55184
55486
 
55185
55487
  /***/ },
55186
55488
 
55489
+ /***/ "../core/build/src/ddl/expressions/ddl_where.js"
55490
+ /*!******************************************************!*\
55491
+ !*** ../core/build/src/ddl/expressions/ddl_where.js ***!
55492
+ \******************************************************/
55493
+ (__unused_webpack_module, exports, __webpack_require__) {
55494
+
55495
+ "use strict";
55496
+
55497
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
55498
+ exports.DDLWhere = void 0;
55499
+ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
55500
+ const ddl_qualified_name_1 = __webpack_require__(/*! ./ddl_qualified_name */ "../core/build/src/ddl/expressions/ddl_qualified_name.js");
55501
+ const ddl_literal_1 = __webpack_require__(/*! ./ddl_literal */ "../core/build/src/ddl/expressions/ddl_literal.js");
55502
+ class DDLWhere extends combi_1.Expression {
55503
+ getRunnable() {
55504
+ const value = (0, combi_1.alt)(ddl_qualified_name_1.DDLQualifiedName, ddl_literal_1.DDLStringLiteral);
55505
+ const condition = (0, combi_1.seq)(ddl_qualified_name_1.DDLQualifiedName, "=", value);
55506
+ return (0, combi_1.seq)("WHERE", condition, (0, combi_1.star)((0, combi_1.seq)("AND", condition)));
55507
+ }
55508
+ }
55509
+ exports.DDLWhere = DDLWhere;
55510
+ //# sourceMappingURL=ddl_where.js.map
55511
+
55512
+ /***/ },
55513
+
55187
55514
  /***/ "../core/build/src/ddl/expressions/index.js"
55188
55515
  /*!**************************************************!*\
55189
55516
  !*** ../core/build/src/ddl/expressions/index.js ***!
@@ -55207,13 +55534,21 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
55207
55534
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
55208
55535
  };
55209
55536
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55537
+ __exportStar(__webpack_require__(/*! ./ddl_aspect */ "../core/build/src/ddl/expressions/ddl_aspect.js"), exports);
55538
+ __exportStar(__webpack_require__(/*! ./ddl_clauses */ "../core/build/src/ddl/expressions/ddl_clauses.js"), exports);
55539
+ __exportStar(__webpack_require__(/*! ./ddl_extend */ "../core/build/src/ddl/expressions/ddl_extend.js"), exports);
55540
+ __exportStar(__webpack_require__(/*! ./ddl_extend_type */ "../core/build/src/ddl/expressions/ddl_extend_type.js"), exports);
55210
55541
  __exportStar(__webpack_require__(/*! ./ddl_include */ "../core/build/src/ddl/expressions/ddl_include.js"), exports);
55542
+ __exportStar(__webpack_require__(/*! ./ddl_literal */ "../core/build/src/ddl/expressions/ddl_literal.js"), exports);
55211
55543
  __exportStar(__webpack_require__(/*! ./ddl_name */ "../core/build/src/ddl/expressions/ddl_name.js"), exports);
55544
+ __exportStar(__webpack_require__(/*! ./ddl_named_include */ "../core/build/src/ddl/expressions/ddl_named_include.js"), exports);
55545
+ __exportStar(__webpack_require__(/*! ./ddl_qualified_name */ "../core/build/src/ddl/expressions/ddl_qualified_name.js"), exports);
55212
55546
  __exportStar(__webpack_require__(/*! ./ddl_structure_field */ "../core/build/src/ddl/expressions/ddl_structure_field.js"), exports);
55213
55547
  __exportStar(__webpack_require__(/*! ./ddl_structure */ "../core/build/src/ddl/expressions/ddl_structure.js"), exports);
55214
55548
  __exportStar(__webpack_require__(/*! ./ddl_table_field */ "../core/build/src/ddl/expressions/ddl_table_field.js"), exports);
55215
55549
  __exportStar(__webpack_require__(/*! ./ddl_table */ "../core/build/src/ddl/expressions/ddl_table.js"), exports);
55216
55550
  __exportStar(__webpack_require__(/*! ./ddl_type */ "../core/build/src/ddl/expressions/ddl_type.js"), exports);
55551
+ __exportStar(__webpack_require__(/*! ./ddl_where */ "../core/build/src/ddl/expressions/ddl_where.js"), exports);
55217
55552
  //# sourceMappingURL=index.js.map
55218
55553
 
55219
55554
  /***/ },
@@ -55605,8 +55940,8 @@ var __importStar = (this && this.__importStar) || (function () {
55605
55940
  };
55606
55941
  })();
55607
55942
  Object.defineProperty(exports, "__esModule", ({ value: true }));
55608
- exports.SyntaxLogic = exports.ABAPObject = exports.Tokens = exports.ExpressionsCDS = exports.CDSParser = exports.LanguageServerTypes = exports.DDLParser = exports.AbstractFile = exports.ABAPFile = exports.MemoryFile = exports.Edits = exports.ReferenceType = exports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.SpaghettiScopeNode = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.SkipLogic = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.FormLengthStats = exports.FunctionLengthStats = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.CyclomaticComplexityStats = exports.versionToABAPRelease = exports.releaseAtLeast = exports.Release = exports.LanguageVersion = exports.Version = exports.Config = exports.Issue = void 0;
55609
- exports.LSPEdit = exports.RuleTag = exports.Severity = exports.Visibility = exports.Info = exports.Diagnostics = exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.RulesRunner = exports.SpaghettiScope = void 0;
55943
+ exports.ABAPObject = exports.Tokens = exports.ExpressionsCDS = exports.CDSParser = exports.LanguageServerTypes = exports.DDLKind = exports.DDLParser = exports.AbstractFile = exports.ABAPFile = exports.MemoryFile = exports.Edits = exports.ReferenceType = exports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.SpaghettiScopeNode = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.SkipLogic = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.FormLengthStats = exports.FunctionLengthStats = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.CyclomaticComplexityStats = exports.versionToABAPRelease = exports.releaseAtLeast = exports.Release = exports.LanguageVersion = exports.Version = exports.Config = exports.Issue = void 0;
55944
+ exports.LSPEdit = exports.RuleTag = exports.Severity = exports.Visibility = exports.Info = exports.Diagnostics = exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.RulesRunner = exports.SpaghettiScope = exports.SyntaxLogic = void 0;
55610
55945
  const issue_1 = __webpack_require__(/*! ./issue */ "../core/build/src/issue.js");
55611
55946
  Object.defineProperty(exports, "Issue", ({ enumerable: true, get: function () { return issue_1.Issue; } }));
55612
55947
  const config_1 = __webpack_require__(/*! ./config */ "../core/build/src/config.js");
@@ -55700,6 +56035,7 @@ const severity_1 = __webpack_require__(/*! ./severity */ "../core/build/src/seve
55700
56035
  Object.defineProperty(exports, "Severity", ({ enumerable: true, get: function () { return severity_1.Severity; } }));
55701
56036
  const ddl_parser_1 = __webpack_require__(/*! ./ddl/ddl_parser */ "../core/build/src/ddl/ddl_parser.js");
55702
56037
  Object.defineProperty(exports, "DDLParser", ({ enumerable: true, get: function () { return ddl_parser_1.DDLParser; } }));
56038
+ Object.defineProperty(exports, "DDLKind", ({ enumerable: true, get: function () { return ddl_parser_1.DDLKind; } }));
55703
56039
  const cds_parser_1 = __webpack_require__(/*! ./cds/cds_parser */ "../core/build/src/cds/cds_parser.js");
55704
56040
  Object.defineProperty(exports, "CDSParser", ({ enumerable: true, get: function () { return cds_parser_1.CDSParser; } }));
55705
56041
  const rules_runner_1 = __webpack_require__(/*! ./rules_runner */ "../core/build/src/rules_runner.js");
@@ -60838,6 +61174,13 @@ class DataDefinition extends _abstract_object_1.AbstractObject {
60838
61174
  }
60839
61175
  }
60840
61176
  }
61177
+ if (found === undefined) {
61178
+ // typed virtual element: VIRTUAL <name> : <type>
61179
+ const names = e.findAllExpressions(expressions_1.CDSName);
61180
+ if (e.findDirectTokenByText("VIRTUAL") !== undefined && names.length > 0) {
61181
+ found = names[0];
61182
+ }
61183
+ }
60841
61184
  if (found === undefined) {
60842
61185
  continue;
60843
61186
  }
@@ -68126,7 +68469,7 @@ class Registry {
68126
68469
  }
68127
68470
  static abaplintVersion() {
68128
68471
  // magic, see build script "version.js"
68129
- return "2.119.54";
68472
+ return "2.119.55";
68130
68473
  }
68131
68474
  getDDICReferences() {
68132
68475
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.119.54",
3
+ "version": "2.119.55",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "homepage": "https://abaplint.org",
41
41
  "devDependencies": {
42
- "@abaplint/core": "^2.119.54",
42
+ "@abaplint/core": "^2.119.55",
43
43
  "@types/chai": "^4.3.20",
44
44
  "@types/minimist": "^1.2.5",
45
45
  "@types/mocha": "^10.0.10",