@abaplint/core 2.89.8 → 2.89.9

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.
@@ -249,9 +249,9 @@ class BasicTypes {
249
249
  }
250
250
  }
251
251
  const options = {
252
- withHeader: text.includes("WITH HEADER LINE"),
252
+ withHeader: text.includes(" WITH HEADER LINE"),
253
253
  type: type,
254
- isUnique: text.includes("WITH UNIQUE"),
254
+ isUnique: text.includes(" WITH UNIQUE"),
255
255
  keyFields: keyFields,
256
256
  };
257
257
  let found = undefined;
@@ -387,7 +387,7 @@ class BasicTypes {
387
387
  sub = node.findFirstExpression(Expressions.FieldChain);
388
388
  }
389
389
  found = this.resolveLikeName(sub);
390
- if (found && text.includes(" OCCURS ")) {
390
+ if (found && this.isOccurs(node)) {
391
391
  found = new Types.TableType(found, { withHeader: text.includes("WITH HEADER LINE") }, qualifiedName);
392
392
  }
393
393
  }
@@ -416,10 +416,10 @@ class BasicTypes {
416
416
  else if (text.startsWith("TYPE")) {
417
417
  found = this.resolveTypeName(typeName, this.findLength(node), this.findDecimals(node), qualifiedName);
418
418
  const concat = node.concatTokens().toUpperCase();
419
- if (found && concat.includes(" OCCURS ")) {
420
- found = new Types.TableType(found, { withHeader: concat.includes("WITH HEADER LINE") }, qualifiedName);
419
+ if (found && this.isOccurs(node)) {
420
+ found = new Types.TableType(found, { withHeader: concat.includes(" WITH HEADER LINE") }, qualifiedName);
421
421
  }
422
- else if (found && concat.includes("WITH HEADER LINE")) {
422
+ else if (found && concat.includes(" WITH HEADER LINE")) {
423
423
  if (found instanceof Types.VoidType) {
424
424
  found = new Types.TableType(found, { withHeader: true });
425
425
  }
@@ -440,14 +440,24 @@ class BasicTypes {
440
440
  }
441
441
  }
442
442
  found = new Types.CharacterType(length, qualifiedName); // fallback
443
- if (concat.includes(" OCCURS ")) {
444
- found = new Types.TableType(found, { withHeader: concat.includes("WITH HEADER LINE") }, qualifiedName);
443
+ if (this.isOccurs(node)) {
444
+ found = new Types.TableType(found, { withHeader: concat.includes(" WITH HEADER LINE") }, qualifiedName);
445
445
  }
446
446
  }
447
447
  }
448
448
  return found;
449
449
  }
450
450
  /////////////////////
451
+ isOccurs(node) {
452
+ var _a;
453
+ if (node.findDirectTokenByText("OCCURS")) {
454
+ return true;
455
+ }
456
+ else if ((_a = node.findFirstExpression(Expressions.TypeTable)) === null || _a === void 0 ? void 0 : _a.findDirectTokenByText("OCCURS")) {
457
+ return true;
458
+ }
459
+ return false;
460
+ }
451
461
  // todo, rewrite this method
452
462
  resolveTypeChain(expr) {
453
463
  var _a;
@@ -4,7 +4,9 @@ exports.LoopGroupBy = void 0;
4
4
  const Expressions = require("../../2_statements/expressions");
5
5
  const basic_1 = require("../../types/basic");
6
6
  const component_compare_1 = require("./component_compare");
7
+ const inline_data_1 = require("./inline_data");
7
8
  const inline_fs_1 = require("./inline_fs");
9
+ const target_1 = require("./target");
8
10
  class LoopGroupBy {
9
11
  runSyntax(node, scope, filename) {
10
12
  const components = [];
@@ -17,6 +19,15 @@ class LoopGroupBy {
17
19
  return;
18
20
  }
19
21
  const sourceType = new basic_1.StructureType(components);
22
+ for (const t of node.findAllExpressions(Expressions.Target)) {
23
+ const inline = t.findDirectExpression(Expressions.InlineData);
24
+ if (inline) {
25
+ new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.VoidType("todoGroupBy"));
26
+ }
27
+ else {
28
+ new target_1.Target().runSyntax(t, scope, filename);
29
+ }
30
+ }
20
31
  const inlinefs = node.findFirstExpression(Expressions.InlineFS);
21
32
  if (inlinefs) {
22
33
  new inline_fs_1.InlineFS().runSyntax(inlinefs, scope, filename, sourceType);
@@ -167,6 +167,9 @@ class Source {
167
167
  break;
168
168
  }
169
169
  }
170
+ if (node.findDirectTokenByText("&&")) {
171
+ return new basic_1.StringType();
172
+ }
170
173
  return context;
171
174
  }
172
175
  ////////////////////////////////
@@ -68,7 +68,7 @@ class Registry {
68
68
  }
69
69
  static abaplintVersion() {
70
70
  // magic, see build script "version.sh"
71
- return "2.89.8";
71
+ return "2.89.9";
72
72
  }
73
73
  getDDICReferences() {
74
74
  return this.references;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.89.8",
3
+ "version": "2.89.9",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",
@@ -45,12 +45,12 @@
45
45
  },
46
46
  "homepage": "https://abaplint.org",
47
47
  "devDependencies": {
48
- "@microsoft/api-extractor": "^7.22.2",
48
+ "@microsoft/api-extractor": "^7.23.0",
49
49
  "@types/chai": "^4.3.1",
50
50
  "@types/mocha": "^9.1.1",
51
- "@types/node": "^17.0.25",
51
+ "@types/node": "^17.0.26",
52
52
  "chai": "^4.3.6",
53
- "eslint": "^8.13.0",
53
+ "eslint": "^8.14.0",
54
54
  "mocha": "^9.2.2",
55
55
  "c8": "^7.11.2",
56
56
  "source-map-support": "^0.5.21",