@abaplint/core 2.120.55 → 2.120.56
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/registry.js
CHANGED
package/build/src/rules/index.js
CHANGED
|
@@ -148,6 +148,7 @@ __exportStar(require("./prefer_inline"), exports);
|
|
|
148
148
|
__exportStar(require("./prefer_insert_into_table"), exports);
|
|
149
149
|
__exportStar(require("./prefer_is_not"), exports);
|
|
150
150
|
__exportStar(require("./prefer_pragmas"), exports);
|
|
151
|
+
__exportStar(require("./prefer_abap_bool"), exports);
|
|
151
152
|
__exportStar(require("./prefer_raise_exception_new"), exports);
|
|
152
153
|
__exportStar(require("./prefer_returning_to_exporting"), exports);
|
|
153
154
|
__exportStar(require("./prefer_xsdbool"), exports);
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PreferAbapBool = exports.PreferAbapBoolConf = void 0;
|
|
37
|
+
const issue_1 = require("../issue");
|
|
38
|
+
const _abap_rule_1 = require("./_abap_rule");
|
|
39
|
+
const Expressions = __importStar(require("../abap/2_statements/expressions"));
|
|
40
|
+
const Statements = __importStar(require("../abap/2_statements/statements"));
|
|
41
|
+
const _basic_rule_config_1 = require("./_basic_rule_config");
|
|
42
|
+
const _irule_1 = require("./_irule");
|
|
43
|
+
const edit_helper_1 = require("../edit_helper");
|
|
44
|
+
const FORBIDDEN_TYPES = new Set(["XFELD", "SAP_BOOL", "BOOLE_D", "FLAG"]);
|
|
45
|
+
class PreferAbapBoolConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
46
|
+
}
|
|
47
|
+
exports.PreferAbapBoolConf = PreferAbapBoolConf;
|
|
48
|
+
class PreferAbapBool extends _abap_rule_1.ABAPRule {
|
|
49
|
+
constructor() {
|
|
50
|
+
super(...arguments);
|
|
51
|
+
this.conf = new PreferAbapBoolConf();
|
|
52
|
+
}
|
|
53
|
+
getMetadata() {
|
|
54
|
+
return {
|
|
55
|
+
key: "prefer_abap_bool",
|
|
56
|
+
title: "Prefer abap_bool",
|
|
57
|
+
shortDescription: `Use abap_bool instead of XFELD, SAP_BOOL, BOOLE_D, FLAG for boolean variables`,
|
|
58
|
+
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-abap_bool-for-booleans`,
|
|
59
|
+
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],
|
|
60
|
+
badExample: `DATA foo TYPE xfeld.`,
|
|
61
|
+
goodExample: `DATA foo TYPE abap_bool.`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
getConfig() {
|
|
65
|
+
return this.conf;
|
|
66
|
+
}
|
|
67
|
+
setConfig(conf) {
|
|
68
|
+
this.conf = conf;
|
|
69
|
+
}
|
|
70
|
+
runParsed(file) {
|
|
71
|
+
const issues = [];
|
|
72
|
+
const structure = file.getStructure();
|
|
73
|
+
if (structure === undefined) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const statements = [
|
|
77
|
+
...structure.findAllStatements(Statements.Data),
|
|
78
|
+
...structure.findAllStatements(Statements.ClassData),
|
|
79
|
+
...structure.findAllStatements(Statements.Constant),
|
|
80
|
+
...structure.findAllStatements(Statements.Type),
|
|
81
|
+
...structure.findAllStatements(Statements.FieldSymbol),
|
|
82
|
+
];
|
|
83
|
+
for (const stat of statements) {
|
|
84
|
+
const typeNameExpr = stat.findFirstExpression(Expressions.TypeName);
|
|
85
|
+
if (typeNameExpr === undefined) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const typeName = typeNameExpr.concatTokens().toUpperCase();
|
|
89
|
+
if (FORBIDDEN_TYPES.has(typeName) === false) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const token = typeNameExpr.getFirstToken();
|
|
93
|
+
const fix = edit_helper_1.EditHelper.replaceToken(file, token, "abap_bool");
|
|
94
|
+
issues.push(issue_1.Issue.atToken(file, token, `Use abap_bool instead of ${typeName}`, this.getMetadata().key, this.conf.severity, fix));
|
|
95
|
+
}
|
|
96
|
+
return issues;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.PreferAbapBool = PreferAbapBool;
|
|
100
|
+
//# sourceMappingURL=prefer_abap_bool.js.map
|