@abaplint/core 2.113.126 → 2.113.128
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 +17 -3
- package/build/src/abap/3_structures/structures/dynpro_loop.js +1 -1
- package/build/src/abap/5_syntax/_builtin.js +10 -10
- package/build/src/abap/5_syntax/_procedural.js +2 -2
- package/build/src/abap/5_syntax/_type_utils.js +16 -7
- package/build/src/abap/5_syntax/basic_types.js +10 -10
- package/build/src/abap/5_syntax/expressions/attribute_chain.js +6 -7
- package/build/src/abap/5_syntax/expressions/attribute_name.js +6 -6
- package/build/src/abap/5_syntax/expressions/cast.js +9 -9
- package/build/src/abap/5_syntax/expressions/compare.js +4 -4
- package/build/src/abap/5_syntax/expressions/component_chain.js +8 -8
- package/build/src/abap/5_syntax/expressions/component_compare.js +3 -3
- package/build/src/abap/5_syntax/expressions/component_compare_simple.js +3 -3
- package/build/src/abap/5_syntax/expressions/component_cond.js +3 -3
- package/build/src/abap/5_syntax/expressions/component_name.js +4 -4
- package/build/src/abap/5_syntax/expressions/cond.js +3 -3
- package/build/src/abap/5_syntax/expressions/cond_body.js +5 -5
- package/build/src/abap/5_syntax/expressions/constant.js +1 -1
- package/build/src/abap/5_syntax/expressions/conv_body.js +4 -4
- package/build/src/abap/5_syntax/expressions/corresponding_body.js +3 -3
- package/build/src/abap/5_syntax/expressions/data_definition.js +3 -3
- package/build/src/abap/5_syntax/expressions/database_table.js +1 -1
- package/build/src/abap/5_syntax/expressions/default.js +3 -3
- package/build/src/abap/5_syntax/expressions/dereference.js +2 -2
- package/build/src/abap/5_syntax/expressions/dynamic.js +2 -2
- package/build/src/abap/5_syntax/expressions/field_assignment.js +2 -2
- package/build/src/abap/5_syntax/expressions/field_chain.js +19 -19
- package/build/src/abap/5_syntax/expressions/field_length.js +2 -2
- package/build/src/abap/5_syntax/expressions/field_offset.js +2 -2
- package/build/src/abap/5_syntax/expressions/filter_body.js +3 -3
- package/build/src/abap/5_syntax/expressions/for.js +8 -8
- package/build/src/abap/5_syntax/expressions/form_param.js +2 -2
- package/build/src/abap/5_syntax/expressions/fstarget.js +2 -2
- package/build/src/abap/5_syntax/expressions/inline_data.js +1 -1
- package/build/src/abap/5_syntax/expressions/inline_field_definition.js +3 -3
- package/build/src/abap/5_syntax/expressions/inline_fs.js +1 -1
- package/build/src/abap/5_syntax/expressions/inline_loop_definition.js +2 -2
- package/build/src/abap/5_syntax/expressions/let.js +2 -2
- package/build/src/abap/5_syntax/expressions/loop_group_by.js +6 -6
- package/build/src/abap/5_syntax/expressions/message_source.js +2 -2
- package/build/src/abap/5_syntax/expressions/method_call_body.js +3 -3
- package/build/src/abap/5_syntax/expressions/method_call_chain.js +21 -19
- package/build/src/abap/5_syntax/expressions/method_call_param.js +2 -2
- package/build/src/abap/5_syntax/expressions/method_def_returning.js +1 -1
- package/build/src/abap/5_syntax/expressions/method_param.js +4 -4
- package/build/src/abap/5_syntax/expressions/method_parameters.js +7 -7
- package/build/src/abap/5_syntax/expressions/method_source.js +20 -20
- package/build/src/abap/5_syntax/expressions/new_object.js +10 -10
- package/build/src/abap/5_syntax/expressions/raise_with.js +2 -2
- package/build/src/abap/5_syntax/expressions/reduce_body.js +7 -7
- package/build/src/abap/5_syntax/expressions/reduce_next.js +3 -3
- package/build/src/abap/5_syntax/expressions/select.js +25 -25
- package/build/src/abap/5_syntax/expressions/select_loop.js +2 -2
- package/build/src/abap/5_syntax/expressions/source.js +63 -60
- package/build/src/abap/5_syntax/expressions/source_field.js +2 -2
- package/build/src/abap/5_syntax/expressions/source_field_symbol.js +2 -2
- package/build/src/abap/5_syntax/expressions/sql_compare.js +6 -6
- package/build/src/abap/5_syntax/expressions/sql_for_all_entries.js +2 -2
- package/build/src/abap/5_syntax/expressions/sql_from.js +3 -3
- package/build/src/abap/5_syntax/expressions/sql_in.js +4 -4
- package/build/src/abap/5_syntax/expressions/sql_order_by.js +2 -2
- package/build/src/abap/5_syntax/expressions/sql_source.js +3 -3
- package/build/src/abap/5_syntax/expressions/string_template.js +6 -6
- package/build/src/abap/5_syntax/expressions/switch_body.js +4 -4
- package/build/src/abap/5_syntax/expressions/table_expression.js +2 -2
- package/build/src/abap/5_syntax/expressions/target.js +25 -23
- package/build/src/abap/5_syntax/expressions/type_table.js +2 -2
- package/build/src/abap/5_syntax/expressions/type_table_key.js +1 -1
- package/build/src/abap/5_syntax/expressions/value_body.js +10 -10
- package/build/src/abap/5_syntax/statements/add.js +2 -2
- package/build/src/abap/5_syntax/statements/add_corresponding.js +2 -2
- package/build/src/abap/5_syntax/statements/append.js +6 -6
- package/build/src/abap/5_syntax/statements/assert.js +1 -1
- package/build/src/abap/5_syntax/statements/assign.js +8 -8
- package/build/src/abap/5_syntax/statements/authority_check.js +1 -1
- package/build/src/abap/5_syntax/statements/call.js +3 -3
- package/build/src/abap/5_syntax/statements/call_badi.js +3 -3
- package/build/src/abap/5_syntax/statements/call_function.js +6 -6
- package/build/src/abap/5_syntax/statements/call_kernel.js +1 -1
- package/build/src/abap/5_syntax/statements/call_transaction.js +2 -2
- package/build/src/abap/5_syntax/statements/call_transformation.js +4 -4
- package/build/src/abap/5_syntax/statements/case.js +1 -1
- package/build/src/abap/5_syntax/statements/case_type.js +1 -1
- package/build/src/abap/5_syntax/statements/catch.js +2 -2
- package/build/src/abap/5_syntax/statements/check.js +1 -1
- package/build/src/abap/5_syntax/statements/class_data.js +2 -2
- package/build/src/abap/5_syntax/statements/class_implementation.js +1 -1
- package/build/src/abap/5_syntax/statements/clear.js +2 -2
- package/build/src/abap/5_syntax/statements/close_dataset.js +1 -1
- package/build/src/abap/5_syntax/statements/collect.js +3 -3
- package/build/src/abap/5_syntax/statements/commit_entities.js +3 -3
- package/build/src/abap/5_syntax/statements/concatenate.js +5 -5
- package/build/src/abap/5_syntax/statements/condense.js +1 -1
- package/build/src/abap/5_syntax/statements/convert.js +7 -7
- package/build/src/abap/5_syntax/statements/create_data.js +3 -3
- package/build/src/abap/5_syntax/statements/create_object.js +9 -6
- package/build/src/abap/5_syntax/statements/data.js +2 -2
- package/build/src/abap/5_syntax/statements/delete_cluster.js +1 -1
- package/build/src/abap/5_syntax/statements/delete_database.js +4 -4
- package/build/src/abap/5_syntax/statements/delete_internal.js +4 -4
- package/build/src/abap/5_syntax/statements/delete_memory.js +1 -1
- package/build/src/abap/5_syntax/statements/delete_report.js +1 -1
- package/build/src/abap/5_syntax/statements/describe.js +10 -10
- package/build/src/abap/5_syntax/statements/divide.js +2 -2
- package/build/src/abap/5_syntax/statements/do.js +2 -2
- package/build/src/abap/5_syntax/statements/editor_call.js +2 -2
- package/build/src/abap/5_syntax/statements/else_if.js +1 -1
- package/build/src/abap/5_syntax/statements/export.js +2 -2
- package/build/src/abap/5_syntax/statements/find.js +5 -5
- package/build/src/abap/5_syntax/statements/format.js +1 -1
- package/build/src/abap/5_syntax/statements/get_badi.js +3 -3
- package/build/src/abap/5_syntax/statements/get_bit.js +3 -3
- package/build/src/abap/5_syntax/statements/get_cursor.js +1 -1
- package/build/src/abap/5_syntax/statements/get_locale.js +2 -2
- package/build/src/abap/5_syntax/statements/get_parameter.js +3 -3
- package/build/src/abap/5_syntax/statements/get_reference.js +3 -3
- package/build/src/abap/5_syntax/statements/get_run_time.js +2 -2
- package/build/src/abap/5_syntax/statements/get_time.js +2 -2
- package/build/src/abap/5_syntax/statements/if.js +1 -1
- package/build/src/abap/5_syntax/statements/import.js +2 -2
- package/build/src/abap/5_syntax/statements/import_dynpro.js +2 -2
- package/build/src/abap/5_syntax/statements/include_type.js +2 -2
- package/build/src/abap/5_syntax/statements/insert_database.js +4 -4
- package/build/src/abap/5_syntax/statements/insert_field_group.js +3 -3
- package/build/src/abap/5_syntax/statements/insert_internal.js +7 -7
- package/build/src/abap/5_syntax/statements/insert_report.js +1 -1
- package/build/src/abap/5_syntax/statements/insert_textpool.js +1 -1
- package/build/src/abap/5_syntax/statements/log_point.js +1 -1
- package/build/src/abap/5_syntax/statements/loop.js +10 -10
- package/build/src/abap/5_syntax/statements/loop_at_screen.js +2 -2
- package/build/src/abap/5_syntax/statements/message.js +5 -5
- package/build/src/abap/5_syntax/statements/modify_database.js +5 -5
- package/build/src/abap/5_syntax/statements/modify_entities.js +3 -3
- package/build/src/abap/5_syntax/statements/modify_internal.js +4 -4
- package/build/src/abap/5_syntax/statements/modify_screen.js +1 -1
- package/build/src/abap/5_syntax/statements/move.js +4 -4
- package/build/src/abap/5_syntax/statements/move_corresponding.js +2 -2
- package/build/src/abap/5_syntax/statements/multiply.js +2 -2
- package/build/src/abap/5_syntax/statements/open_dataset.js +2 -2
- package/build/src/abap/5_syntax/statements/pack.js +2 -2
- package/build/src/abap/5_syntax/statements/parameter.js +1 -1
- package/build/src/abap/5_syntax/statements/perform.js +4 -4
- package/build/src/abap/5_syntax/statements/raise.js +8 -8
- package/build/src/abap/5_syntax/statements/raise_event.js +1 -1
- package/build/src/abap/5_syntax/statements/read_entities.js +3 -3
- package/build/src/abap/5_syntax/statements/read_report.js +2 -2
- package/build/src/abap/5_syntax/statements/read_table.js +8 -8
- package/build/src/abap/5_syntax/statements/read_textpool.js +2 -2
- package/build/src/abap/5_syntax/statements/receive.js +2 -2
- package/build/src/abap/5_syntax/statements/replace.js +2 -2
- package/build/src/abap/5_syntax/statements/scan.js +2 -2
- package/build/src/abap/5_syntax/statements/search.js +1 -1
- package/build/src/abap/5_syntax/statements/select.js +1 -1
- package/build/src/abap/5_syntax/statements/select_loop.js +1 -1
- package/build/src/abap/5_syntax/statements/selectoption.js +4 -4
- package/build/src/abap/5_syntax/statements/set_bit.js +2 -2
- package/build/src/abap/5_syntax/statements/set_handler.js +2 -2
- package/build/src/abap/5_syntax/statements/set_locale.js +2 -2
- package/build/src/abap/5_syntax/statements/set_parameter.js +1 -1
- package/build/src/abap/5_syntax/statements/set_pf_status.js +1 -1
- package/build/src/abap/5_syntax/statements/set_titlebar.js +1 -1
- package/build/src/abap/5_syntax/statements/shift.js +2 -2
- package/build/src/abap/5_syntax/statements/sort.js +2 -2
- package/build/src/abap/5_syntax/statements/split.js +3 -3
- package/build/src/abap/5_syntax/statements/static.js +1 -1
- package/build/src/abap/5_syntax/statements/submit.js +3 -3
- package/build/src/abap/5_syntax/statements/subtract.js +2 -2
- package/build/src/abap/5_syntax/statements/subtract_corresponding.js +2 -2
- package/build/src/abap/5_syntax/statements/syntax_check.js +2 -2
- package/build/src/abap/5_syntax/statements/system_call.js +1 -1
- package/build/src/abap/5_syntax/statements/transfer.js +2 -2
- package/build/src/abap/5_syntax/statements/translate.js +2 -2
- package/build/src/abap/5_syntax/statements/truncate_dataset.js +1 -1
- package/build/src/abap/5_syntax/statements/type.js +3 -3
- package/build/src/abap/5_syntax/statements/unpack.js +2 -2
- package/build/src/abap/5_syntax/statements/update_database.js +4 -4
- package/build/src/abap/5_syntax/statements/wait.js +2 -2
- package/build/src/abap/5_syntax/statements/when.js +1 -1
- package/build/src/abap/5_syntax/statements/when_type.js +3 -3
- package/build/src/abap/5_syntax/statements/while.js +3 -3
- package/build/src/abap/5_syntax/statements/with.js +2 -2
- package/build/src/abap/5_syntax/statements/with_loop.js +2 -2
- package/build/src/abap/5_syntax/statements/write.js +4 -4
- package/build/src/abap/5_syntax/structures/data.js +1 -1
- package/build/src/abap/5_syntax/structures/statics.js +1 -1
- package/build/src/abap/types/basic/any_type.js +13 -0
- package/build/src/abap/types/basic/cgeneric_type.js +7 -0
- package/build/src/abap/types/basic/integer_type.js +7 -4
- package/build/src/abap/types/basic/string_type.js +7 -4
- package/build/src/abap/types/basic/void_type.js +10 -0
- package/build/src/abap/types/basic/xgeneric_type.js +7 -0
- package/build/src/abap/types/basic/xstring_type.js +13 -0
- package/build/src/abap/types/event_definition.js +1 -1
- package/build/src/abap/types/form_definition.js +3 -3
- package/build/src/abap/types/method_parameters.js +11 -11
- package/build/src/cds/cds_determine_types.js +5 -5
- package/build/src/ddic.js +11 -11
- package/build/src/objects/authorization_check_field.js +1 -1
- package/build/src/objects/lock_object.js +1 -1
- package/build/src/objects/maintenance_and_transport_object.js +2 -2
- package/build/src/objects/table.js +1 -1
- package/build/src/objects/view.js +1 -1
- package/build/src/registry.js +1 -1
- package/build/src/rules/downport.js +2 -1
- package/package.json +5 -5
|
@@ -18,7 +18,7 @@ class Write {
|
|
|
18
18
|
second = node.getChildren()[2];
|
|
19
19
|
}
|
|
20
20
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
21
|
-
const type =
|
|
21
|
+
const type = source_1.Source.runSyntax(s, input);
|
|
22
22
|
if (s === second
|
|
23
23
|
&& new _type_utils_1.TypeUtils(input.scope).isCharLike(type) === false
|
|
24
24
|
&& new _type_utils_1.TypeUtils(input.scope).isHexLike(type) === false) {
|
|
@@ -28,14 +28,14 @@ class Write {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
for (const s of ((_a = node.findDirectExpression(Expressions.WriteOffsetLength)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.SimpleFieldChain2)) || []) {
|
|
31
|
-
|
|
31
|
+
field_chain_1.FieldChain.runSyntax(s, input, _reference_1.ReferenceType.DataReadReference);
|
|
32
32
|
}
|
|
33
33
|
for (const s of node.findAllExpressions(Expressions.Dynamic)) {
|
|
34
|
-
|
|
34
|
+
dynamic_1.Dynamic.runSyntax(s, input);
|
|
35
35
|
}
|
|
36
36
|
const target = node.findDirectExpression(Expressions.Target);
|
|
37
37
|
if (target) {
|
|
38
|
-
|
|
38
|
+
target_1.Target.runSyntax(target, input);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -78,7 +78,7 @@ class Data {
|
|
|
78
78
|
if (!(found instanceof Basic.StructureType)) {
|
|
79
79
|
const message = "not structured, " + typeName;
|
|
80
80
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, typeToken, message));
|
|
81
|
-
return new _typed_identifier_1.TypedIdentifier(name, input.filename,
|
|
81
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, Basic.VoidType.get(_syntax_input_1.CheckSyntaxKey));
|
|
82
82
|
}
|
|
83
83
|
for (const c of found.getComponents()) {
|
|
84
84
|
components.push(c);
|
|
@@ -63,7 +63,7 @@ class Statics {
|
|
|
63
63
|
if (!(found instanceof Basic.StructureType)) {
|
|
64
64
|
const message = "not structured, " + typeName;
|
|
65
65
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
66
|
-
return new _typed_identifier_1.TypedIdentifier(name, input.filename,
|
|
66
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, Basic.VoidType.get(_syntax_input_1.CheckSyntaxKey));
|
|
67
67
|
}
|
|
68
68
|
for (const c of found.getComponents()) {
|
|
69
69
|
components.push(c);
|
|
@@ -3,6 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AnyType = void 0;
|
|
4
4
|
const _abstract_type_1 = require("./_abstract_type");
|
|
5
5
|
class AnyType extends _abstract_type_1.AbstractType {
|
|
6
|
+
static get(input) {
|
|
7
|
+
const key = JSON.stringify(input);
|
|
8
|
+
if (this.singletons.has(key)) {
|
|
9
|
+
return this.singletons.get(key);
|
|
10
|
+
}
|
|
11
|
+
const ret = new AnyType(input);
|
|
12
|
+
this.singletons.set(key, ret);
|
|
13
|
+
return ret;
|
|
14
|
+
}
|
|
15
|
+
constructor(input) {
|
|
16
|
+
super(input);
|
|
17
|
+
}
|
|
6
18
|
toText() {
|
|
7
19
|
return "```any```";
|
|
8
20
|
}
|
|
@@ -20,4 +32,5 @@ class AnyType extends _abstract_type_1.AbstractType {
|
|
|
20
32
|
}
|
|
21
33
|
}
|
|
22
34
|
exports.AnyType = AnyType;
|
|
35
|
+
AnyType.singletons = new Map();
|
|
23
36
|
//# sourceMappingURL=any_type.js.map
|
|
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CGenericType = void 0;
|
|
4
4
|
const _abstract_type_1 = require("./_abstract_type");
|
|
5
5
|
class CGenericType extends _abstract_type_1.AbstractType {
|
|
6
|
+
static get() {
|
|
7
|
+
return this.singleton;
|
|
8
|
+
}
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
}
|
|
6
12
|
toText() {
|
|
7
13
|
return "```c```";
|
|
8
14
|
}
|
|
@@ -20,4 +26,5 @@ class CGenericType extends _abstract_type_1.AbstractType {
|
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
28
|
exports.CGenericType = CGenericType;
|
|
29
|
+
CGenericType.singleton = new CGenericType();
|
|
23
30
|
//# sourceMappingURL=cgeneric_type.js.map
|
|
@@ -4,10 +4,13 @@ exports.IntegerType = void 0;
|
|
|
4
4
|
const _abstract_type_1 = require("./_abstract_type");
|
|
5
5
|
class IntegerType extends _abstract_type_1.AbstractType {
|
|
6
6
|
static get(input) {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const key = JSON.stringify(input);
|
|
8
|
+
if (this.singletons.has(key)) {
|
|
9
|
+
return this.singletons.get(key);
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
+
const ret = new IntegerType(input);
|
|
12
|
+
this.singletons.set(key, ret);
|
|
13
|
+
return ret;
|
|
11
14
|
}
|
|
12
15
|
constructor(input) {
|
|
13
16
|
super(input);
|
|
@@ -38,5 +41,5 @@ class IntegerType extends _abstract_type_1.AbstractType {
|
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
43
|
exports.IntegerType = IntegerType;
|
|
41
|
-
IntegerType.
|
|
44
|
+
IntegerType.singletons = new Map();
|
|
42
45
|
//# sourceMappingURL=integer_type.js.map
|
|
@@ -4,10 +4,13 @@ exports.StringType = void 0;
|
|
|
4
4
|
const _abstract_type_1 = require("./_abstract_type");
|
|
5
5
|
class StringType extends _abstract_type_1.AbstractType {
|
|
6
6
|
static get(input) {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const key = JSON.stringify(input);
|
|
8
|
+
if (this.singletons.has(key)) {
|
|
9
|
+
return this.singletons.get(key);
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
+
const ret = new StringType(input);
|
|
12
|
+
this.singletons.set(key, ret);
|
|
13
|
+
return ret;
|
|
11
14
|
}
|
|
12
15
|
constructor(input) {
|
|
13
16
|
super(input);
|
|
@@ -38,5 +41,5 @@ class StringType extends _abstract_type_1.AbstractType {
|
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
43
|
exports.StringType = StringType;
|
|
41
|
-
StringType.
|
|
44
|
+
StringType.singletons = new Map();
|
|
42
45
|
//# sourceMappingURL=string_type.js.map
|
|
@@ -3,6 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.VoidType = void 0;
|
|
4
4
|
const _abstract_type_1 = require("./_abstract_type");
|
|
5
5
|
class VoidType extends _abstract_type_1.AbstractType {
|
|
6
|
+
static get(voided, qualifiedName) {
|
|
7
|
+
const key = JSON.stringify({ voided, qualifiedName });
|
|
8
|
+
if (this.singletons.has(key)) {
|
|
9
|
+
return this.singletons.get(key);
|
|
10
|
+
}
|
|
11
|
+
const ret = new VoidType(voided, qualifiedName);
|
|
12
|
+
this.singletons.set(key, ret);
|
|
13
|
+
return ret;
|
|
14
|
+
}
|
|
6
15
|
constructor(voided, qualifiedName) {
|
|
7
16
|
super({ qualifiedName: qualifiedName });
|
|
8
17
|
this.voided = voided;
|
|
@@ -27,4 +36,5 @@ class VoidType extends _abstract_type_1.AbstractType {
|
|
|
27
36
|
}
|
|
28
37
|
}
|
|
29
38
|
exports.VoidType = VoidType;
|
|
39
|
+
VoidType.singletons = new Map();
|
|
30
40
|
//# sourceMappingURL=void_type.js.map
|
|
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.XGenericType = void 0;
|
|
4
4
|
const _abstract_type_1 = require("./_abstract_type");
|
|
5
5
|
class XGenericType extends _abstract_type_1.AbstractType {
|
|
6
|
+
static get() {
|
|
7
|
+
return this.singleton;
|
|
8
|
+
}
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
}
|
|
6
12
|
toText() {
|
|
7
13
|
return "```x```";
|
|
8
14
|
}
|
|
@@ -20,4 +26,5 @@ class XGenericType extends _abstract_type_1.AbstractType {
|
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
28
|
exports.XGenericType = XGenericType;
|
|
29
|
+
XGenericType.singleton = new XGenericType();
|
|
23
30
|
//# sourceMappingURL=xgeneric_type.js.map
|
|
@@ -3,6 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.XStringType = void 0;
|
|
4
4
|
const _abstract_type_1 = require("./_abstract_type");
|
|
5
5
|
class XStringType extends _abstract_type_1.AbstractType {
|
|
6
|
+
static get(input) {
|
|
7
|
+
const key = JSON.stringify(input);
|
|
8
|
+
if (this.singletons.has(key)) {
|
|
9
|
+
return this.singletons.get(key);
|
|
10
|
+
}
|
|
11
|
+
const ret = new XStringType(input);
|
|
12
|
+
this.singletons.set(key, ret);
|
|
13
|
+
return ret;
|
|
14
|
+
}
|
|
15
|
+
constructor(input) {
|
|
16
|
+
super(input);
|
|
17
|
+
}
|
|
6
18
|
toText() {
|
|
7
19
|
return "```xstring```";
|
|
8
20
|
}
|
|
@@ -20,4 +32,5 @@ class XStringType extends _abstract_type_1.AbstractType {
|
|
|
20
32
|
}
|
|
21
33
|
}
|
|
22
34
|
exports.XStringType = XStringType;
|
|
35
|
+
XStringType.singletons = new Map();
|
|
23
36
|
//# sourceMappingURL=xstring_type.js.map
|
|
@@ -25,7 +25,7 @@ class EventDefinition extends _identifier_1.Identifier {
|
|
|
25
25
|
///////////////
|
|
26
26
|
parse(node, input) {
|
|
27
27
|
for (const e of node.findAllExpressions(expressions_1.MethodParam)) {
|
|
28
|
-
this.parameters.push(
|
|
28
|
+
this.parameters.push(method_param_1.MethodParam.runSyntax(e, input, []));
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -42,10 +42,10 @@ class FormDefinition extends _identifier_1.Identifier {
|
|
|
42
42
|
for (const param of tables.findAllExpressions(Expressions.FormParam)) {
|
|
43
43
|
if (param.getChildren().length === 1) {
|
|
44
44
|
// untyped TABLES parameter
|
|
45
|
-
ret.push(new _typed_identifier_1.TypedIdentifier(param.getFirstToken(), input.filename,
|
|
45
|
+
ret.push(new _typed_identifier_1.TypedIdentifier(param.getFirstToken(), input.filename, basic_1.VoidType.get("FORM:UNTYPED"), ["form_parameter" /* IdentifierMeta.FormParameter */]));
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
48
|
-
const p =
|
|
48
|
+
const p = form_param_1.FormParam.runSyntax(param, input);
|
|
49
49
|
let type = p.getType();
|
|
50
50
|
const isStructure = param.findDirectTokenByText("STRUCTURE") !== undefined;
|
|
51
51
|
if (isStructure) {
|
|
@@ -72,7 +72,7 @@ class FormDefinition extends _identifier_1.Identifier {
|
|
|
72
72
|
findParams(node, input) {
|
|
73
73
|
const res = [];
|
|
74
74
|
for (const param of node.findAllExpressions(Expressions.FormParam)) {
|
|
75
|
-
const p =
|
|
75
|
+
const p = form_param_1.FormParam.runSyntax(param, input);
|
|
76
76
|
res.push(p);
|
|
77
77
|
}
|
|
78
78
|
return res;
|
|
@@ -137,7 +137,7 @@ class MethodParameters {
|
|
|
137
137
|
this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, found.getType(), ["event_parameter" /* IdentifierMeta.EventParameter */]));
|
|
138
138
|
}
|
|
139
139
|
else if (doVoid) {
|
|
140
|
-
this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename,
|
|
140
|
+
this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, basic_1.VoidType.get(ooName), ["event_parameter" /* IdentifierMeta.EventParameter */]));
|
|
141
141
|
}
|
|
142
142
|
else {
|
|
143
143
|
const type = new basic_1.UnknownType(`handler parameter not found "${search}"`);
|
|
@@ -166,7 +166,7 @@ class MethodParameters {
|
|
|
166
166
|
}
|
|
167
167
|
const returning = node.findFirstExpression(Expressions.MethodDefReturning);
|
|
168
168
|
if (returning) {
|
|
169
|
-
this.returning =
|
|
169
|
+
this.returning = method_def_returning_1.MethodDefReturning.runSyntax(returning, input, ["returning" /* IdentifierMeta.MethodReturning */]);
|
|
170
170
|
}
|
|
171
171
|
this.workaroundRAP(node, input, parentName);
|
|
172
172
|
}
|
|
@@ -178,7 +178,7 @@ class MethodParameters {
|
|
|
178
178
|
if (foo === resultName) {
|
|
179
179
|
continue;
|
|
180
180
|
}
|
|
181
|
-
this.importing.push(new _typed_identifier_1.TypedIdentifier(foo.getFirstToken(), input.filename,
|
|
181
|
+
this.importing.push(new _typed_identifier_1.TypedIdentifier(foo.getFirstToken(), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["importing" /* IdentifierMeta.MethodImporting */]));
|
|
182
182
|
}
|
|
183
183
|
const concat = node.concatTokens().toUpperCase();
|
|
184
184
|
if (concat.includes(" FOR VALIDATE ")
|
|
@@ -186,23 +186,23 @@ class MethodParameters {
|
|
|
186
186
|
|| concat.includes(" FOR FEATURES ")
|
|
187
187
|
|| concat.includes(" FOR MODIFY ")) {
|
|
188
188
|
const token = isRap.getFirstToken();
|
|
189
|
-
this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "failed"), input.filename,
|
|
190
|
-
this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "mapped"), input.filename,
|
|
191
|
-
this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "reported"), input.filename,
|
|
189
|
+
this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "failed"), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
|
|
190
|
+
this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "mapped"), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
|
|
191
|
+
this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), "reported"), input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
if (resultName) {
|
|
195
195
|
const token = resultName.getFirstToken();
|
|
196
|
-
this.importing.push(new _typed_identifier_1.TypedIdentifier(token, input.filename,
|
|
196
|
+
this.importing.push(new _typed_identifier_1.TypedIdentifier(token, input.filename, basic_1.VoidType.get("RapMethodParameter"), ["exporting" /* IdentifierMeta.MethodExporting */]));
|
|
197
197
|
}
|
|
198
198
|
// its some kind of magic
|
|
199
199
|
if (parentName.toUpperCase() === "CL_ABAP_BEHAVIOR_SAVER") {
|
|
200
|
-
const tempChanging = this.changing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename,
|
|
200
|
+
const tempChanging = this.changing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename, basic_1.VoidType.get("RapMethodParameter"), c.getMeta()));
|
|
201
201
|
while (this.changing.length > 0) {
|
|
202
202
|
this.changing.shift();
|
|
203
203
|
}
|
|
204
204
|
this.changing.push(...tempChanging);
|
|
205
|
-
const tempImporting = this.importing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename,
|
|
205
|
+
const tempImporting = this.importing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), input.filename, basic_1.VoidType.get("RapMethodParameter"), c.getMeta()));
|
|
206
206
|
while (this.importing.length > 0) {
|
|
207
207
|
this.importing.shift();
|
|
208
208
|
}
|
|
@@ -226,7 +226,7 @@ class MethodParameters {
|
|
|
226
226
|
if (abstractMethod === true) {
|
|
227
227
|
extraMeta.push("abstract" /* IdentifierMeta.Abstract */);
|
|
228
228
|
}
|
|
229
|
-
const id =
|
|
229
|
+
const id = method_param_1.MethodParam.runSyntax(p, input, [...meta, ...extraMeta]);
|
|
230
230
|
input.scope.addIdentifier(id);
|
|
231
231
|
target.push(id);
|
|
232
232
|
if (opt.findDirectTokenByText("OPTIONAL")) {
|
|
@@ -247,7 +247,7 @@ class MethodParameters {
|
|
|
247
247
|
}
|
|
248
248
|
const params = source.findAllExpressions(Expressions.MethodParam);
|
|
249
249
|
for (const param of params) {
|
|
250
|
-
target.push(
|
|
250
|
+
target.push(method_param_1.MethodParam.runSyntax(param, input, meta));
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
}
|
|
@@ -7,7 +7,7 @@ class CDSDetermineTypes {
|
|
|
7
7
|
parseType(reg, parsedData, ddlsName) {
|
|
8
8
|
const ddic = new ddic_1.DDIC(reg);
|
|
9
9
|
if ((parsedData === null || parsedData === void 0 ? void 0 : parsedData.fields.length) === 0) {
|
|
10
|
-
return
|
|
10
|
+
return basic_1.VoidType.get("DDLS:todo");
|
|
11
11
|
}
|
|
12
12
|
else {
|
|
13
13
|
const components = [];
|
|
@@ -23,7 +23,7 @@ class CDSDetermineTypes {
|
|
|
23
23
|
|| parsedData.associations.find((s) => { var _a; return ((_a = s.as) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === prefixUpper; }))) {
|
|
24
24
|
components.push({
|
|
25
25
|
name: f.name,
|
|
26
|
-
type:
|
|
26
|
+
type: basic_1.VoidType.get("DDLS:association"),
|
|
27
27
|
});
|
|
28
28
|
continue;
|
|
29
29
|
}
|
|
@@ -31,7 +31,7 @@ class CDSDetermineTypes {
|
|
|
31
31
|
if (prefixUpper.startsWith("_")) {
|
|
32
32
|
components.push({
|
|
33
33
|
name: f.name,
|
|
34
|
-
type:
|
|
34
|
+
type: basic_1.VoidType.get("DDLS:association"),
|
|
35
35
|
});
|
|
36
36
|
continue;
|
|
37
37
|
}
|
|
@@ -75,14 +75,14 @@ class CDSDetermineTypes {
|
|
|
75
75
|
else {
|
|
76
76
|
components.push({
|
|
77
77
|
name: f.name,
|
|
78
|
-
type:
|
|
78
|
+
type: basic_1.VoidType.get(source.name),
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
83
83
|
components.push({
|
|
84
84
|
name: f.name,
|
|
85
|
-
type:
|
|
85
|
+
type: basic_1.VoidType.get("DDLS:fieldname:" + ddlsName),
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
}
|
package/build/src/ddic.js
CHANGED
|
@@ -48,7 +48,7 @@ class DDIC {
|
|
|
48
48
|
case "STRING":
|
|
49
49
|
return Types.StringType.get({ qualifiedName: qualifiedName || name });
|
|
50
50
|
case "XSTRING":
|
|
51
|
-
return
|
|
51
|
+
return Types.XStringType.get({ qualifiedName: qualifiedName || name });
|
|
52
52
|
case "D":
|
|
53
53
|
return new Types.DateType({ qualifiedName: qualifiedName || name });
|
|
54
54
|
case "T":
|
|
@@ -60,13 +60,13 @@ class DDIC {
|
|
|
60
60
|
case "DECFLOAT":
|
|
61
61
|
return new Types.DecFloatType({ qualifiedName: qualifiedName });
|
|
62
62
|
case "ANY":
|
|
63
|
-
return
|
|
63
|
+
return Types.AnyType.get({ qualifiedName: qualifiedName });
|
|
64
64
|
case "SIMPLE":
|
|
65
65
|
return new Types.SimpleType({ qualifiedName: qualifiedName });
|
|
66
66
|
case "%_C_POINTER":
|
|
67
67
|
return new Types.HexType(8, qualifiedName);
|
|
68
68
|
case "TABLE":
|
|
69
|
-
return new Types.TableType(
|
|
69
|
+
return new Types.TableType(Types.AnyType.get(), { withHeader: false, keyType: Types.TableKeyType.default });
|
|
70
70
|
case "DATA":
|
|
71
71
|
return new Types.DataType({ qualifiedName: qualifiedName });
|
|
72
72
|
case "NUMERIC":
|
|
@@ -146,7 +146,7 @@ class DDIC {
|
|
|
146
146
|
return { type: new basic_1.UnknownType(name) };
|
|
147
147
|
}
|
|
148
148
|
else {
|
|
149
|
-
return { type:
|
|
149
|
+
return { type: basic_1.VoidType.get(name) };
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
lookupNoVoid(name) {
|
|
@@ -196,7 +196,7 @@ class DDIC {
|
|
|
196
196
|
return { type: new Types.UnknownType(name + " not found, lookup") };
|
|
197
197
|
}
|
|
198
198
|
else {
|
|
199
|
-
return { type:
|
|
199
|
+
return { type: Types.VoidType.get(name) };
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
lookupDomain(name, dataElement, description) {
|
|
@@ -208,7 +208,7 @@ class DDIC {
|
|
|
208
208
|
return { type: new Types.UnknownType(name + ", lookupDomain"), object: undefined };
|
|
209
209
|
}
|
|
210
210
|
else {
|
|
211
|
-
return { type:
|
|
211
|
+
return { type: Types.VoidType.get(name), object: undefined };
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
lookupDataElement(name) {
|
|
@@ -223,7 +223,7 @@ class DDIC {
|
|
|
223
223
|
return { type: new Types.UnknownType(name + " not found, lookupDataElement") };
|
|
224
224
|
}
|
|
225
225
|
else {
|
|
226
|
-
return { type:
|
|
226
|
+
return { type: Types.VoidType.get(name) };
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
lookupTableOrView(name) {
|
|
@@ -271,7 +271,7 @@ class DDIC {
|
|
|
271
271
|
return new Types.UnknownType(name + " not found, lookupTable");
|
|
272
272
|
}
|
|
273
273
|
else {
|
|
274
|
-
return
|
|
274
|
+
return Types.VoidType.get(name);
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
277
|
lookupView(name) {
|
|
@@ -286,7 +286,7 @@ class DDIC {
|
|
|
286
286
|
return { type: new Types.UnknownType(name + " not found, lookupView") };
|
|
287
287
|
}
|
|
288
288
|
else {
|
|
289
|
-
return { type:
|
|
289
|
+
return { type: Types.VoidType.get(name) };
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
292
|
lookupTableType(name) {
|
|
@@ -301,7 +301,7 @@ class DDIC {
|
|
|
301
301
|
return { type: new Types.UnknownType(name + " not found, lookupTableType") };
|
|
302
302
|
}
|
|
303
303
|
else {
|
|
304
|
-
return { type:
|
|
304
|
+
return { type: Types.VoidType.get(name) };
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
textToType(input) {
|
|
@@ -390,7 +390,7 @@ class DDIC {
|
|
|
390
390
|
case "RSTR": // 256 <= len
|
|
391
391
|
case "RAWSTRING": // 256 <= len
|
|
392
392
|
case "GEOM_EWKB":
|
|
393
|
-
return
|
|
393
|
+
return Types.XStringType.get({ qualifiedName: input.qualifiedName });
|
|
394
394
|
case "D16S":
|
|
395
395
|
case "D34S":
|
|
396
396
|
case "DF16_SCL":
|
|
@@ -43,7 +43,7 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
|
|
|
43
43
|
return new basic_1.UnknownType(this.parsedXML.rollname + " not found");
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
|
-
return
|
|
46
|
+
return basic_1.VoidType.get(this.parsedXML.rollname);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
@@ -39,7 +39,7 @@ class LockObject extends _abstract_object_1.AbstractObject {
|
|
|
39
39
|
return new basic_1.UnknownType(this.parsedXML.primaryTable + " not found");
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
|
-
return
|
|
42
|
+
return basic_1.VoidType.get(this.parsedXML.primaryTable);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
@@ -53,11 +53,11 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
|
|
|
53
53
|
return new basic_1.UnknownType(this.parsedXML.objectName + " not found");
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
|
-
return
|
|
56
|
+
return basic_1.VoidType.get(this.parsedXML.objectName);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
else if (((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.objectType) !== "S" && ((_c = this.parsedXML) === null || _c === void 0 ? void 0 : _c.objectName)) {
|
|
60
|
-
return
|
|
60
|
+
return basic_1.VoidType.get(this.parsedXML.objectName);
|
|
61
61
|
}
|
|
62
62
|
else {
|
|
63
63
|
return new basic_1.UnknownType("Parsing error");
|
|
@@ -160,7 +160,7 @@ class Table extends _abstract_object_1.AbstractObject {
|
|
|
160
160
|
if (field.ROLLNAME === "DATA") {
|
|
161
161
|
components.push({
|
|
162
162
|
name: field.FIELDNAME,
|
|
163
|
-
type: new basic_1.DataReference(
|
|
163
|
+
type: new basic_1.DataReference(basic_1.AnyType.get())
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
else if (field.ROLLNAME === "OBJECT") {
|
|
@@ -55,7 +55,7 @@ class View extends _abstract_object_1.AbstractObject {
|
|
|
55
55
|
else if (this.parsedData.header.VIEWCLASS === ViewClass.ExternalView) {
|
|
56
56
|
components.push({
|
|
57
57
|
name: field.VIEWFIELD,
|
|
58
|
-
type:
|
|
58
|
+
type: Types.VoidType.get("ExternalView")
|
|
59
59
|
});
|
|
60
60
|
continue;
|
|
61
61
|
}
|
package/build/src/registry.js
CHANGED
|
@@ -1239,7 +1239,8 @@ ${indentation}${uniqueName1}-attr3 = 'IF_T100_DYN_MSG~MSGV3'.
|
|
|
1239
1239
|
${indentation}${uniqueName1}-attr4 = 'IF_T100_DYN_MSG~MSGV4'.\n`;
|
|
1240
1240
|
}
|
|
1241
1241
|
abap += `${indentation}DATA ${uniqueName2} TYPE REF TO ${className}.
|
|
1242
|
-
${indentation}CREATE OBJECT ${uniqueName2}
|
|
1242
|
+
${indentation}CREATE OBJECT ${uniqueName2}.
|
|
1243
|
+
${indentation}${uniqueName2}->if_t100_message~t100key = ${uniqueName1}.\n`;
|
|
1243
1244
|
if (withs.length > 0) {
|
|
1244
1245
|
abap += `${indentation}${uniqueName2}->if_t100_dyn_msg~msgty = 'E'.\n`;
|
|
1245
1246
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/core",
|
|
3
|
-
"version": "2.113.
|
|
3
|
+
"version": "2.113.128",
|
|
4
4
|
"description": "abaplint - Core API",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/abaplint.d.ts",
|
|
@@ -53,17 +53,17 @@
|
|
|
53
53
|
"@microsoft/api-extractor": "^7.52.8",
|
|
54
54
|
"@types/chai": "^4.3.20",
|
|
55
55
|
"@types/mocha": "^10.0.10",
|
|
56
|
-
"@types/node": "^
|
|
56
|
+
"@types/node": "^24.0.1",
|
|
57
57
|
"chai": "^4.5.0",
|
|
58
|
-
"eslint": "^9.
|
|
59
|
-
"mocha": "^11.
|
|
58
|
+
"eslint": "^9.29.0",
|
|
59
|
+
"mocha": "^11.6.0",
|
|
60
60
|
"c8": "^10.1.3",
|
|
61
61
|
"source-map-support": "^0.5.21",
|
|
62
62
|
"ts-json-schema-generator": "^2.4.0",
|
|
63
63
|
"typescript": "^5.8.3"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"fast-xml-parser": "^5.2.
|
|
66
|
+
"fast-xml-parser": "^5.2.5",
|
|
67
67
|
"json5": "^2.2.3",
|
|
68
68
|
"vscode-languageserver-types": "^3.17.5"
|
|
69
69
|
}
|