@abaplint/core 2.101.4 → 2.101.6

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.
@@ -7,7 +7,6 @@ const source_1 = require("./source");
7
7
  const _type_utils_1 = require("../_type_utils");
8
8
  class StringTemplate {
9
9
  runSyntax(node, scope, filename) {
10
- var _a;
11
10
  const typeUtils = new _type_utils_1.TypeUtils(scope);
12
11
  for (const templateSource of node.findAllExpressions(Expressions.StringTemplateSource)) {
13
12
  const s = templateSource.findDirectExpression(Expressions.Source);
@@ -18,9 +17,22 @@ class StringTemplate {
18
17
  else if (typeUtils.isCharLike(type) === false && typeUtils.isHexLike(type) === false) {
19
18
  throw new Error("Not character like, " + type.constructor.name);
20
19
  }
21
- for (const formatSource of ((_a = templateSource.findDirectExpression(Expressions.StringTemplateFormatting)) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.Source)) || []) {
20
+ const format = templateSource.findDirectExpression(Expressions.StringTemplateFormatting);
21
+ const formatConcat = format === null || format === void 0 ? void 0 : format.concatTokens();
22
+ for (const formatSource of (format === null || format === void 0 ? void 0 : format.findAllExpressions(Expressions.Source)) || []) {
22
23
  new source_1.Source().runSyntax(formatSource, scope, filename);
23
24
  }
25
+ if ((formatConcat === null || formatConcat === void 0 ? void 0 : formatConcat.includes("ALPHA = "))
26
+ && !(type instanceof basic_1.UnknownType)
27
+ && !(type instanceof basic_1.VoidType)
28
+ && !(type instanceof basic_1.StringType)
29
+ && !(type instanceof basic_1.CLikeType)
30
+ && !(type instanceof basic_1.CharacterType)
31
+ && !(type instanceof basic_1.NumericGenericType)
32
+ && !(type instanceof basic_1.NumericType)
33
+ && !(type instanceof basic_1.AnyType)) {
34
+ throw new Error("Cannot apply ALPHA to this type");
35
+ }
24
36
  }
25
37
  return new basic_1.StringType({ qualifiedName: "STRING" });
26
38
  }
@@ -33,6 +33,9 @@ class Raise {
33
33
  else {
34
34
  throw new Error("RAISE, unknown class " + className);
35
35
  }
36
+ if (method === undefined) {
37
+ method = new basic_1.VoidType(className);
38
+ }
36
39
  }
37
40
  const c = node.findExpressionAfterToken("EXCEPTION");
38
41
  if (c instanceof nodes_1.ExpressionNode && (c.get() instanceof Expressions.SimpleSource2 || c.get() instanceof Expressions.Source)) {
@@ -48,6 +51,9 @@ class Raise {
48
51
  throw new Error("RAISE EXCEPTION, must be object reference, got " + type.constructor.name);
49
52
  }
50
53
  }
54
+ if (method === undefined) {
55
+ method = new basic_1.VoidType("Exception");
56
+ }
51
57
  // check parameters vs constructor
52
58
  const param = node.findDirectExpression(Expressions.ParameterListS);
53
59
  if (param) {
@@ -65,7 +65,7 @@ class Registry {
65
65
  }
66
66
  static abaplintVersion() {
67
67
  // magic, see build script "version.sh"
68
- return "2.101.4";
68
+ return "2.101.6";
69
69
  }
70
70
  getDDICReferences() {
71
71
  return this.ddicReferences;
@@ -71,14 +71,18 @@ class ModifyOnlyOwnDBTables {
71
71
  }
72
72
  const concat = databaseTable.concatTokens().toUpperCase();
73
73
  if (regExp.test(concat) === false) {
74
- // must contain a ReferenceType.TableVoidReference
74
+ // must contain a ReferenceType.TableVoidReference or a ReferenceType.TableReference if its a dependency
75
75
  if (spaghetti === undefined) {
76
76
  spaghetti = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti;
77
77
  }
78
78
  const start = databaseTable.getFirstToken().getStart();
79
79
  const scope = spaghetti.lookupPosition(start, file.getFilename());
80
- const found = scope === null || scope === void 0 ? void 0 : scope.findTableVoidReference(start);
81
- if (found) {
80
+ const found1 = scope === null || scope === void 0 ? void 0 : scope.findTableVoidReference(start);
81
+ if (found1) {
82
+ output.push(issue_1.Issue.atStatement(file, s, this.getMetadata().title, this.getMetadata().key, this.getConfig().severity));
83
+ }
84
+ const found2 = scope === null || scope === void 0 ? void 0 : scope.findTableReference(start);
85
+ if (found2) {
82
86
  output.push(issue_1.Issue.atStatement(file, s, this.getMetadata().title, this.getMetadata().key, this.getConfig().severity));
83
87
  }
84
88
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.101.4",
3
+ "version": "2.101.6",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",