@abaplint/core 2.85.2 → 2.85.6

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.
@@ -4,7 +4,7 @@ exports.SQLAliasField = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  class SQLAliasField extends combi_1.Expression {
6
6
  getRunnable() {
7
- return (0, combi_1.regex)(/^\w+~\w+$/);
7
+ return (0, combi_1.regex)(/^(\/\w+\/)?\w+~\w+$/);
8
8
  }
9
9
  }
10
10
  exports.SQLAliasField = SQLAliasField;
@@ -10,7 +10,7 @@ class SQLSource extends combi_1.Expression {
10
10
  const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));
11
11
  // todo, this Source must be a simple field?
12
12
  const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.Source, paren)));
13
- return (0, combi_1.altPrio)(_1.SQLAliasField, _1.Source, at);
13
+ return (0, combi_1.alt)(_1.SQLAliasField, _1.Source, at);
14
14
  }
15
15
  }
16
16
  exports.SQLSource = SQLSource;
@@ -10,13 +10,14 @@ class Assign {
10
10
  const tableField = (0, combi_1.seq)("TABLE FIELD", (0, combi_1.alt)(expressions_1.Source, expressions_1.Dynamic));
11
11
  const arrow = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));
12
12
  const source = (0, combi_1.alt)((0, combi_1.seq)(expressions_1.Source, (0, combi_1.opt)((0, combi_1.seq)(arrow, expressions_1.Dynamic))), component, tableField, (0, combi_1.seq)(expressions_1.Dynamic, (0, combi_1.opt)((0, combi_1.seq)(arrow, (0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic)))));
13
- const type = (0, combi_1.seq)("TYPE", (0, combi_1.alt)(expressions_1.Dynamic, expressions_1.Source));
13
+ const type = (0, combi_1.seq)("TYPE", (0, combi_1.alt)(expressions_1.Dynamic, expressions_1.TypeName));
14
14
  const like = (0, combi_1.seq)("LIKE", (0, combi_1.alt)(expressions_1.Dynamic, expressions_1.Source));
15
15
  const handle = (0, combi_1.seq)("TYPE HANDLE", expressions_1.Source);
16
16
  const range = (0, combi_1.seq)("RANGE", expressions_1.Source);
17
17
  const decimals = (0, combi_1.seq)("DECIMALS", expressions_1.Source);
18
- const casting = (0, combi_1.seq)((0, combi_1.opt)("CASTING"), (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
19
- const ret = (0, combi_1.seq)("ASSIGN", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, "INCREMENT")), source, "TO", expressions_1.FSTarget, casting, (0, combi_1.opt)(range));
18
+ const casting = (0, combi_1.seq)("CASTING", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
19
+ const obsoleteType = (0, combi_1.seq)("TYPE", expressions_1.Source, (0, combi_1.optPrio)(decimals));
20
+ const ret = (0, combi_1.seq)("ASSIGN", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, "INCREMENT")), source, "TO", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType)), (0, combi_1.opt)(range));
20
21
  return ret;
21
22
  }
22
23
  }
@@ -7,7 +7,7 @@ class ModifyInternal {
7
7
  getMatcher() {
8
8
  const index = (0, combi_1.seq)("INDEX", expressions_1.Source);
9
9
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
10
- const transporting = (0, combi_1.seq)("TRANSPORTING", (0, combi_1.plus)((0, combi_1.alt)(expressions_1.FieldSub, expressions_1.Dynamic)));
10
+ const transporting = (0, combi_1.seq)("TRANSPORTING", (0, combi_1.plus)((0, combi_1.alt)(expressions_1.ComponentChainSimple, expressions_1.Dynamic)));
11
11
  const where = (0, combi_1.seq)("WHERE", expressions_1.ComponentCond);
12
12
  const assigning = (0, combi_1.seq)("ASSIGNING", expressions_1.FSTarget);
13
13
  const using = (0, combi_1.seq)("USING KEY", expressions_1.SimpleName);
@@ -43,6 +43,13 @@ class ObjectOriented {
43
43
  }
44
44
  }
45
45
  }
46
+ const superName = classDefinition.getSuperClass();
47
+ if (superName !== undefined) {
48
+ const def = this.scope.findClassDefinition(superName);
49
+ if (def) {
50
+ this.addAliasedAttributes(def);
51
+ }
52
+ }
46
53
  }
47
54
  addAliasedTypes(aliases) {
48
55
  for (const alias of aliases.getAll()) {
@@ -195,13 +202,14 @@ class ObjectOriented {
195
202
  if (def === undefined || name === undefined) {
196
203
  return undefined;
197
204
  }
205
+ const upper = name.toUpperCase();
198
206
  for (const a of def.getAttributes().getConstants()) {
199
- if (a.getName().toUpperCase() === name.toUpperCase()) {
207
+ if (a.getName().toUpperCase() === upper) {
200
208
  return a;
201
209
  }
202
210
  }
203
211
  for (const a of def.getAliases().getAll()) {
204
- if (a.getName().toUpperCase() === name.toUpperCase()) {
212
+ if (a.getName().toUpperCase() === upper) {
205
213
  const comp = a.getComponent();
206
214
  const res = this.searchConstantName(this.scope.findObjectDefinition(comp.split("~")[0]), comp.split("~")[1]);
207
215
  if (res) {
@@ -209,6 +217,12 @@ class ObjectOriented {
209
217
  }
210
218
  }
211
219
  }
220
+ if (name.includes("~")) {
221
+ const interfaceName = upper.split("~")[0];
222
+ if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName)) {
223
+ return this.searchConstantName(this.scope.findInterfaceDefinition(interfaceName), name.split("~")[1]);
224
+ }
225
+ }
212
226
  const sup = def.getSuperClass();
213
227
  if (sup) {
214
228
  return this.searchConstantName(this.findSuperDefinition(sup), name);
@@ -68,7 +68,7 @@ class Registry {
68
68
  }
69
69
  static abaplintVersion() {
70
70
  // magic, see build script "version.sh"
71
- return "2.85.2";
71
+ return "2.85.6";
72
72
  }
73
73
  getDDICReferences() {
74
74
  return this.references;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.85.2",
3
+ "version": "2.85.6",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",