@abaplint/core 2.113.230 → 2.113.232
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/abaplint.d.ts +1 -0
- package/build/src/abap/2_statements/expressions/component_compare_simple.js +3 -1
- package/build/src/abap/2_statements/statements/call_badi.js +1 -1
- package/build/src/abap/5_syntax/expressions/component_compare_simple.js +3 -1
- package/build/src/abap/5_syntax/expressions/field_chain.js +1 -1
- package/build/src/abap/5_syntax/statements/read_table.js +2 -5
- package/build/src/abap/nodes/statement_node.js +9 -0
- package/build/src/registry.js +1 -1
- package/package.json +1 -1
package/build/abaplint.d.ts
CHANGED
|
@@ -6351,6 +6351,7 @@ declare class StatementNode extends AbstractNode<ExpressionNode | TokenNode> {
|
|
|
6351
6351
|
getLastToken(): Token;
|
|
6352
6352
|
findDirectExpression(type: new () => IStatementRunnable): ExpressionNode | undefined;
|
|
6353
6353
|
findDirectExpressions(type: new () => IStatementRunnable): readonly ExpressionNode[];
|
|
6354
|
+
findDirectExpressionsMulti(type: (new () => IStatementRunnable)[]): readonly ExpressionNode[];
|
|
6354
6355
|
findDirectTokenByText(text: string): Token | undefined;
|
|
6355
6356
|
findFirstExpression(type: new () => IStatementRunnable): ExpressionNode | undefined;
|
|
6356
6357
|
findAllExpressions(type: new () => IStatementRunnable): readonly ExpressionNode[];
|
|
@@ -4,9 +4,11 @@ exports.ComponentCompareSimple = void 0;
|
|
|
4
4
|
const combi_1 = require("../combi");
|
|
5
5
|
const _1 = require(".");
|
|
6
6
|
const component_chain_simple_1 = require("./component_chain_simple");
|
|
7
|
+
const version_1 = require("../../../version");
|
|
7
8
|
class ComponentCompareSimple extends combi_1.Expression {
|
|
8
9
|
getRunnable() {
|
|
9
|
-
const
|
|
10
|
+
const source = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v740sp02, _1.Source, version_1.Version.OpenABAP), _1.SimpleSource4);
|
|
11
|
+
const ret = (0, combi_1.seq)((0, combi_1.altPrio)(component_chain_simple_1.ComponentChainSimple, _1.Dynamic), "=", source);
|
|
10
12
|
return (0, combi_1.plus)(ret);
|
|
11
13
|
}
|
|
12
14
|
}
|
|
@@ -6,7 +6,7 @@ const expressions_1 = require("../expressions");
|
|
|
6
6
|
const version_1 = require("../../../version");
|
|
7
7
|
class CallBadi {
|
|
8
8
|
getMatcher() {
|
|
9
|
-
const call = (0, combi_1.seq)("CALL
|
|
9
|
+
const call = (0, combi_1.seq)("CALL BADI", expressions_1.MethodSource, expressions_1.MethodCallBody);
|
|
10
10
|
return (0, combi_1.verNot)(version_1.Version.Cloud, call);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -18,7 +18,9 @@ class ComponentCompareSimple {
|
|
|
18
18
|
else if (c.get() instanceof Expressions.Dynamic) {
|
|
19
19
|
targetType = undefined;
|
|
20
20
|
}
|
|
21
|
-
else if (c.get() instanceof Expressions.Source
|
|
21
|
+
else if (c.get() instanceof Expressions.Source
|
|
22
|
+
|| c.get() instanceof Expressions.SimpleSource4
|
|
23
|
+
|| c.get() instanceof Expressions.SimpleSource2) {
|
|
22
24
|
const sourceType = source_1.Source.runSyntax(c, input, targetType);
|
|
23
25
|
if (targetType && new _type_utils_1.TypeUtils(input.scope).isAssignable(sourceType, targetType) === false) {
|
|
24
26
|
const message = "ComponentCompareSimple, incompatible types";
|
|
@@ -23,7 +23,7 @@ class FieldChain {
|
|
|
23
23
|
if (((_a = node.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.SourceField
|
|
24
24
|
&& node.findDirectExpression(Expressions.ComponentName)) {
|
|
25
25
|
// workaround for names with dashes, eg. "sy-repid"
|
|
26
|
-
const concat = node.concatTokens();
|
|
26
|
+
const concat = node.concatTokens().replace(/ /g, "");
|
|
27
27
|
const offset = ((_b = node.findDirectExpression(Expressions.FieldOffset)) === null || _b === void 0 ? void 0 : _b.concatTokens()) || "";
|
|
28
28
|
const length = ((_c = node.findDirectExpression(Expressions.FieldLength)) === null || _c === void 0 ? void 0 : _c.concatTokens()) || "";
|
|
29
29
|
const found = input.scope.findVariable(concat.replace(offset, "").replace(length, ""));
|
|
@@ -13,11 +13,8 @@ const _syntax_input_1 = require("../_syntax_input");
|
|
|
13
13
|
class ReadTable {
|
|
14
14
|
runSyntax(node, input) {
|
|
15
15
|
const concat = node.concatTokens().toUpperCase();
|
|
16
|
-
const sources = node.
|
|
17
|
-
|
|
18
|
-
if (firstSource === undefined) {
|
|
19
|
-
firstSource = sources[0];
|
|
20
|
-
}
|
|
16
|
+
const sources = node.findDirectExpressionsMulti([Expressions.Source, Expressions.SimpleSource2]);
|
|
17
|
+
const firstSource = sources[0];
|
|
21
18
|
const sourceType = firstSource ? source_1.Source.runSyntax(firstSource, input) : undefined;
|
|
22
19
|
if (sourceType === undefined) {
|
|
23
20
|
const message = "No source type determined, read table";
|
|
@@ -172,6 +172,15 @@ class StatementNode extends _abstract_node_1.AbstractNode {
|
|
|
172
172
|
}
|
|
173
173
|
return ret;
|
|
174
174
|
}
|
|
175
|
+
findDirectExpressionsMulti(type) {
|
|
176
|
+
const ret = [];
|
|
177
|
+
for (const child of this.getChildren()) {
|
|
178
|
+
if (child instanceof expression_node_1.ExpressionNode && type.some(t => child.get() instanceof t)) {
|
|
179
|
+
ret.push(child);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return ret;
|
|
183
|
+
}
|
|
175
184
|
findDirectTokenByText(text) {
|
|
176
185
|
const upper = text.toUpperCase();
|
|
177
186
|
for (const child of this.getChildren()) {
|
package/build/src/registry.js
CHANGED