@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.
@@ -75,7 +75,7 @@ class Registry {
75
75
  }
76
76
  static abaplintVersion() {
77
77
  // magic, see build script "version.js"
78
- return "2.120.55";
78
+ return "2.120.56";
79
79
  }
80
80
  getDDICReferences() {
81
81
  return this.ddicReferences;
@@ -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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.120.55",
3
+ "version": "2.120.56",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",