@abaplint/core 2.93.50 → 2.93.52
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 +5 -0
- package/build/src/abap/2_statements/expressions/index.js +1 -0
- package/build/src/abap/2_statements/expressions/reduce_next.js +1 -1
- package/build/src/abap/2_statements/expressions/simple_target.js +22 -0
- package/build/src/abap/2_statements/statements/class_definition.js +1 -1
- package/build/src/abap/2_statements/statements/commit_entities.js +1 -1
- package/build/src/abap/2_statements/statements/method_def.js +1 -1
- package/build/src/abap/2_statements/statements/modify_entities.js +1 -1
- package/build/src/abap/2_statements/statements/raise.js +2 -1
- package/build/src/abap/2_statements/statements/read_entities.js +1 -1
- package/build/src/abap/5_syntax/expressions/reduce_next.js +4 -0
- package/build/src/registry.js +1 -1
- package/build/src/rules/downport.js +1 -1
- package/build/src/rules/slow_parameter_passing.js +3 -0
- package/package.json +3 -3
package/build/abaplint.d.ts
CHANGED
|
@@ -1835,6 +1835,7 @@ declare namespace Expressions {
|
|
|
1835
1835
|
Cast,
|
|
1836
1836
|
ClassFinal,
|
|
1837
1837
|
ClassFriends,
|
|
1838
|
+
SimpleTarget,
|
|
1838
1839
|
ClassGlobal_2 as ClassGlobal,
|
|
1839
1840
|
ClassName,
|
|
1840
1841
|
Color,
|
|
@@ -4886,6 +4887,10 @@ declare class SimpleSource4 extends Expression {
|
|
|
4886
4887
|
getRunnable(): IStatementRunnable;
|
|
4887
4888
|
}
|
|
4888
4889
|
|
|
4890
|
+
declare class SimpleTarget extends Expression {
|
|
4891
|
+
getRunnable(): IStatementRunnable;
|
|
4892
|
+
}
|
|
4893
|
+
|
|
4889
4894
|
declare class SimpleType extends AbstractType {
|
|
4890
4895
|
toText(): string;
|
|
4891
4896
|
toABAP(): string;
|
|
@@ -30,6 +30,7 @@ __exportStar(require("./call_transformation_parameters"), exports);
|
|
|
30
30
|
__exportStar(require("./cast"), exports);
|
|
31
31
|
__exportStar(require("./class_final"), exports);
|
|
32
32
|
__exportStar(require("./class_friends"), exports);
|
|
33
|
+
__exportStar(require("./simple_target"), exports);
|
|
33
34
|
__exportStar(require("./class_global"), exports);
|
|
34
35
|
__exportStar(require("./class_name"), exports);
|
|
35
36
|
__exportStar(require("./color"), exports);
|
|
@@ -8,7 +8,7 @@ const version_1 = require("../../../version");
|
|
|
8
8
|
class ReduceNext extends combi_1.Expression {
|
|
9
9
|
getRunnable() {
|
|
10
10
|
const calcAssign = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), "="), (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WDash), "="), "/=", "*=", "&&="));
|
|
11
|
-
const fields = (0, combi_1.seq)(_1.
|
|
11
|
+
const fields = (0, combi_1.seq)(_1.SimpleTarget, (0, combi_1.altPrio)("=", calcAssign), _1.Source);
|
|
12
12
|
return (0, combi_1.seq)("NEXT", (0, combi_1.plus)(fields));
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SimpleTarget = void 0;
|
|
4
|
+
const combi_1 = require("../combi");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const tokens_1 = require("../../1_lexer/tokens");
|
|
7
|
+
const attribute_name_1 = require("./attribute_name");
|
|
8
|
+
const dereference_1 = require("./dereference");
|
|
9
|
+
class SimpleTarget extends combi_1.Expression {
|
|
10
|
+
getRunnable() {
|
|
11
|
+
const attr = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), attribute_name_1.AttributeName);
|
|
12
|
+
const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentName);
|
|
13
|
+
const something = (0, combi_1.starPrio)((0, combi_1.altPrio)(dereference_1.Dereference, attr, comp, _1.TableExpression));
|
|
14
|
+
const cast = (0, combi_1.seq)((0, combi_1.altPrio)(_1.Cast, _1.NewObject), _1.Arrow, _1.FieldAll);
|
|
15
|
+
const clas = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow), attribute_name_1.AttributeName);
|
|
16
|
+
const start = (0, combi_1.altPrio)(cast, clas, _1.TargetField, _1.TargetFieldSymbol);
|
|
17
|
+
const fields = (0, combi_1.seq)((0, combi_1.optPrio)(_1.FieldOffset), (0, combi_1.optPrio)(_1.FieldLength));
|
|
18
|
+
return (0, combi_1.seq)(start, something, fields);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.SimpleTarget = SimpleTarget;
|
|
22
|
+
//# sourceMappingURL=simple_target.js.map
|
|
@@ -11,7 +11,7 @@ class ClassDefinition {
|
|
|
11
11
|
const risk = (0, combi_1.seq)("RISK LEVEL", level);
|
|
12
12
|
const time = (0, combi_1.alt)("LONG", "MEDIUM", "SHORT");
|
|
13
13
|
const duration = (0, combi_1.seq)("DURATION", time);
|
|
14
|
-
const blah = (0, combi_1.per)(expressions_1.ClassGlobal, expressions_1.ClassFinal, "ABSTRACT", (0, combi_1.seq)("INHERITING FROM", expressions_1.SuperClassName), create, "FOR TESTING", risk, "SHARED MEMORY ENABLED", duration, (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("FOR BEHAVIOR OF", expressions_1.
|
|
14
|
+
const blah = (0, combi_1.per)(expressions_1.ClassGlobal, expressions_1.ClassFinal, "ABSTRACT", (0, combi_1.seq)("INHERITING FROM", expressions_1.SuperClassName), create, "FOR TESTING", risk, "SHARED MEMORY ENABLED", duration, (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("FOR BEHAVIOR OF", expressions_1.NamespaceSimpleName)), expressions_1.ClassFriends);
|
|
15
15
|
const def = (0, combi_1.seq)("DEFINITION", (0, combi_1.opt)(blah));
|
|
16
16
|
return (0, combi_1.seq)("CLASS", expressions_1.ClassName, def);
|
|
17
17
|
}
|
|
@@ -6,7 +6,7 @@ const expressions_1 = require("../expressions");
|
|
|
6
6
|
const version_1 = require("../../../version");
|
|
7
7
|
class CommitEntities {
|
|
8
8
|
getMatcher() {
|
|
9
|
-
const s = (0, combi_1.seq)("COMMIT ENTITIES", (0, combi_1.optPrio)("IN SIMULATION MODE"), (0, combi_1.star)((0, combi_1.seq)("RESPONSE OF", expressions_1.
|
|
9
|
+
const s = (0, combi_1.seq)("COMMIT ENTITIES", (0, combi_1.optPrio)("IN SIMULATION MODE"), (0, combi_1.star)((0, combi_1.seq)("RESPONSE OF", expressions_1.NamespaceSimpleName, "FAILED", expressions_1.Target, "REPORTED", expressions_1.Target)));
|
|
10
10
|
return (0, combi_1.ver)(version_1.Version.v754, s);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -13,7 +13,7 @@ class MethodDef {
|
|
|
13
13
|
const tableFunction = (0, combi_1.seq)("TABLE FUNCTION", (0, combi_1.regex)(/^\w+?$/));
|
|
14
14
|
// todo, this is only from version something
|
|
15
15
|
const ddl = "DDL OBJECT OPTIONS CDS SESSION CLIENT REQUIRED";
|
|
16
|
-
const behavior = (0, combi_1.altPrio)((0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY IMPORTING", expressions_1.MethodParamName, "FOR ACTION", expressions_1.TypeName, "RESULT", expressions_1.MethodParamName), (0, combi_1.seq)("FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.NamespaceSimpleName, "FOR", expressions_1.NamespaceSimpleName, "RESULT", expressions_1.MethodParamName), (0, combi_1.seq)("DETERMINE ON MODIFY IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName));
|
|
16
|
+
const behavior = (0, combi_1.altPrio)((0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY IMPORTING", expressions_1.MethodParamName, "FOR ACTION", expressions_1.TypeName, "RESULT", expressions_1.MethodParamName), (0, combi_1.seq)("READ IMPORTING", expressions_1.MethodParamName, "FOR READ", expressions_1.TypeName, "RESULT", expressions_1.MethodParamName), (0, combi_1.seq)("FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.NamespaceSimpleName, "FOR", expressions_1.NamespaceSimpleName, "RESULT", expressions_1.MethodParamName), (0, combi_1.seq)("DETERMINE ON MODIFY IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("DETERMINE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName));
|
|
17
17
|
// todo, this is only from version something
|
|
18
18
|
const amdp = (0, combi_1.seq)("AMDP OPTIONS CDS SESSION CLIENT CURRENT", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
|
|
19
19
|
const ret = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)("FOR", (0, combi_1.alt)(tableFunction, ddl, behavior)), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
|
|
@@ -8,7 +8,7 @@ class ModifyEntities {
|
|
|
8
8
|
getMatcher() {
|
|
9
9
|
const fieldsWith = (0, combi_1.seq)("FIELDS (", (0, combi_1.plus)(expressions_1.SimpleName), ") WITH", expressions_1.Source);
|
|
10
10
|
const operation = (0, combi_1.alt)((0, combi_1.seq)("UPDATE SET FIELDS WITH", expressions_1.Source), (0, combi_1.seq)("UPDATE", fieldsWith), (0, combi_1.seq)("DELETE FROM", expressions_1.Source), (0, combi_1.seq)("EXECUTE", expressions_1.SimpleName, "FROM", expressions_1.Source), (0, combi_1.seq)("CREATE", (0, combi_1.optPrio)("AUTO FILL CID"), fieldsWith));
|
|
11
|
-
const s = (0, combi_1.seq)("MODIFY ENTITIES OF", expressions_1.
|
|
11
|
+
const s = (0, combi_1.seq)("MODIFY ENTITIES OF", expressions_1.NamespaceSimpleName, (0, combi_1.opt)("IN LOCAL MODE"), "ENTITY", expressions_1.SimpleName, operation, (0, combi_1.optPrio)((0, combi_1.seq)("MAPPED", expressions_1.Target)), (0, combi_1.per)((0, combi_1.seq)("FAILED", expressions_1.Target), (0, combi_1.seq)("RESULT", expressions_1.Target), (0, combi_1.seq)("REPORTED", expressions_1.Target)));
|
|
12
12
|
return (0, combi_1.ver)(version_1.Version.v754, s);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -10,7 +10,8 @@ class Raise {
|
|
|
10
10
|
const messid = (0, combi_1.seq)("MESSAGE ID", expressions_1.Source, "NUMBER", (0, combi_1.altPrio)(expressions_1.MessageNumber, expressions_1.Source), (0, combi_1.optPrio)(expressions_1.RaiseWith));
|
|
11
11
|
const exporting = (0, combi_1.seq)("EXPORTING", expressions_1.ParameterListS);
|
|
12
12
|
const from = (0, combi_1.seq)("TYPE", expressions_1.ClassName, (0, combi_1.opt)((0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v750, (0, combi_1.alt)(mess, messid)), (0, combi_1.ver)(version_1.Version.v752, "USING MESSAGE"))), (0, combi_1.optPrio)(exporting));
|
|
13
|
-
const
|
|
13
|
+
const pre = (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)("RESUMABLE"), "EXCEPTION"), "SHORTDUMP");
|
|
14
|
+
const clas = (0, combi_1.seq)(pre, (0, combi_1.altPrio)(from, (0, combi_1.ver)(version_1.Version.v752, expressions_1.Source), expressions_1.SimpleSource2));
|
|
14
15
|
const ret = (0, combi_1.seq)("RAISE", (0, combi_1.altPrio)(clas, expressions_1.ExceptionName));
|
|
15
16
|
return ret;
|
|
16
17
|
}
|
|
@@ -7,7 +7,7 @@ const version_1 = require("../../../version");
|
|
|
7
7
|
const tokens_1 = require("../../1_lexer/tokens");
|
|
8
8
|
class ReadEntities {
|
|
9
9
|
getMatcher() {
|
|
10
|
-
const s = (0, combi_1.seq)("READ ENTITIES OF", expressions_1.
|
|
10
|
+
const s = (0, combi_1.seq)("READ ENTITIES OF", expressions_1.NamespaceSimpleName, "IN LOCAL MODE", "ENTITY", expressions_1.SimpleName, (0, combi_1.opt)((0, combi_1.seq)("BY", expressions_1.AssociationName)), "FIELDS", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.plus)(expressions_1.SimpleName), (0, combi_1.tok)(tokens_1.WParenRightW), "WITH", expressions_1.Source, "RESULT", expressions_1.Target, (0, combi_1.optPrio)((0, combi_1.seq)("LINK", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)("FAILED", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)("REPORTED", expressions_1.Target)));
|
|
11
11
|
return (0, combi_1.ver)(version_1.Version.v754, s);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ReduceNext = void 0;
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
|
+
const target_1 = require("./target");
|
|
6
7
|
class ReduceNext {
|
|
7
8
|
runSyntax(node, scope, filename) {
|
|
8
9
|
if (node === undefined) {
|
|
@@ -11,6 +12,9 @@ class ReduceNext {
|
|
|
11
12
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
12
13
|
new source_1.Source().runSyntax(s, scope, filename);
|
|
13
14
|
}
|
|
15
|
+
for (const s of node.findDirectExpressions(Expressions.SimpleTarget)) {
|
|
16
|
+
new target_1.Target().runSyntax(s, scope, filename);
|
|
17
|
+
}
|
|
14
18
|
}
|
|
15
19
|
}
|
|
16
20
|
exports.ReduceNext = ReduceNext;
|
package/build/src/registry.js
CHANGED
|
@@ -1713,7 +1713,7 @@ ${indentation} output = ${topTarget}.`;
|
|
|
1713
1713
|
if (concat.toUpperCase() === "NEXT") {
|
|
1714
1714
|
continue;
|
|
1715
1715
|
}
|
|
1716
|
-
else if (n.get() instanceof Expressions.
|
|
1716
|
+
else if (n.get() instanceof Expressions.SimpleTarget) {
|
|
1717
1717
|
body += indentation + " " + concat + " ";
|
|
1718
1718
|
}
|
|
1719
1719
|
else if (n.get() instanceof Expressions.Source) {
|
|
@@ -50,6 +50,9 @@ class SlowParameterPassing {
|
|
|
50
50
|
const writes = this.listWritePositions(m, id);
|
|
51
51
|
if (writes.length === 0) {
|
|
52
52
|
const message = "Parameter " + id.getName() + " passed by VALUE but not changed";
|
|
53
|
+
if (this.reg.isFileDependency(id.getFilename()) === true) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
53
56
|
issues.push(issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.getConfig().severity));
|
|
54
57
|
}
|
|
55
58
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/core",
|
|
3
|
-
"version": "2.93.
|
|
3
|
+
"version": "2.93.52",
|
|
4
4
|
"description": "abaplint - Core API",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/abaplint.d.ts",
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
"@microsoft/api-extractor": "^7.33.4",
|
|
50
50
|
"@types/chai": "^4.3.3",
|
|
51
51
|
"@types/mocha": "^10.0.0",
|
|
52
|
-
"@types/node": "^18.11.
|
|
52
|
+
"@types/node": "^18.11.5",
|
|
53
53
|
"chai": "^4.3.6",
|
|
54
|
-
"eslint": "^8.
|
|
54
|
+
"eslint": "^8.26.0",
|
|
55
55
|
"mocha": "^10.1.0",
|
|
56
56
|
"c8": "^7.12.0",
|
|
57
57
|
"source-map-support": "^0.5.21",
|