@abaplint/core 2.115.8 → 2.115.10
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/abaplint.d.ts +10 -0
- package/build/src/abap/2_statements/statements/field.js +5 -3
- package/build/src/abap/5_syntax/expressions/select.js +11 -0
- package/build/src/abap/types/class_definition.js +5 -0
- package/build/src/objects/datastore_object.js +21 -0
- package/build/src/objects/index.js +1 -0
- package/build/src/registry.js +1 -1
- package/package.json +1 -1
package/build/abaplint.d.ts
CHANGED
|
@@ -1708,6 +1708,15 @@ declare class DataReference extends AbstractType {
|
|
|
1708
1708
|
toCDS(): string;
|
|
1709
1709
|
}
|
|
1710
1710
|
|
|
1711
|
+
declare class DatastoreObject extends AbstractObject {
|
|
1712
|
+
getType(): string;
|
|
1713
|
+
getAllowedNaming(): {
|
|
1714
|
+
maxLength: number;
|
|
1715
|
+
allowNamespace: boolean;
|
|
1716
|
+
};
|
|
1717
|
+
getDescription(): string | undefined;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1711
1720
|
declare class DataType extends AbstractType {
|
|
1712
1721
|
toText(): string;
|
|
1713
1722
|
toABAP(): string;
|
|
@@ -5052,6 +5061,7 @@ declare namespace Objects {
|
|
|
5052
5061
|
ParsedDataDefinition,
|
|
5053
5062
|
DataDefinition,
|
|
5054
5063
|
DataElement,
|
|
5064
|
+
DatastoreObject,
|
|
5055
5065
|
DialogModule,
|
|
5056
5066
|
Documentation,
|
|
5057
5067
|
DomainValue,
|
|
@@ -7,14 +7,16 @@ const version_1 = require("../../../version");
|
|
|
7
7
|
const tokens_1 = require("../../1_lexer/tokens");
|
|
8
8
|
class Field {
|
|
9
9
|
getMatcher() {
|
|
10
|
-
const
|
|
10
|
+
const moduleOptions = (0, combi_1.alt)("ON INPUT", "ON REQUEST", "ON CHAIN-REQUEST", "ON CHAIN-INPUT", "AT CURSOR-SELECTION");
|
|
11
|
+
const module = (0, combi_1.seq)("MODULE", expressions_1.FormName, (0, combi_1.opt)(moduleOptions));
|
|
12
|
+
const moduleStrange = (0, combi_1.seq)(moduleOptions, "MODULE", expressions_1.FormName);
|
|
11
13
|
const values = (0, combi_1.seq)("VALUES", (0, combi_1.tok)(tokens_1.WParenLeft), "BETWEEN", expressions_1.Constant, "AND", expressions_1.Constant, (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
12
|
-
const wit = (0, combi_1.seq)("WITH", expressions_1.FieldChain);
|
|
14
|
+
const wit = (0, combi_1.seq)("WITH", (0, combi_1.altPrio)(expressions_1.FieldChain, expressions_1.Constant));
|
|
13
15
|
const cond = (0, combi_1.seq)(expressions_1.FieldChain, "=", expressions_1.FieldChain);
|
|
14
16
|
const where = (0, combi_1.seq)(cond, (0, combi_1.starPrio)((0, combi_1.seq)("AND", cond)));
|
|
15
17
|
const into = (0, combi_1.seq)("INTO", expressions_1.FieldChain);
|
|
16
18
|
const select = (0, combi_1.seq)("SELECT * FROM", expressions_1.FieldChain, "WHERE", where, (0, combi_1.opt)(into), (0, combi_1.opt)("WHENEVER NOT FOUND SEND ERRORMESSAGE"));
|
|
17
|
-
const ret = (0, combi_1.seq)("FIELD", expressions_1.FieldChain, (0, combi_1.opt)((0, combi_1.altPrio)(module, values, wit, select)));
|
|
19
|
+
const ret = (0, combi_1.seq)("FIELD", expressions_1.FieldChain, (0, combi_1.opt)((0, combi_1.altPrio)(module, moduleStrange, values, wit, select)));
|
|
18
20
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
19
21
|
}
|
|
20
22
|
}
|
|
@@ -14,6 +14,7 @@ const sql_order_by_1 = require("./sql_order_by");
|
|
|
14
14
|
const dynamic_1 = require("./dynamic");
|
|
15
15
|
const _reference_1 = require("../_reference");
|
|
16
16
|
const _syntax_input_1 = require("../_syntax_input");
|
|
17
|
+
const version_1 = require("../../../version");
|
|
17
18
|
const isSimple = /^\w+$/;
|
|
18
19
|
class Select {
|
|
19
20
|
static runSyntax(node, input, skipImplicitInto = false) {
|
|
@@ -265,6 +266,16 @@ class Select {
|
|
|
265
266
|
if (field) {
|
|
266
267
|
return field;
|
|
267
268
|
}
|
|
269
|
+
else if (fields[0].code === "COUNT(*)") {
|
|
270
|
+
if (scope.getVersion() >= version_1.Version.v750
|
|
271
|
+
|| scope.getVersion() === version_1.Version.OpenABAP
|
|
272
|
+
|| scope.getVersion() === version_1.Version.Cloud) {
|
|
273
|
+
return new basic_1.Integer8Type();
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
return basic_1.IntegerType.get();
|
|
277
|
+
}
|
|
278
|
+
}
|
|
268
279
|
else {
|
|
269
280
|
// todo: aggregated/calculated values
|
|
270
281
|
return basic_1.VoidType.get("SELECT_todo11");
|
|
@@ -15,6 +15,7 @@ const _object_oriented_1 = require("../5_syntax/_object_oriented");
|
|
|
15
15
|
const _reference_1 = require("../5_syntax/_reference");
|
|
16
16
|
class ClassDefinition extends _identifier_1.Identifier {
|
|
17
17
|
constructor(node, input) {
|
|
18
|
+
var _a;
|
|
18
19
|
if (!(node.get() instanceof Structures.ClassDefinition)) {
|
|
19
20
|
throw new Error("ClassDefinition, unexpected node type");
|
|
20
21
|
}
|
|
@@ -37,6 +38,10 @@ class ClassDefinition extends _identifier_1.Identifier {
|
|
|
37
38
|
this.aliases = this.attributes.getAliases();
|
|
38
39
|
const events = node.findAllStatements(Statements.Events);
|
|
39
40
|
for (const e of events) {
|
|
41
|
+
const eventName = (_a = e.findDirectExpression(Expressions.EventName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
|
|
42
|
+
if (this.events.find(ev => ev.getName().toUpperCase() === eventName) !== undefined) {
|
|
43
|
+
throw new Error("Event " + eventName + " already defined");
|
|
44
|
+
}
|
|
40
45
|
this.events.push(new event_definition_1.EventDefinition(e, visibility_1.Visibility.Public, input)); // todo, all these are not Public
|
|
41
46
|
}
|
|
42
47
|
this.methodDefs = new method_definitions_1.MethodDefinitions(node, input);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatastoreObject = void 0;
|
|
4
|
+
const _abstract_object_1 = require("./_abstract_object");
|
|
5
|
+
class DatastoreObject extends _abstract_object_1.AbstractObject {
|
|
6
|
+
getType() {
|
|
7
|
+
return "ODSO";
|
|
8
|
+
}
|
|
9
|
+
getAllowedNaming() {
|
|
10
|
+
return {
|
|
11
|
+
maxLength: 200,
|
|
12
|
+
allowNamespace: true,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
getDescription() {
|
|
16
|
+
// todo
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.DatastoreObject = DatastoreObject;
|
|
21
|
+
//# sourceMappingURL=datastore_object.js.map
|
|
@@ -64,6 +64,7 @@ __exportStar(require("./customizing_transaction"), exports);
|
|
|
64
64
|
__exportStar(require("./data_control"), exports);
|
|
65
65
|
__exportStar(require("./data_definition"), exports);
|
|
66
66
|
__exportStar(require("./data_element"), exports);
|
|
67
|
+
__exportStar(require("./datastore_object"), exports);
|
|
67
68
|
__exportStar(require("./dialog_module"), exports);
|
|
68
69
|
__exportStar(require("./documentation"), exports);
|
|
69
70
|
__exportStar(require("./domain"), exports);
|
package/build/src/registry.js
CHANGED