@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.
- package/build/src/abap/2_statements/expressions/sql_alias_field.js +1 -1
- package/build/src/abap/2_statements/expressions/sql_source.js +1 -1
- package/build/src/abap/2_statements/statements/assign.js +4 -3
- package/build/src/abap/2_statements/statements/modify_internal.js +1 -1
- package/build/src/abap/5_syntax/_object_oriented.js +16 -2
- package/build/src/registry.js +1 -1
- package/package.json +1 -1
|
@@ -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)(
|
|
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.
|
|
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.
|
|
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)(
|
|
19
|
-
const
|
|
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.
|
|
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() ===
|
|
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() ===
|
|
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);
|
package/build/src/registry.js
CHANGED