@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 &&
|
|
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 &&
|
|
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 (
|
|
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);
|
package/build/src/registry.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/core",
|
|
3
|
-
"version": "2.89.
|
|
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.
|
|
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.
|
|
51
|
+
"@types/node": "^17.0.26",
|
|
52
52
|
"chai": "^4.3.6",
|
|
53
|
-
"eslint": "^8.
|
|
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",
|