@abaplint/core 2.80.10 → 2.81.3
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 +37 -16
- package/build/src/abap/2_statements/expressions/sql_arithmetics.js +2 -1
- package/build/src/abap/2_statements/expressions/sql_function.js +11 -5
- package/build/src/abap/2_statements/statements/move.js +3 -2
- package/build/src/abap/3_structures/structures/normal.js +1 -1
- package/build/src/abap/5_syntax/_builtin.js +817 -80
- package/build/src/abap/5_syntax/_current_scope.js +26 -0
- package/build/src/abap/5_syntax/_object_oriented.js +13 -9
- package/build/src/abap/5_syntax/_reference.js +16 -16
- package/build/src/abap/5_syntax/_scope_type.js +1 -0
- package/build/src/abap/5_syntax/basic_types.js +5 -1
- package/build/src/abap/5_syntax/spaghetti_scope.js +13 -0
- package/build/src/abap/5_syntax/statements/class_implementation.js +6 -5
- package/build/src/abap/5_syntax/statements/method_implementation.js +5 -3
- package/build/src/abap/5_syntax/statements/read_table.js +4 -1
- package/build/src/abap/5_syntax/syntax.js +6 -1
- package/build/src/abap/nodes/expression_node.js +2 -2
- package/build/src/abap/nodes/statement_node.js +1 -1
- package/build/src/abap/types/class_definition.js +1 -2
- package/build/src/edit_helper.js +32 -9
- package/build/src/lsp/_lookup.js +46 -25
- package/build/src/registry.js +1 -1
- package/build/src/rules/index.js +2 -0
- package/build/src/rules/no_chained_assignment.js +52 -0
- package/build/src/rules/parser_missing_space.js +2 -1
- package/build/src/rules/prefer_inline.js +3 -2
- package/build/src/rules/unnecessary_chaining.js +58 -0
- package/build/src/rules/unreachable_code.js +4 -0
- package/package.json +6 -5
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnnecessaryChaining = exports.UnnecessaryChainingConf = void 0;
|
|
4
|
+
const issue_1 = require("../issue");
|
|
5
|
+
const _abap_rule_1 = require("./_abap_rule");
|
|
6
|
+
const _basic_rule_config_1 = require("./_basic_rule_config");
|
|
7
|
+
const _irule_1 = require("./_irule");
|
|
8
|
+
class UnnecessaryChainingConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
9
|
+
}
|
|
10
|
+
exports.UnnecessaryChainingConf = UnnecessaryChainingConf;
|
|
11
|
+
class UnnecessaryChaining extends _abap_rule_1.ABAPRule {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.conf = new UnnecessaryChainingConf();
|
|
15
|
+
}
|
|
16
|
+
getMetadata() {
|
|
17
|
+
return {
|
|
18
|
+
key: "unnecessary_chaining",
|
|
19
|
+
title: "Unnecessary Chaining",
|
|
20
|
+
shortDescription: `Find unnecessary chaining, all statements are checked`,
|
|
21
|
+
extendedInformation: ``,
|
|
22
|
+
tags: [_irule_1.RuleTag.SingleFile],
|
|
23
|
+
badExample: `WRITE: bar.`,
|
|
24
|
+
goodExample: `WRITE bar.`,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
getConfig() {
|
|
28
|
+
return this.conf;
|
|
29
|
+
}
|
|
30
|
+
setConfig(conf) {
|
|
31
|
+
this.conf = conf;
|
|
32
|
+
}
|
|
33
|
+
runParsed(file) {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
const issues = [];
|
|
36
|
+
const statements = file.getStatements();
|
|
37
|
+
for (let i = 0; i < statements.length; i++) {
|
|
38
|
+
const colon = statements[i].getColon();
|
|
39
|
+
if (colon === undefined) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const next = (_a = statements[i + 1]) === null || _a === void 0 ? void 0 : _a.getColon();
|
|
43
|
+
const prev = (_b = statements[i - 1]) === null || _b === void 0 ? void 0 : _b.getColon();
|
|
44
|
+
if (next !== undefined && colon.getStart().equals(next.getStart())) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
else if (prev !== undefined && colon.getStart().equals(prev.getStart())) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const message = "Unnecessary chaining";
|
|
51
|
+
const issue = issue_1.Issue.atStatement(file, statements[i], message, this.getMetadata().key);
|
|
52
|
+
issues.push(issue);
|
|
53
|
+
}
|
|
54
|
+
return issues;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.UnnecessaryChaining = UnnecessaryChaining;
|
|
58
|
+
//# sourceMappingURL=unnecessary_chaining.js.map
|
|
@@ -67,6 +67,10 @@ class UnreachableCode extends _abap_rule_1.ABAPRule {
|
|
|
67
67
|
return true;
|
|
68
68
|
}
|
|
69
69
|
else if (s instanceof Statements.Leave && n.findFirstExpression(Expressions.AndReturn) === undefined) {
|
|
70
|
+
const concat = n.concatTokens();
|
|
71
|
+
if (concat.includes(" TO LIST-PROCESSING")) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
70
74
|
return true;
|
|
71
75
|
}
|
|
72
76
|
else if (s instanceof Statements.Return
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.81.3",
|
|
4
4
|
"description": "abaplint - Core API",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/abaplint.d.ts",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"test:parallel": "npm run compile && mocha --timeout 1000 --parallel --reporter dot",
|
|
14
14
|
"coverage": "npm run compile && c8 mocha && c8 report --reporter=html",
|
|
15
15
|
"schema": "node scripts/schema.js > scripts/schema.ts && ts-json-schema-generator --tsconfig tsconfig_schema.json --jsDoc extended --path scripts/schema.ts > scripts/schema.json && node scripts/schema_post.js",
|
|
16
|
+
"publish:minor": "npm --no-git-tag-version version minor && rm -rf build && npm install && npm run test && npm publish --access public",
|
|
16
17
|
"publish:patch": "npm --no-git-tag-version version patch && rm -rf build && npm install && npm run test && npm publish --access public"
|
|
17
18
|
},
|
|
18
19
|
"mocha": {
|
|
@@ -47,14 +48,14 @@
|
|
|
47
48
|
"@microsoft/api-extractor": "^7.18.19",
|
|
48
49
|
"@types/chai": "^4.2.22",
|
|
49
50
|
"@types/mocha": "^9.0.0",
|
|
50
|
-
"@types/node": "^16.11.
|
|
51
|
+
"@types/node": "^16.11.9",
|
|
51
52
|
"chai": "^4.3.4",
|
|
52
|
-
"eslint": "^8.
|
|
53
|
+
"eslint": "^8.3.0",
|
|
53
54
|
"mocha": "^9.1.3",
|
|
54
55
|
"c8": "^7.10.0",
|
|
55
|
-
"source-map-support": "^0.5.
|
|
56
|
+
"source-map-support": "^0.5.21",
|
|
56
57
|
"ts-json-schema-generator": "^0.97.0",
|
|
57
|
-
"typescript": "^4.
|
|
58
|
+
"typescript": "^4.5.2"
|
|
58
59
|
},
|
|
59
60
|
"dependencies": {
|
|
60
61
|
"fast-xml-parser": "^3.21.1",
|