@abaplint/cli 2.112.0 → 2.112.1
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/cli.js +24 -20
- package/package.json +2 -2
package/build/cli.js
CHANGED
|
@@ -23938,7 +23938,7 @@ class AttributeChain {
|
|
|
23938
23938
|
}
|
|
23939
23939
|
if (context === undefined) {
|
|
23940
23940
|
const message = "Attribute or constant \"" + name + "\" not found in \"" + def.getName() + "\"";
|
|
23941
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
23941
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, message));
|
|
23942
23942
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
23943
23943
|
}
|
|
23944
23944
|
for (const t of type) {
|
|
@@ -24104,7 +24104,7 @@ class Cast {
|
|
|
24104
24104
|
else if (tt === undefined) {
|
|
24105
24105
|
// todo, this should be an UnknownType instead?
|
|
24106
24106
|
const message = "Type \"" + typeName + "\" not found in scope, Cast";
|
|
24107
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24107
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, typeExpression.getFirstToken(), message));
|
|
24108
24108
|
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24109
24109
|
}
|
|
24110
24110
|
}
|
|
@@ -24191,21 +24191,21 @@ class ComponentChain {
|
|
|
24191
24191
|
if (concat === "-") {
|
|
24192
24192
|
if (!(context instanceof structure_type_1.StructureType)) {
|
|
24193
24193
|
const message = "ComponentChain, not a structure";
|
|
24194
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24194
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
24195
24195
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24196
24196
|
}
|
|
24197
24197
|
}
|
|
24198
24198
|
else if (concat === "=>") {
|
|
24199
24199
|
if (!(context instanceof basic_1.ObjectReferenceType)) {
|
|
24200
24200
|
const message = "ComponentChain, not a reference";
|
|
24201
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24201
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
24202
24202
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24203
24203
|
}
|
|
24204
24204
|
}
|
|
24205
24205
|
else if (concat === "->") {
|
|
24206
24206
|
if (!(context instanceof basic_1.ObjectReferenceType) && !(context instanceof basic_1.DataReference)) {
|
|
24207
24207
|
const message = "ComponentChain, not a reference";
|
|
24208
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24208
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
24209
24209
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24210
24210
|
}
|
|
24211
24211
|
}
|
|
@@ -24222,7 +24222,7 @@ class ComponentChain {
|
|
|
24222
24222
|
context = context.getComponentByName(name);
|
|
24223
24223
|
if (context === undefined) {
|
|
24224
24224
|
const message = "Component \"" + name + "\" not found in structure";
|
|
24225
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24225
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
24226
24226
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24227
24227
|
}
|
|
24228
24228
|
}
|
|
@@ -24231,7 +24231,7 @@ class ComponentChain {
|
|
|
24231
24231
|
const def = input.scope.findObjectDefinition(id.getName());
|
|
24232
24232
|
if (def === undefined) {
|
|
24233
24233
|
const message = id.getName() + " not found in scope";
|
|
24234
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24234
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
24235
24235
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24236
24236
|
}
|
|
24237
24237
|
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
@@ -24239,7 +24239,7 @@ class ComponentChain {
|
|
|
24239
24239
|
context = found === null || found === void 0 ? void 0 : found.getType();
|
|
24240
24240
|
if (context === undefined) {
|
|
24241
24241
|
const message = "Attribute \"" + name + "\" not found";
|
|
24242
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24242
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
24243
24243
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24244
24244
|
}
|
|
24245
24245
|
else {
|
|
@@ -24252,7 +24252,7 @@ class ComponentChain {
|
|
|
24252
24252
|
}
|
|
24253
24253
|
else {
|
|
24254
24254
|
const message = "ComponentChain, not a structure, " + (context === null || context === void 0 ? void 0 : context.constructor.name);
|
|
24255
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
24255
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, child.getFirstToken(), message));
|
|
24256
24256
|
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
24257
24257
|
}
|
|
24258
24258
|
}
|
|
@@ -25733,7 +25733,7 @@ class MethodCallChain {
|
|
|
25733
25733
|
else {
|
|
25734
25734
|
if (previous && previous.getFirstToken().getStr() === "=>" && (method === null || method === void 0 ? void 0 : method.isStatic()) === false) {
|
|
25735
25735
|
const message = "Method \"" + methodName + "\" not static";
|
|
25736
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
25736
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, methodToken, message));
|
|
25737
25737
|
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
25738
25738
|
}
|
|
25739
25739
|
const extra = {
|
|
@@ -25754,7 +25754,7 @@ class MethodCallChain {
|
|
|
25754
25754
|
}
|
|
25755
25755
|
else if (method === undefined && !(context instanceof basic_1.VoidType)) {
|
|
25756
25756
|
const message = "Method \"" + methodName + "\" not found, methodCallChain";
|
|
25757
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
25757
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, methodToken, message));
|
|
25758
25758
|
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
25759
25759
|
}
|
|
25760
25760
|
else if (method) {
|
|
@@ -34014,7 +34014,7 @@ class Data {
|
|
|
34014
34014
|
}
|
|
34015
34015
|
if (!(found instanceof Basic.StructureType)) {
|
|
34016
34016
|
const message = "not structured, " + typeName;
|
|
34017
|
-
input.issues.push((0, _syntax_input_1.syntaxIssue)(input,
|
|
34017
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, typeToken, message));
|
|
34018
34018
|
return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.VoidType(_syntax_input_1.CheckSyntaxKey));
|
|
34019
34019
|
}
|
|
34020
34020
|
for (const c of found.getComponents()) {
|
|
@@ -38838,6 +38838,7 @@ class InterfaceDefinition extends _identifier_1.Identifier {
|
|
|
38838
38838
|
this.typeDefinitions = this.attributes.getTypes();
|
|
38839
38839
|
this.aliases = new aliases_1.Aliases(node, this.filename, input.scope);
|
|
38840
38840
|
// todo, cleanup aliases, vs "object_oriented.ts" vs "class_implementation.ts"
|
|
38841
|
+
// this adds the aliased types to scope?
|
|
38841
38842
|
for (const a of this.aliases.getAll()) {
|
|
38842
38843
|
const [objName, fieldName] = a.getComponent().split("~");
|
|
38843
38844
|
const idef = input.scope.findInterfaceDefinition(objName);
|
|
@@ -38857,10 +38858,6 @@ class InterfaceDefinition extends _identifier_1.Identifier {
|
|
|
38857
38858
|
}
|
|
38858
38859
|
}
|
|
38859
38860
|
}
|
|
38860
|
-
this.methodDefinitions = new method_definitions_1.MethodDefinitions(node, input);
|
|
38861
|
-
if (this.methodDefinitions.getByName("CONSTRUCTOR") !== undefined) {
|
|
38862
|
-
throw new Error("Interfaces cannot have constructor methods");
|
|
38863
|
-
}
|
|
38864
38861
|
const events = node.findAllStatements(Statements.Events);
|
|
38865
38862
|
for (const e of events) {
|
|
38866
38863
|
this.events.push(new event_definition_1.EventDefinition(e, visibility_1.Visibility.Public, input));
|
|
@@ -38882,6 +38879,10 @@ class InterfaceDefinition extends _identifier_1.Identifier {
|
|
|
38882
38879
|
}
|
|
38883
38880
|
}
|
|
38884
38881
|
}
|
|
38882
|
+
this.methodDefinitions = new method_definitions_1.MethodDefinitions(node, input);
|
|
38883
|
+
if (this.methodDefinitions.getByName("CONSTRUCTOR") !== undefined) {
|
|
38884
|
+
throw new Error("Interfaces cannot have constructor methods");
|
|
38885
|
+
}
|
|
38885
38886
|
}
|
|
38886
38887
|
}
|
|
38887
38888
|
exports.InterfaceDefinition = InterfaceDefinition;
|
|
@@ -52399,7 +52400,7 @@ class Registry {
|
|
|
52399
52400
|
}
|
|
52400
52401
|
static abaplintVersion() {
|
|
52401
52402
|
// magic, see build script "version.sh"
|
|
52402
|
-
return "2.112.
|
|
52403
|
+
return "2.112.1";
|
|
52403
52404
|
}
|
|
52404
52405
|
getDDICReferences() {
|
|
52405
52406
|
return this.ddicReferences;
|
|
@@ -57179,6 +57180,8 @@ class DoubleSpaceConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
|
57179
57180
|
super(...arguments);
|
|
57180
57181
|
/** Check for double space after keywords */
|
|
57181
57182
|
this.keywords = true;
|
|
57183
|
+
/** list of keywords to skip, case insensitive */
|
|
57184
|
+
this.skipKeywords = ["CHANGING", "EXPORTING", "OTHERS"];
|
|
57182
57185
|
/** Check for double space after start parenthesis */
|
|
57183
57186
|
this.startParen = true;
|
|
57184
57187
|
/** Check for double space before end parenthesis */
|
|
@@ -57211,6 +57214,9 @@ class DoubleSpace extends _abap_rule_1.ABAPRule {
|
|
|
57211
57214
|
}
|
|
57212
57215
|
setConfig(conf) {
|
|
57213
57216
|
this.conf = conf;
|
|
57217
|
+
if (this.conf.skipKeywords === undefined) {
|
|
57218
|
+
this.conf.skipKeywords = new DoubleSpaceConf().skipKeywords;
|
|
57219
|
+
}
|
|
57214
57220
|
}
|
|
57215
57221
|
runParsed(file) {
|
|
57216
57222
|
let issues = [];
|
|
@@ -57322,9 +57328,7 @@ class DoubleSpace extends _abap_rule_1.ABAPRule {
|
|
|
57322
57328
|
if (prev instanceof nodes_1.TokenNodeRegex
|
|
57323
57329
|
|| upper === "("
|
|
57324
57330
|
|| upper === ")"
|
|
57325
|
-
||
|
|
57326
|
-
|| upper === "EXPORTING"
|
|
57327
|
-
|| upper === "OTHERS") {
|
|
57331
|
+
|| this.getConfig().skipKeywords.some(e => e.toUpperCase() === upper)) {
|
|
57328
57332
|
// not a keyword, continue
|
|
57329
57333
|
prev = n;
|
|
57330
57334
|
continue;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/cli",
|
|
3
|
-
"version": "2.112.
|
|
3
|
+
"version": "2.112.1",
|
|
4
4
|
"description": "abaplint - Command Line Interface",
|
|
5
5
|
"funding": "https://github.com/sponsors/larshp",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://abaplint.org",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@abaplint/core": "^2.112.
|
|
41
|
+
"@abaplint/core": "^2.112.1",
|
|
42
42
|
"@types/chai": "^4.3.16",
|
|
43
43
|
"@types/glob": "^8.1.0",
|
|
44
44
|
"@types/minimist": "^1.2.5",
|