@abaplint/core 2.111.1 → 2.112.1
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 -8
- package/build/src/abap/5_syntax/_builtin.js +2 -2
- package/build/src/abap/5_syntax/_current_scope.js +2 -0
- package/build/src/abap/5_syntax/_procedural.js +6 -2
- package/build/src/abap/5_syntax/_syntax_input.js +11 -0
- package/build/src/abap/5_syntax/assert_error.js +7 -0
- package/build/src/abap/5_syntax/basic_types.js +78 -79
- package/build/src/abap/5_syntax/expressions/attribute_chain.js +15 -8
- package/build/src/abap/5_syntax/expressions/attribute_name.js +24 -11
- package/build/src/abap/5_syntax/expressions/cast.js +24 -13
- package/build/src/abap/5_syntax/expressions/compare.js +4 -4
- package/build/src/abap/5_syntax/expressions/component_chain.js +26 -11
- package/build/src/abap/5_syntax/expressions/component_compare.js +7 -4
- package/build/src/abap/5_syntax/expressions/component_compare_simple.js +11 -6
- package/build/src/abap/5_syntax/expressions/component_cond.js +3 -3
- package/build/src/abap/5_syntax/expressions/component_name.js +10 -5
- package/build/src/abap/5_syntax/expressions/cond.js +3 -6
- package/build/src/abap/5_syntax/expressions/cond_body.js +6 -6
- package/build/src/abap/5_syntax/expressions/conv_body.js +9 -8
- package/build/src/abap/5_syntax/expressions/corresponding_body.js +3 -3
- package/build/src/abap/5_syntax/expressions/data_definition.js +7 -7
- package/build/src/abap/5_syntax/expressions/database_table.js +9 -7
- package/build/src/abap/5_syntax/expressions/default.js +2 -2
- package/build/src/abap/5_syntax/expressions/dereference.js +5 -2
- package/build/src/abap/5_syntax/expressions/dynamic.js +2 -2
- package/build/src/abap/5_syntax/expressions/field_assignment.js +12 -5
- package/build/src/abap/5_syntax/expressions/field_chain.js +40 -25
- 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 +11 -11
- package/build/src/abap/5_syntax/expressions/form_param.js +10 -9
- package/build/src/abap/5_syntax/expressions/fstarget.js +8 -5
- package/build/src/abap/5_syntax/expressions/inline_data.js +11 -8
- package/build/src/abap/5_syntax/expressions/inline_field_definition.js +12 -8
- package/build/src/abap/5_syntax/expressions/inline_fs.js +7 -7
- package/build/src/abap/5_syntax/expressions/inline_loop_definition.js +16 -11
- package/build/src/abap/5_syntax/expressions/let.js +3 -3
- package/build/src/abap/5_syntax/expressions/loop_group_by.js +5 -15
- package/build/src/abap/5_syntax/expressions/message_source.js +4 -4
- package/build/src/abap/5_syntax/expressions/method_call_body.js +4 -4
- package/build/src/abap/5_syntax/expressions/method_call_chain.js +34 -25
- package/build/src/abap/5_syntax/expressions/method_call_param.js +33 -14
- package/build/src/abap/5_syntax/expressions/method_def_returning.js +7 -6
- package/build/src/abap/5_syntax/expressions/method_param.js +11 -10
- package/build/src/abap/5_syntax/expressions/method_parameters.js +76 -49
- package/build/src/abap/5_syntax/expressions/method_source.js +47 -38
- package/build/src/abap/5_syntax/expressions/new_object.js +48 -28
- package/build/src/abap/5_syntax/expressions/raise_with.js +2 -2
- package/build/src/abap/5_syntax/expressions/reduce_body.js +10 -10
- package/build/src/abap/5_syntax/expressions/reduce_next.js +3 -3
- package/build/src/abap/5_syntax/expressions/select.js +48 -33
- package/build/src/abap/5_syntax/expressions/select_loop.js +2 -2
- package/build/src/abap/5_syntax/expressions/source.js +74 -64
- package/build/src/abap/5_syntax/expressions/source_field.js +12 -6
- package/build/src/abap/5_syntax/expressions/source_field_symbol.js +8 -4
- package/build/src/abap/5_syntax/expressions/sql_compare.js +11 -19
- package/build/src/abap/5_syntax/expressions/sql_for_all_entries.js +7 -4
- package/build/src/abap/5_syntax/expressions/sql_from.js +3 -3
- package/build/src/abap/5_syntax/expressions/sql_in.js +34 -0
- 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 +16 -8
- package/build/src/abap/5_syntax/expressions/switch_body.js +8 -4
- package/build/src/abap/5_syntax/expressions/table_expression.js +2 -2
- package/build/src/abap/5_syntax/expressions/target.js +50 -29
- package/build/src/abap/5_syntax/expressions/type_table.js +7 -7
- package/build/src/abap/5_syntax/expressions/value_body.js +17 -12
- package/build/src/abap/5_syntax/global_definitions/find_global_definitions.js +19 -6
- package/build/src/abap/5_syntax/spaghetti_scope.js +2 -1
- package/build/src/abap/5_syntax/statements/add.js +3 -3
- package/build/src/abap/5_syntax/statements/add_corresponding.js +3 -3
- package/build/src/abap/5_syntax/statements/append.js +25 -14
- package/build/src/abap/5_syntax/statements/assert.js +2 -2
- package/build/src/abap/5_syntax/statements/assign.js +17 -12
- package/build/src/abap/5_syntax/statements/authority_check.js +2 -2
- package/build/src/abap/5_syntax/statements/call.js +8 -5
- package/build/src/abap/5_syntax/statements/call_badi.js +4 -4
- package/build/src/abap/5_syntax/statements/call_function.js +12 -9
- package/build/src/abap/5_syntax/statements/call_kernel.js +2 -2
- package/build/src/abap/5_syntax/statements/call_transaction.js +3 -3
- package/build/src/abap/5_syntax/statements/call_transformation.js +5 -5
- package/build/src/abap/5_syntax/statements/case.js +2 -2
- package/build/src/abap/5_syntax/statements/case_type.js +2 -2
- package/build/src/abap/5_syntax/statements/catch.js +24 -19
- package/build/src/abap/5_syntax/statements/check.js +2 -2
- package/build/src/abap/5_syntax/statements/class_data.js +9 -5
- package/build/src/abap/5_syntax/statements/class_deferred.js +2 -2
- package/build/src/abap/5_syntax/statements/class_implementation.js +16 -13
- package/build/src/abap/5_syntax/statements/class_local_friends.js +16 -9
- package/build/src/abap/5_syntax/statements/clear.js +3 -3
- package/build/src/abap/5_syntax/statements/close_dataset.js +2 -2
- package/build/src/abap/5_syntax/statements/collect.js +4 -4
- package/build/src/abap/5_syntax/statements/commit_entities.js +4 -4
- package/build/src/abap/5_syntax/statements/concatenate.js +18 -11
- package/build/src/abap/5_syntax/statements/condense.js +2 -2
- package/build/src/abap/5_syntax/statements/constant.js +6 -5
- package/build/src/abap/5_syntax/statements/controls.js +5 -5
- package/build/src/abap/5_syntax/statements/convert.js +8 -8
- package/build/src/abap/5_syntax/statements/create_data.js +11 -11
- package/build/src/abap/5_syntax/statements/create_object.js +49 -26
- package/build/src/abap/5_syntax/statements/data.js +8 -4
- package/build/src/abap/5_syntax/statements/delete_cluster.js +4 -4
- package/build/src/abap/5_syntax/statements/delete_database.js +5 -5
- package/build/src/abap/5_syntax/statements/delete_internal.js +7 -7
- package/build/src/abap/5_syntax/statements/delete_report.js +2 -2
- package/build/src/abap/5_syntax/statements/describe.js +13 -13
- package/build/src/abap/5_syntax/statements/divide.js +3 -3
- package/build/src/abap/5_syntax/statements/do.js +8 -5
- package/build/src/abap/5_syntax/statements/editor_call.js +3 -3
- package/build/src/abap/5_syntax/statements/else_if.js +2 -2
- package/build/src/abap/5_syntax/statements/export.js +5 -5
- package/build/src/abap/5_syntax/statements/fieldsymbol.js +4 -4
- package/build/src/abap/5_syntax/statements/find.js +13 -13
- package/build/src/abap/5_syntax/statements/form.js +10 -7
- package/build/src/abap/5_syntax/statements/format.js +2 -2
- package/build/src/abap/5_syntax/statements/get_badi.js +4 -4
- package/build/src/abap/5_syntax/statements/get_bit.js +9 -6
- package/build/src/abap/5_syntax/statements/get_cursor.js +2 -2
- package/build/src/abap/5_syntax/statements/get_locale.js +3 -3
- package/build/src/abap/5_syntax/statements/get_parameter.js +4 -4
- package/build/src/abap/5_syntax/statements/get_reference.js +8 -5
- package/build/src/abap/5_syntax/statements/get_run_time.js +3 -3
- package/build/src/abap/5_syntax/statements/get_time.js +3 -3
- package/build/src/abap/5_syntax/statements/if.js +2 -2
- package/build/src/abap/5_syntax/statements/import.js +5 -5
- package/build/src/abap/5_syntax/statements/import_dynpro.js +3 -3
- package/build/src/abap/5_syntax/statements/include_type.js +9 -5
- package/build/src/abap/5_syntax/statements/insert_database.js +5 -5
- package/build/src/abap/5_syntax/statements/insert_field_group.js +4 -4
- package/build/src/abap/5_syntax/statements/insert_internal.js +22 -13
- package/build/src/abap/5_syntax/statements/insert_report.js +2 -2
- package/build/src/abap/5_syntax/statements/insert_textpool.js +2 -2
- package/build/src/abap/5_syntax/statements/interface_deferred.js +2 -2
- package/build/src/abap/5_syntax/statements/log_point.js +2 -2
- package/build/src/abap/5_syntax/statements/loop.js +29 -16
- package/build/src/abap/5_syntax/statements/loop_at_screen.js +3 -3
- package/build/src/abap/5_syntax/statements/message.js +6 -6
- package/build/src/abap/5_syntax/statements/method_implementation.js +18 -13
- package/build/src/abap/5_syntax/statements/modify_database.js +8 -8
- package/build/src/abap/5_syntax/statements/modify_entities.js +4 -4
- package/build/src/abap/5_syntax/statements/modify_internal.js +15 -8
- package/build/src/abap/5_syntax/statements/modify_screen.js +2 -2
- package/build/src/abap/5_syntax/statements/move.js +17 -10
- package/build/src/abap/5_syntax/statements/move_corresponding.js +14 -7
- package/build/src/abap/5_syntax/statements/multiply.js +3 -3
- package/build/src/abap/5_syntax/statements/open_dataset.js +3 -3
- package/build/src/abap/5_syntax/statements/pack.js +3 -3
- package/build/src/abap/5_syntax/statements/parameter.js +11 -6
- package/build/src/abap/5_syntax/statements/perform.js +12 -8
- package/build/src/abap/5_syntax/statements/raise.js +23 -18
- package/build/src/abap/5_syntax/statements/raise_event.js +4 -4
- package/build/src/abap/5_syntax/statements/ranges.js +6 -5
- package/build/src/abap/5_syntax/statements/read_entities.js +4 -4
- package/build/src/abap/5_syntax/statements/read_report.js +3 -3
- package/build/src/abap/5_syntax/statements/read_table.js +40 -21
- package/build/src/abap/5_syntax/statements/read_textpool.js +3 -3
- package/build/src/abap/5_syntax/statements/receive.js +3 -3
- package/build/src/abap/5_syntax/statements/replace.js +3 -3
- package/build/src/abap/5_syntax/statements/scan.js +3 -3
- package/build/src/abap/5_syntax/statements/search.js +2 -2
- package/build/src/abap/5_syntax/statements/select.js +2 -2
- package/build/src/abap/5_syntax/statements/select_loop.js +2 -2
- package/build/src/abap/5_syntax/statements/selection_screen.js +4 -4
- package/build/src/abap/5_syntax/statements/selectoption.js +9 -6
- package/build/src/abap/5_syntax/statements/set_bit.js +8 -5
- package/build/src/abap/5_syntax/statements/set_handler.js +3 -3
- package/build/src/abap/5_syntax/statements/set_locale.js +3 -3
- package/build/src/abap/5_syntax/statements/set_parameter.js +2 -2
- package/build/src/abap/5_syntax/statements/set_pf_status.js +2 -2
- package/build/src/abap/5_syntax/statements/set_titlebar.js +2 -2
- package/build/src/abap/5_syntax/statements/shift.js +15 -8
- package/build/src/abap/5_syntax/statements/sort.js +16 -7
- package/build/src/abap/5_syntax/statements/split.js +12 -7
- package/build/src/abap/5_syntax/statements/static.js +4 -4
- package/build/src/abap/5_syntax/statements/submit.js +4 -4
- package/build/src/abap/5_syntax/statements/subtract.js +3 -3
- package/build/src/abap/5_syntax/statements/subtract_corresponding.js +3 -3
- package/build/src/abap/5_syntax/statements/syntax_check.js +3 -3
- package/build/src/abap/5_syntax/statements/system_call.js +2 -2
- package/build/src/abap/5_syntax/statements/tables.js +7 -7
- package/build/src/abap/5_syntax/statements/transfer.js +3 -3
- package/build/src/abap/5_syntax/statements/translate.js +3 -3
- package/build/src/abap/5_syntax/statements/truncate_dataset.js +2 -2
- package/build/src/abap/5_syntax/statements/type.js +12 -7
- package/build/src/abap/5_syntax/statements/unassign.js +7 -4
- package/build/src/abap/5_syntax/statements/unpack.js +3 -3
- package/build/src/abap/5_syntax/statements/update_database.js +11 -11
- package/build/src/abap/5_syntax/statements/wait.js +3 -3
- package/build/src/abap/5_syntax/statements/when.js +2 -2
- package/build/src/abap/5_syntax/statements/when_type.js +9 -6
- package/build/src/abap/5_syntax/statements/while.js +4 -4
- package/build/src/abap/5_syntax/statements/with.js +3 -3
- package/build/src/abap/5_syntax/statements/with_loop.js +3 -3
- package/build/src/abap/5_syntax/statements/write.js +14 -10
- package/build/src/abap/5_syntax/structures/class_data.js +3 -3
- package/build/src/abap/5_syntax/structures/constants.js +6 -5
- package/build/src/abap/5_syntax/structures/data.js +17 -13
- package/build/src/abap/5_syntax/structures/statics.js +16 -11
- package/build/src/abap/5_syntax/structures/type_enum.js +15 -13
- package/build/src/abap/5_syntax/structures/types.js +9 -9
- package/build/src/abap/5_syntax/syntax.js +32 -16
- package/build/src/abap/types/class_attributes.js +30 -30
- package/build/src/abap/types/class_definition.js +29 -29
- package/build/src/abap/types/event_definition.js +5 -5
- package/build/src/abap/types/form_definition.js +13 -13
- package/build/src/abap/types/interface_definition.js +23 -22
- package/build/src/abap/types/method_definition.js +10 -10
- package/build/src/abap/types/method_definitions.js +9 -10
- package/build/src/abap/types/method_parameters.js +29 -29
- package/build/src/issue.js +12 -0
- package/build/src/registry.js +1 -1
- package/build/src/rules/check_syntax.js +2 -1
- package/build/src/rules/double_space.js +6 -3
- package/package.json +3 -3
|
@@ -5,37 +5,42 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const _object_oriented_1 = require("../_object_oriented");
|
|
6
6
|
const _scope_type_1 = require("../_scope_type");
|
|
7
7
|
const _reference_1 = require("../_reference");
|
|
8
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
8
9
|
class MethodImplementation {
|
|
9
|
-
runSyntax(node,
|
|
10
|
-
const helper = new _object_oriented_1.ObjectOriented(scope);
|
|
11
|
-
const className = scope.getName();
|
|
10
|
+
runSyntax(node, input) {
|
|
11
|
+
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
12
|
+
const className = input.scope.getName();
|
|
12
13
|
const methodToken = node.findFirstExpression(Expressions.MethodName).getFirstToken();
|
|
13
14
|
const methodName = methodToken === null || methodToken === void 0 ? void 0 : methodToken.getStr();
|
|
14
|
-
const classDefinition = scope.findClassDefinition(className);
|
|
15
|
+
const classDefinition = input.scope.findClassDefinition(className);
|
|
15
16
|
if (classDefinition === undefined) {
|
|
16
|
-
|
|
17
|
+
const message = "Class definition for \"" + className + "\" not found";
|
|
18
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
19
|
+
return;
|
|
17
20
|
}
|
|
18
21
|
const { method: methodDefinition } = helper.searchMethodName(classDefinition, methodName);
|
|
19
22
|
if (methodDefinition === undefined) {
|
|
20
|
-
|
|
23
|
+
const message = "Method definition \"" + methodName + "\" not found";
|
|
24
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
25
|
+
return;
|
|
21
26
|
}
|
|
22
27
|
const start = node.getFirstToken().getStart();
|
|
23
28
|
if (methodDefinition.isStatic() === false) {
|
|
24
|
-
scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, start, filename);
|
|
25
|
-
scope.addList(classDefinition.getAttributes().getInstance());
|
|
29
|
+
input.scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, start, input.filename);
|
|
30
|
+
input.scope.addList(classDefinition.getAttributes().getInstance());
|
|
26
31
|
}
|
|
27
|
-
scope.push(_scope_type_1.ScopeType.Method, methodName, start, filename);
|
|
28
|
-
scope.addReference(methodToken, methodDefinition, _reference_1.ReferenceType.MethodImplementationReference, filename);
|
|
29
|
-
scope.addList(methodDefinition.getParameters().getAll());
|
|
32
|
+
input.scope.push(_scope_type_1.ScopeType.Method, methodName, start, input.filename);
|
|
33
|
+
input.scope.addReference(methodToken, methodDefinition, _reference_1.ReferenceType.MethodImplementationReference, input.filename);
|
|
34
|
+
input.scope.addList(methodDefinition.getParameters().getAll());
|
|
30
35
|
for (const i of helper.findInterfaces(classDefinition)) {
|
|
31
36
|
if (methodName.toUpperCase().startsWith(i.name.toUpperCase() + "~") === false) {
|
|
32
37
|
continue;
|
|
33
38
|
}
|
|
34
|
-
const idef = scope.findInterfaceDefinition(i.name);
|
|
39
|
+
const idef = input.scope.findInterfaceDefinition(i.name);
|
|
35
40
|
if (idef === undefined) {
|
|
36
41
|
continue;
|
|
37
42
|
}
|
|
38
|
-
scope.addReference(methodToken, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
43
|
+
input.scope.addReference(methodToken, idef, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
39
44
|
}
|
|
40
45
|
}
|
|
41
46
|
}
|
|
@@ -7,30 +7,30 @@ const database_table_1 = require("../expressions/database_table");
|
|
|
7
7
|
const source_1 = require("../expressions/source");
|
|
8
8
|
const _reference_1 = require("../_reference");
|
|
9
9
|
class ModifyDatabase {
|
|
10
|
-
runSyntax(node,
|
|
10
|
+
runSyntax(node, input) {
|
|
11
11
|
for (const d of node.findAllExpressions(Expressions.Dynamic)) {
|
|
12
|
-
new dynamic_1.Dynamic().runSyntax(d,
|
|
12
|
+
new dynamic_1.Dynamic().runSyntax(d, input);
|
|
13
13
|
}
|
|
14
14
|
const dbtab = node.findFirstExpression(Expressions.DatabaseTable);
|
|
15
15
|
if (dbtab !== undefined) {
|
|
16
16
|
if (node.getChildren().length === 5) {
|
|
17
|
-
const found = scope.findVariable(dbtab.concatTokens());
|
|
17
|
+
const found = input.scope.findVariable(dbtab.concatTokens());
|
|
18
18
|
if (found) {
|
|
19
|
-
scope.addReference(dbtab.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, filename);
|
|
19
|
+
input.scope.addReference(dbtab.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, input.filename);
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
|
-
new database_table_1.DatabaseTable().runSyntax(dbtab,
|
|
22
|
+
new database_table_1.DatabaseTable().runSyntax(dbtab, input);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
|
-
new database_table_1.DatabaseTable().runSyntax(dbtab,
|
|
26
|
+
new database_table_1.DatabaseTable().runSyntax(dbtab, input);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
for (const s of node.findAllExpressions(Expressions.Source)) {
|
|
30
|
-
new source_1.Source().runSyntax(s,
|
|
30
|
+
new source_1.Source().runSyntax(s, input);
|
|
31
31
|
}
|
|
32
32
|
for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {
|
|
33
|
-
new source_1.Source().runSyntax(s,
|
|
33
|
+
new source_1.Source().runSyntax(s, input);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -7,17 +7,17 @@ const target_1 = require("../expressions/target");
|
|
|
7
7
|
const inline_data_1 = require("../expressions/inline_data");
|
|
8
8
|
const basic_1 = require("../../types/basic");
|
|
9
9
|
class ModifyEntities {
|
|
10
|
-
runSyntax(node,
|
|
10
|
+
runSyntax(node, input) {
|
|
11
11
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
12
|
-
new source_1.Source().runSyntax(s,
|
|
12
|
+
new source_1.Source().runSyntax(s, input);
|
|
13
13
|
}
|
|
14
14
|
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
15
15
|
const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);
|
|
16
16
|
if (inline) {
|
|
17
|
-
new inline_data_1.InlineData().runSyntax(inline,
|
|
17
|
+
new inline_data_1.InlineData().runSyntax(inline, input, new basic_1.VoidType("ModifyEntities"));
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
|
-
new target_1.Target().runSyntax(t,
|
|
20
|
+
new target_1.Target().runSyntax(t, input);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -7,17 +7,18 @@ const target_1 = require("../expressions/target");
|
|
|
7
7
|
const fstarget_1 = require("../expressions/fstarget");
|
|
8
8
|
const component_cond_1 = require("../expressions/component_cond");
|
|
9
9
|
const basic_1 = require("../../types/basic");
|
|
10
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
10
11
|
class ModifyInternal {
|
|
11
|
-
runSyntax(node,
|
|
12
|
+
runSyntax(node, input) {
|
|
12
13
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
13
|
-
new source_1.Source().runSyntax(s,
|
|
14
|
+
new source_1.Source().runSyntax(s, input);
|
|
14
15
|
}
|
|
15
16
|
// there is only one
|
|
16
17
|
const target = node.findFirstExpression(Expressions.Target);
|
|
17
18
|
const targetExpression = target;
|
|
18
19
|
if (targetExpression) {
|
|
19
20
|
// it might be a dynamic target
|
|
20
|
-
const targetType = new target_1.Target().runSyntax(targetExpression,
|
|
21
|
+
const targetType = new target_1.Target().runSyntax(targetExpression, input);
|
|
21
22
|
if (targetType instanceof basic_1.VoidType
|
|
22
23
|
|| targetType instanceof basic_1.AnyType
|
|
23
24
|
|| targetType instanceof basic_1.UnknownType) {
|
|
@@ -28,25 +29,31 @@ class ModifyInternal {
|
|
|
28
29
|
&& node.findDirectTokenByText("INDEX")
|
|
29
30
|
&& targetType.isWithHeader() === false) {
|
|
30
31
|
// MODIFY TABLE INDEX
|
|
31
|
-
|
|
32
|
+
const message = "Table does not have header line";
|
|
33
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
34
|
+
return;
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
37
|
else if (targetType instanceof basic_1.StructureType) {
|
|
35
38
|
// it might originate from a TABLES statement
|
|
36
39
|
if (target.concatTokens().toUpperCase() !== targetType.getDDICName()) {
|
|
37
|
-
|
|
40
|
+
const message = "Not an internal table";
|
|
41
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
42
|
+
return;
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
45
|
else {
|
|
41
|
-
|
|
46
|
+
const message = "Not an internal table";
|
|
47
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
48
|
+
return;
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
const fstarget = node.findDirectExpression(Expressions.FSTarget);
|
|
45
52
|
if (fstarget) {
|
|
46
|
-
new fstarget_1.FSTarget().runSyntax(fstarget,
|
|
53
|
+
new fstarget_1.FSTarget().runSyntax(fstarget, input, undefined);
|
|
47
54
|
}
|
|
48
55
|
for (const t of node.findDirectExpressions(Expressions.ComponentCond)) {
|
|
49
|
-
new component_cond_1.ComponentCond().runSyntax(t,
|
|
56
|
+
new component_cond_1.ComponentCond().runSyntax(t, input);
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
}
|
|
@@ -4,9 +4,9 @@ exports.ModifyScreen = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
class ModifyScreen {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input) {
|
|
8
8
|
for (const s of node.findAllExpressions(Expressions.Source)) {
|
|
9
|
-
new source_1.Source().runSyntax(s,
|
|
9
|
+
new source_1.Source().runSyntax(s, input);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -6,37 +6,44 @@ const source_1 = require("../expressions/source");
|
|
|
6
6
|
const target_1 = require("../expressions/target");
|
|
7
7
|
const inline_data_1 = require("../expressions/inline_data");
|
|
8
8
|
const _type_utils_1 = require("../_type_utils");
|
|
9
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
9
10
|
class Move {
|
|
10
|
-
runSyntax(node,
|
|
11
|
+
runSyntax(node, input) {
|
|
11
12
|
const targets = node.findDirectExpressions(Expressions.Target);
|
|
12
13
|
const firstTarget = targets[0];
|
|
13
14
|
const inline = firstTarget === null || firstTarget === void 0 ? void 0 : firstTarget.findDirectExpression(Expressions.InlineData);
|
|
14
15
|
let targetType = undefined;
|
|
15
16
|
if (inline === undefined) {
|
|
16
|
-
targetType = firstTarget ? new target_1.Target().runSyntax(firstTarget,
|
|
17
|
+
targetType = firstTarget ? new target_1.Target().runSyntax(firstTarget, input) : undefined;
|
|
17
18
|
for (const t of targets) {
|
|
18
19
|
if (t === firstTarget) {
|
|
19
20
|
continue;
|
|
20
21
|
}
|
|
21
|
-
new target_1.Target().runSyntax(t,
|
|
22
|
+
new target_1.Target().runSyntax(t, input);
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
const source = node.findDirectExpression(Expressions.Source);
|
|
25
|
-
const sourceType = source ? new source_1.Source().runSyntax(source,
|
|
26
|
+
const sourceType = source ? new source_1.Source().runSyntax(source, input, targetType) : undefined;
|
|
26
27
|
if (sourceType === undefined) {
|
|
27
|
-
|
|
28
|
+
const message = "No source type determined";
|
|
29
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30
|
+
return;
|
|
28
31
|
}
|
|
29
32
|
if (inline) {
|
|
30
|
-
new inline_data_1.InlineData().runSyntax(inline,
|
|
33
|
+
new inline_data_1.InlineData().runSyntax(inline, input, sourceType);
|
|
31
34
|
targetType = sourceType;
|
|
32
35
|
}
|
|
33
36
|
if (node.findDirectTokenByText("?=")) {
|
|
34
|
-
if (new _type_utils_1.TypeUtils(scope).isCastable(sourceType, targetType) === false) {
|
|
35
|
-
|
|
37
|
+
if (new _type_utils_1.TypeUtils(input.scope).isCastable(sourceType, targetType) === false) {
|
|
38
|
+
const message = "Incompatible types";
|
|
39
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
40
|
+
return;
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
|
-
else if (new _type_utils_1.TypeUtils(scope).isAssignable(sourceType, targetType) === false) {
|
|
39
|
-
|
|
43
|
+
else if (new _type_utils_1.TypeUtils(input.scope).isAssignable(sourceType, targetType) === false) {
|
|
44
|
+
const message = "Incompatible types";
|
|
45
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
46
|
+
return;
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
}
|
|
@@ -6,21 +6,28 @@ const source_1 = require("../expressions/source");
|
|
|
6
6
|
const target_1 = require("../expressions/target");
|
|
7
7
|
const version_1 = require("../../../version");
|
|
8
8
|
const basic_1 = require("../../types/basic");
|
|
9
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
9
10
|
class MoveCorresponding {
|
|
10
|
-
runSyntax(node,
|
|
11
|
+
runSyntax(node, input) {
|
|
11
12
|
const s = node.findDirectExpression(Expressions.Source);
|
|
12
13
|
const t = node.findDirectExpression(Expressions.SimpleTarget);
|
|
13
14
|
if (s === undefined || t === undefined) {
|
|
14
|
-
|
|
15
|
+
const message = "MoveCorresponding, source or target not found";
|
|
16
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
17
|
+
return;
|
|
15
18
|
}
|
|
16
|
-
const sourceType = new source_1.Source().runSyntax(s,
|
|
17
|
-
const targetType = new target_1.Target().runSyntax(t,
|
|
18
|
-
if (scope.getVersion() < version_1.Version.v740sp05 && scope.getVersion() !== version_1.Version.Cloud) {
|
|
19
|
+
const sourceType = new source_1.Source().runSyntax(s, input);
|
|
20
|
+
const targetType = new target_1.Target().runSyntax(t, input);
|
|
21
|
+
if (input.scope.getVersion() < version_1.Version.v740sp05 && input.scope.getVersion() !== version_1.Version.Cloud) {
|
|
19
22
|
if (sourceType instanceof basic_1.TableType && sourceType.isWithHeader() === false) {
|
|
20
|
-
|
|
23
|
+
const message = "MOVE-CORRESPONDING with tables possible from v740sp05";
|
|
24
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
25
|
+
return;
|
|
21
26
|
}
|
|
22
27
|
else if (targetType instanceof basic_1.TableType && targetType.isWithHeader() === false) {
|
|
23
|
-
|
|
28
|
+
const message = "MOVE-CORRESPONDING with tables possible from v740sp05";
|
|
29
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30
|
+
return;
|
|
24
31
|
}
|
|
25
32
|
}
|
|
26
33
|
}
|
|
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
const target_1 = require("../expressions/target");
|
|
7
7
|
class Multiply {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
10
|
-
new source_1.Source().runSyntax(s,
|
|
10
|
+
new source_1.Source().runSyntax(s, input);
|
|
11
11
|
}
|
|
12
12
|
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
13
|
-
new target_1.Target().runSyntax(t,
|
|
13
|
+
new target_1.Target().runSyntax(t, input);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
const target_1 = require("../expressions/target");
|
|
7
7
|
class OpenDataset {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
10
|
-
new source_1.Source().runSyntax(s,
|
|
10
|
+
new source_1.Source().runSyntax(s, input);
|
|
11
11
|
}
|
|
12
12
|
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
13
|
-
new target_1.Target().runSyntax(t,
|
|
13
|
+
new target_1.Target().runSyntax(t, input);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
const target_1 = require("../expressions/target");
|
|
7
7
|
class Pack {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
10
|
-
new source_1.Source().runSyntax(s,
|
|
10
|
+
new source_1.Source().runSyntax(s, input);
|
|
11
11
|
}
|
|
12
12
|
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
13
|
-
new target_1.Target().runSyntax(t,
|
|
13
|
+
new target_1.Target().runSyntax(t, input);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -5,23 +5,28 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const _typed_identifier_1 = require("../../types/_typed_identifier");
|
|
6
6
|
const basic_1 = require("../../types/basic");
|
|
7
7
|
const basic_types_1 = require("../basic_types");
|
|
8
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
8
9
|
class Parameter {
|
|
9
|
-
runSyntax(node,
|
|
10
|
+
runSyntax(node, input) {
|
|
10
11
|
var _a;
|
|
11
12
|
const nameToken = (_a = node.findFirstExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
|
|
12
13
|
if (nameToken && nameToken.getStr().length > 8) {
|
|
13
|
-
|
|
14
|
+
const message = "Parameter name too long, " + nameToken.getStr();
|
|
15
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
16
|
+
return;
|
|
14
17
|
}
|
|
15
18
|
if (node.findDirectTokenByText("RADIOBUTTON") && node.findDirectTokenByText("LENGTH")) {
|
|
16
|
-
|
|
19
|
+
const message = "RADIOBUTTON and LENGTH not possible together";
|
|
20
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
21
|
+
return;
|
|
17
22
|
}
|
|
18
|
-
const bfound = new basic_types_1.BasicTypes(
|
|
23
|
+
const bfound = new basic_types_1.BasicTypes(input).parseType(node);
|
|
19
24
|
if (nameToken && bfound) {
|
|
20
|
-
scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, bfound));
|
|
25
|
+
input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, bfound));
|
|
21
26
|
return;
|
|
22
27
|
}
|
|
23
28
|
if (nameToken) {
|
|
24
|
-
scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.UnknownType("Parameter, fallback")));
|
|
29
|
+
input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, new basic_1.UnknownType("Parameter, fallback")));
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
}
|
|
@@ -6,26 +6,28 @@ const Statements = require("../../2_statements/statements");
|
|
|
6
6
|
const _reference_1 = require("../_reference");
|
|
7
7
|
const source_1 = require("../expressions/source");
|
|
8
8
|
const target_1 = require("../expressions/target");
|
|
9
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
10
|
+
const assert_error_1 = require("../assert_error");
|
|
9
11
|
class Perform {
|
|
10
|
-
runSyntax(node,
|
|
12
|
+
runSyntax(node, input) {
|
|
11
13
|
if (!(node.get() instanceof Statements.Perform)) {
|
|
12
|
-
throw new
|
|
14
|
+
throw new assert_error_1.AssertError("checkPerform unexpected node type");
|
|
13
15
|
}
|
|
14
16
|
////////////////////////////
|
|
15
17
|
// check parameters are defined
|
|
16
18
|
for (const c of node.findDirectExpressions(Expressions.PerformChanging)) {
|
|
17
19
|
for (const s of c.findDirectExpressions(Expressions.Target)) {
|
|
18
|
-
new target_1.Target().runSyntax(s,
|
|
20
|
+
new target_1.Target().runSyntax(s, input);
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
for (const t of node.findDirectExpressions(Expressions.PerformTables)) {
|
|
22
24
|
for (const s of t.findDirectExpressions(Expressions.Source)) {
|
|
23
|
-
new source_1.Source().runSyntax(s,
|
|
25
|
+
new source_1.Source().runSyntax(s, input);
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
for (const u of node.findDirectExpressions(Expressions.PerformUsing)) {
|
|
27
29
|
for (const s of u.findDirectExpressions(Expressions.Source)) {
|
|
28
|
-
new source_1.Source().runSyntax(s,
|
|
30
|
+
new source_1.Source().runSyntax(s, input);
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
////////////////////////////
|
|
@@ -41,11 +43,13 @@ class Perform {
|
|
|
41
43
|
return; // it might be a dynamic call
|
|
42
44
|
}
|
|
43
45
|
const name = expr.concatTokens();
|
|
44
|
-
const found = scope.findFormDefinition(name);
|
|
46
|
+
const found = input.scope.findFormDefinition(name);
|
|
45
47
|
if (found === undefined) {
|
|
46
|
-
|
|
48
|
+
const message = "FORM definition \"" + name + "\" not found";
|
|
49
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, expr.getFirstToken(), message));
|
|
50
|
+
return;
|
|
47
51
|
}
|
|
48
|
-
scope.addReference(expr.getFirstToken(), found, _reference_1.ReferenceType.FormReference, filename);
|
|
52
|
+
input.scope.addReference(expr.getFirstToken(), found, _reference_1.ReferenceType.FormReference, input.filename);
|
|
49
53
|
// todo, also check parameters match
|
|
50
54
|
}
|
|
51
55
|
}
|
|
@@ -10,28 +10,31 @@ const message_source_1 = require("../expressions/message_source");
|
|
|
10
10
|
const raise_with_1 = require("../expressions/raise_with");
|
|
11
11
|
const _object_oriented_1 = require("../_object_oriented");
|
|
12
12
|
const method_parameters_1 = require("../expressions/method_parameters");
|
|
13
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
13
14
|
class Raise {
|
|
14
|
-
runSyntax(node,
|
|
15
|
+
runSyntax(node, input) {
|
|
15
16
|
// todo
|
|
16
17
|
var _a, _b, _c, _d, _e, _f;
|
|
17
|
-
const helper = new _object_oriented_1.ObjectOriented(scope);
|
|
18
|
+
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
18
19
|
let method;
|
|
19
20
|
const classTok = (_a = node.findDirectExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
|
|
20
21
|
const className = classTok === null || classTok === void 0 ? void 0 : classTok.getStr();
|
|
21
|
-
if (className) {
|
|
22
|
-
const found = scope.existsObject(className);
|
|
22
|
+
if (classTok && className) {
|
|
23
|
+
const found = input.scope.existsObject(className);
|
|
23
24
|
if (found === null || found === void 0 ? void 0 : found.id) {
|
|
24
|
-
scope.addReference(classTok, found.id, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
25
|
-
const def = scope.findObjectDefinition(className);
|
|
25
|
+
input.scope.addReference(classTok, found.id, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
26
|
+
const def = input.scope.findObjectDefinition(className);
|
|
26
27
|
method = (_b = helper.searchMethodName(def, "CONSTRUCTOR")) === null || _b === void 0 ? void 0 : _b.method;
|
|
27
28
|
}
|
|
28
|
-
else if (scope.getDDIC().inErrorNamespace(className) === false) {
|
|
29
|
+
else if (input.scope.getDDIC().inErrorNamespace(className) === false) {
|
|
29
30
|
const extra = { ooName: className, ooType: "Void" };
|
|
30
|
-
scope.addReference(classTok, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, extra);
|
|
31
|
+
input.scope.addReference(classTok, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, input.filename, extra);
|
|
31
32
|
method = new basic_1.VoidType(className);
|
|
32
33
|
}
|
|
33
34
|
else {
|
|
34
|
-
|
|
35
|
+
const message = "RAISE, unknown class " + className;
|
|
36
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, classTok, message));
|
|
37
|
+
return;
|
|
35
38
|
}
|
|
36
39
|
if (method === undefined) {
|
|
37
40
|
method = new basic_1.VoidType(className);
|
|
@@ -39,16 +42,18 @@ class Raise {
|
|
|
39
42
|
}
|
|
40
43
|
const c = node.findExpressionAfterToken("EXCEPTION");
|
|
41
44
|
if (c instanceof nodes_1.ExpressionNode && (c.get() instanceof Expressions.SimpleSource2 || c.get() instanceof Expressions.Source)) {
|
|
42
|
-
const type = new source_1.Source().runSyntax(c,
|
|
45
|
+
const type = new source_1.Source().runSyntax(c, input);
|
|
43
46
|
if (type instanceof basic_1.VoidType) {
|
|
44
47
|
method = type;
|
|
45
48
|
}
|
|
46
49
|
else if (type instanceof basic_1.ObjectReferenceType) {
|
|
47
|
-
const def = scope.findObjectDefinition(type.getIdentifierName());
|
|
50
|
+
const def = input.scope.findObjectDefinition(type.getIdentifierName());
|
|
48
51
|
method = (_c = helper.searchMethodName(def, "CONSTRUCTOR")) === null || _c === void 0 ? void 0 : _c.method;
|
|
49
52
|
}
|
|
50
53
|
else if (type !== undefined) {
|
|
51
|
-
|
|
54
|
+
const message = "RAISE EXCEPTION, must be object reference, got " + type.constructor.name;
|
|
55
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, c.getFirstToken(), message));
|
|
56
|
+
return;
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
if (method === undefined) {
|
|
@@ -57,19 +62,19 @@ class Raise {
|
|
|
57
62
|
// check parameters vs constructor
|
|
58
63
|
const param = node.findDirectExpression(Expressions.ParameterListS);
|
|
59
64
|
if (param) {
|
|
60
|
-
new method_parameters_1.MethodParameters().checkExporting(param,
|
|
65
|
+
new method_parameters_1.MethodParameters().checkExporting(param, input, method, true);
|
|
61
66
|
}
|
|
62
67
|
for (const s of node.findDirectExpressions(Expressions.RaiseWith)) {
|
|
63
|
-
new raise_with_1.RaiseWith().runSyntax(s,
|
|
68
|
+
new raise_with_1.RaiseWith().runSyntax(s, input);
|
|
64
69
|
}
|
|
65
70
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
66
|
-
new source_1.Source().runSyntax(s,
|
|
71
|
+
new source_1.Source().runSyntax(s, input);
|
|
67
72
|
}
|
|
68
73
|
for (const s of node.findDirectExpressions(Expressions.SimpleSource2)) {
|
|
69
|
-
new source_1.Source().runSyntax(s,
|
|
74
|
+
new source_1.Source().runSyntax(s, input);
|
|
70
75
|
}
|
|
71
76
|
for (const s of node.findDirectExpressions(Expressions.MessageSource)) {
|
|
72
|
-
new message_source_1.MessageSource().runSyntax(s,
|
|
77
|
+
new message_source_1.MessageSource().runSyntax(s, input);
|
|
73
78
|
}
|
|
74
79
|
const id = (_d = node.findExpressionAfterToken("ID")) === null || _d === void 0 ? void 0 : _d.concatTokens();
|
|
75
80
|
let number = (_e = node.findDirectExpression(Expressions.MessageNumber)) === null || _e === void 0 ? void 0 : _e.concatTokens();
|
|
@@ -81,7 +86,7 @@ class Raise {
|
|
|
81
86
|
}
|
|
82
87
|
if ((id === null || id === void 0 ? void 0 : id.startsWith("'")) && number) {
|
|
83
88
|
const messageClass = id.substring(1, id.length - 1).toUpperCase();
|
|
84
|
-
scope.getMSAGReferences().addUsing(filename, node.getFirstToken(), messageClass, number);
|
|
89
|
+
input.scope.getMSAGReferences().addUsing(input.filename, node.getFirstToken(), messageClass, number);
|
|
85
90
|
}
|
|
86
91
|
}
|
|
87
92
|
}
|
|
@@ -5,18 +5,18 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
const _reference_1 = require("../_reference");
|
|
7
7
|
class RaiseEvent {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
// todo: only possible in classes
|
|
10
10
|
const f = node.findDirectExpression(Expressions.EventName);
|
|
11
11
|
if (f === null || f === void 0 ? void 0 : f.concatTokens().includes("~")) {
|
|
12
12
|
const name = f.concatTokens().split("~")[0];
|
|
13
|
-
const idef = scope.findInterfaceDefinition(name);
|
|
13
|
+
const idef = input.scope.findInterfaceDefinition(name);
|
|
14
14
|
if (idef) {
|
|
15
|
-
scope.addReference(f.getFirstToken(), idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
15
|
+
input.scope.addReference(f.getFirstToken(), idef, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
for (const s of node.findAllExpressions(Expressions.Source)) {
|
|
19
|
-
new source_1.Source().runSyntax(s,
|
|
19
|
+
new source_1.Source().runSyntax(s, input);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -5,15 +5,16 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const _typed_identifier_1 = require("../../types/_typed_identifier");
|
|
6
6
|
const basic_1 = require("../../types/basic");
|
|
7
7
|
const basic_types_1 = require("../basic_types");
|
|
8
|
+
const assert_error_1 = require("../assert_error");
|
|
8
9
|
class Ranges {
|
|
9
|
-
runSyntax(node,
|
|
10
|
+
runSyntax(node, input) {
|
|
10
11
|
var _a;
|
|
11
12
|
const nameToken = (_a = node.findFirstExpression(Expressions.SimpleName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
|
|
12
13
|
const typeExpression = node.findFirstExpression(Expressions.FieldSub);
|
|
13
14
|
if (typeExpression === undefined) {
|
|
14
|
-
throw new
|
|
15
|
+
throw new assert_error_1.AssertError("Ranges, unexpected node");
|
|
15
16
|
}
|
|
16
|
-
const found = new basic_types_1.BasicTypes(
|
|
17
|
+
const found = new basic_types_1.BasicTypes(input).parseType(typeExpression);
|
|
17
18
|
if (found && nameToken) {
|
|
18
19
|
const structure = new basic_1.StructureType([
|
|
19
20
|
{ name: "sign", type: new basic_1.CharacterType(1) },
|
|
@@ -22,8 +23,8 @@ class Ranges {
|
|
|
22
23
|
{ name: "high", type: found },
|
|
23
24
|
]);
|
|
24
25
|
const type = new basic_1.TableType(structure, { withHeader: true, keyType: basic_1.TableKeyType.default });
|
|
25
|
-
const id = new _typed_identifier_1.TypedIdentifier(nameToken, filename, type);
|
|
26
|
-
scope.addIdentifier(id);
|
|
26
|
+
const id = new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, type);
|
|
27
|
+
input.scope.addIdentifier(id);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
}
|
|
@@ -7,17 +7,17 @@ const target_1 = require("../expressions/target");
|
|
|
7
7
|
const inline_data_1 = require("../expressions/inline_data");
|
|
8
8
|
const basic_1 = require("../../types/basic");
|
|
9
9
|
class ReadEntities {
|
|
10
|
-
runSyntax(node,
|
|
10
|
+
runSyntax(node, input) {
|
|
11
11
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
12
|
-
new source_1.Source().runSyntax(s,
|
|
12
|
+
new source_1.Source().runSyntax(s, input);
|
|
13
13
|
}
|
|
14
14
|
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
15
15
|
const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);
|
|
16
16
|
if (inline) {
|
|
17
|
-
new inline_data_1.InlineData().runSyntax(inline,
|
|
17
|
+
new inline_data_1.InlineData().runSyntax(inline, input, new basic_1.VoidType("ReadEntities"));
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
|
-
new target_1.Target().runSyntax(t,
|
|
20
|
+
new target_1.Target().runSyntax(t, input);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const target_1 = require("../expressions/target");
|
|
6
6
|
const source_1 = require("../expressions/source");
|
|
7
7
|
class ReadReport {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
10
|
-
new source_1.Source().runSyntax(s,
|
|
10
|
+
new source_1.Source().runSyntax(s, input);
|
|
11
11
|
}
|
|
12
12
|
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
13
|
-
new target_1.Target().runSyntax(t,
|
|
13
|
+
new target_1.Target().runSyntax(t, input);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|