@abaplint/core 2.111.1 → 2.112.0
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 +19 -19
- 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/package.json +3 -3
|
@@ -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 SubtractCorresponding {
|
|
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 SyntaxCheck {
|
|
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
|
}
|
|
@@ -4,9 +4,9 @@ exports.SystemCall = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
class SystemCall {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input) {
|
|
8
8
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
9
|
-
new source_1.Source().runSyntax(s,
|
|
9
|
+
new source_1.Source().runSyntax(s, input);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -6,7 +6,7 @@ const _typed_identifier_1 = require("../../types/_typed_identifier");
|
|
|
6
6
|
const unknown_type_1 = require("../../types/basic/unknown_type");
|
|
7
7
|
const _scope_type_1 = require("../_scope_type");
|
|
8
8
|
class Tables {
|
|
9
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input) {
|
|
10
10
|
var _a, _b;
|
|
11
11
|
const nameToken = (_a = node.findFirstExpression(Expressions.Field)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
|
|
12
12
|
if (nameToken === undefined) {
|
|
@@ -17,20 +17,20 @@ class Tables {
|
|
|
17
17
|
name = name.substr(1);
|
|
18
18
|
}
|
|
19
19
|
// lookupTableOrView will also give Unknown and Void
|
|
20
|
-
const found = (_b = scope.getDDIC()) === null || _b === void 0 ? void 0 : _b.lookupTableOrView(name);
|
|
20
|
+
const found = (_b = input.scope.getDDIC()) === null || _b === void 0 ? void 0 : _b.lookupTableOrView(name);
|
|
21
21
|
if (found) {
|
|
22
|
-
scope.getDDICReferences().addUsing(scope.getParentObj(), { object: found.object, filename: filename, token: nameToken });
|
|
23
|
-
if (scope.getType() === _scope_type_1.ScopeType.Form || scope.getType() === _scope_type_1.ScopeType.FunctionModule) {
|
|
22
|
+
input.scope.getDDICReferences().addUsing(input.scope.getParentObj(), { object: found.object, filename: input.filename, token: nameToken });
|
|
23
|
+
if (input.scope.getType() === _scope_type_1.ScopeType.Form || input.scope.getType() === _scope_type_1.ScopeType.FunctionModule) {
|
|
24
24
|
// hoist TABLES definitions to global scope
|
|
25
|
-
scope.addNamedIdentifierToParent(nameToken.getStr(), new _typed_identifier_1.TypedIdentifier(nameToken, filename, found.type));
|
|
25
|
+
input.scope.addNamedIdentifierToParent(nameToken.getStr(), new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, found.type));
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, found.type));
|
|
28
|
+
input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, found.type));
|
|
29
29
|
}
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
// this should never happen,
|
|
33
|
-
scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new unknown_type_1.UnknownType("Tables, fallback")));
|
|
33
|
+
input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, new unknown_type_1.UnknownType("Tables, fallback")));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
exports.Tables = Tables;
|
|
@@ -5,13 +5,13 @@ 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 Transfer {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
for (const source of node.findDirectExpressions(Expressions.Source)) {
|
|
10
|
-
new source_1.Source().runSyntax(source,
|
|
10
|
+
new source_1.Source().runSyntax(source, input);
|
|
11
11
|
}
|
|
12
12
|
const target = node.findDirectExpression(Expressions.Target);
|
|
13
13
|
if (target) {
|
|
14
|
-
new target_1.Target().runSyntax(target,
|
|
14
|
+
new target_1.Target().runSyntax(target, input);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -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 Translate {
|
|
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
|
}
|
|
@@ -4,9 +4,9 @@ exports.TruncateDataset = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
class TruncateDataset {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input) {
|
|
8
8
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
9
|
-
new source_1.Source().runSyntax(s,
|
|
9
|
+
new source_1.Source().runSyntax(s, input);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -6,30 +6,35 @@ const _typed_identifier_1 = require("../../types/_typed_identifier");
|
|
|
6
6
|
const basic_1 = require("../../types/basic");
|
|
7
7
|
const Expressions = require("../../2_statements/expressions");
|
|
8
8
|
const type_table_1 = require("../expressions/type_table");
|
|
9
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
9
10
|
class Type {
|
|
10
|
-
runSyntax(node,
|
|
11
|
+
runSyntax(node, input, qualifiedNamePrefix) {
|
|
11
12
|
const tt = node.findFirstExpression(Expressions.TypeTable);
|
|
12
13
|
if (tt) {
|
|
13
|
-
return new type_table_1.TypeTable().runSyntax(node,
|
|
14
|
+
return new type_table_1.TypeTable().runSyntax(node, input, qualifiedNamePrefix);
|
|
14
15
|
}
|
|
15
|
-
const found = new basic_types_1.BasicTypes(
|
|
16
|
+
const found = new basic_types_1.BasicTypes(input).simpleType(node, qualifiedNamePrefix);
|
|
16
17
|
if (found) {
|
|
17
18
|
if ((found === null || found === void 0 ? void 0 : found.getType().isGeneric()) === true
|
|
18
19
|
&& (found === null || found === void 0 ? void 0 : found.getType().containsVoid()) === false) {
|
|
19
|
-
|
|
20
|
+
const message = "TYPES definition cannot be generic, " + found.getName();
|
|
21
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
22
|
+
return new _typed_identifier_1.TypedIdentifier(found.getToken(), input.filename, new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey));
|
|
20
23
|
}
|
|
21
|
-
if (scope.isGlobalOO() && found.getType() instanceof basic_1.PackedType) {
|
|
24
|
+
if (input.scope.isGlobalOO() && found.getType() instanceof basic_1.PackedType) {
|
|
22
25
|
const concat = node.concatTokens().toUpperCase();
|
|
23
26
|
if ((concat.includes(" TYPE P ") || concat.includes(" TYPE P."))
|
|
24
27
|
&& concat.includes(" DECIMALS ") === false) {
|
|
25
|
-
|
|
28
|
+
const message = "Specify DECIMALS in OO context for packed";
|
|
29
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30
|
+
return new _typed_identifier_1.TypedIdentifier(found.getToken(), input.filename, new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey));
|
|
26
31
|
}
|
|
27
32
|
}
|
|
28
33
|
return found;
|
|
29
34
|
}
|
|
30
35
|
const fallback = node.findFirstExpression(Expressions.NamespaceSimpleName);
|
|
31
36
|
if (fallback) {
|
|
32
|
-
return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), filename, new basic_1.UnknownType("Type, fallback"));
|
|
37
|
+
return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), input.filename, new basic_1.UnknownType("Type, fallback"));
|
|
33
38
|
}
|
|
34
39
|
return undefined;
|
|
35
40
|
}
|
|
@@ -3,16 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Unassign = void 0;
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const _reference_1 = require("../_reference");
|
|
6
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
6
7
|
class Unassign {
|
|
7
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
8
9
|
const target = node === null || node === void 0 ? void 0 : node.findDirectExpression(Expressions.TargetFieldSymbol);
|
|
9
10
|
if (target) {
|
|
10
11
|
const token = target.getFirstToken();
|
|
11
|
-
const found = scope.findVariable(token.getStr());
|
|
12
|
+
const found = input.scope.findVariable(token.getStr());
|
|
12
13
|
if (found === undefined) {
|
|
13
|
-
|
|
14
|
+
const message = `"${token.getStr()}" not found, Unassign`;
|
|
15
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
16
|
+
return;
|
|
14
17
|
}
|
|
15
|
-
scope.addReference(token, found, _reference_1.ReferenceType.DataWriteReference, filename);
|
|
18
|
+
input.scope.addReference(token, found, _reference_1.ReferenceType.DataWriteReference, input.filename);
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
}
|
|
@@ -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 Unpack {
|
|
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
|
}
|
|
@@ -10,36 +10,36 @@ const identifier_1 = require("../../1_lexer/tokens/identifier");
|
|
|
10
10
|
const database_table_1 = require("../expressions/database_table");
|
|
11
11
|
const dynamic_1 = require("../expressions/dynamic");
|
|
12
12
|
class UpdateDatabase {
|
|
13
|
-
runSyntax(node,
|
|
13
|
+
runSyntax(node, input) {
|
|
14
14
|
const dbtab = node.findFirstExpression(Expressions.DatabaseTable);
|
|
15
15
|
if (dbtab !== undefined) {
|
|
16
|
-
new database_table_1.DatabaseTable().runSyntax(dbtab,
|
|
16
|
+
new database_table_1.DatabaseTable().runSyntax(dbtab, input);
|
|
17
17
|
}
|
|
18
18
|
const tableName = node.findDirectExpression(Expressions.DatabaseTable);
|
|
19
19
|
const tokenName = tableName === null || tableName === void 0 ? void 0 : tableName.getFirstToken();
|
|
20
20
|
if (tableName && tokenName) {
|
|
21
21
|
// todo, this also finds structures, it should only find transparent tables
|
|
22
|
-
const found = scope.getDDIC().lookupTable(tokenName.getStr());
|
|
22
|
+
const found = input.scope.getDDIC().lookupTable(tokenName.getStr());
|
|
23
23
|
if (found instanceof basic_1.StructureType) {
|
|
24
|
-
scope.push(_scope_type_1.ScopeType.OpenSQL, "UPDATE", tokenName.getStart(), filename);
|
|
24
|
+
input.scope.push(_scope_type_1.ScopeType.OpenSQL, "UPDATE", tokenName.getStart(), input.filename);
|
|
25
25
|
for (const field of found.getComponents()) {
|
|
26
26
|
const fieldToken = new identifier_1.Identifier(node.getFirstToken().getStart(), field.name);
|
|
27
|
-
const id = new _typed_identifier_1.TypedIdentifier(fieldToken, filename, field.type);
|
|
28
|
-
scope.addIdentifier(id);
|
|
27
|
+
const id = new _typed_identifier_1.TypedIdentifier(fieldToken, input.filename, field.type);
|
|
28
|
+
input.scope.addIdentifier(id);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
for (const s of node.findAllExpressions(Expressions.Source)) {
|
|
33
|
-
new source_1.Source().runSyntax(s,
|
|
33
|
+
new source_1.Source().runSyntax(s, input);
|
|
34
34
|
}
|
|
35
35
|
for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {
|
|
36
|
-
new source_1.Source().runSyntax(s,
|
|
36
|
+
new source_1.Source().runSyntax(s, input);
|
|
37
37
|
}
|
|
38
38
|
for (const d of node.findAllExpressions(Expressions.Dynamic)) {
|
|
39
|
-
new dynamic_1.Dynamic().runSyntax(d,
|
|
39
|
+
new dynamic_1.Dynamic().runSyntax(d, input);
|
|
40
40
|
}
|
|
41
|
-
if (scope.getType() === _scope_type_1.ScopeType.OpenSQL) {
|
|
42
|
-
scope.pop(node.getLastToken().getEnd());
|
|
41
|
+
if (input.scope.getType() === _scope_type_1.ScopeType.OpenSQL) {
|
|
42
|
+
input.scope.pop(node.getLastToken().getEnd());
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
const cond_1 = require("../expressions/cond");
|
|
7
7
|
class Wait {
|
|
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.Cond)) {
|
|
13
|
-
new cond_1.Cond().runSyntax(t,
|
|
13
|
+
new cond_1.Cond().runSyntax(t, input);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -4,9 +4,9 @@ exports.When = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
6
|
class When {
|
|
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
|
}
|
|
@@ -5,8 +5,9 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const basic_1 = require("../../types/basic");
|
|
6
6
|
const inline_data_1 = require("../expressions/inline_data");
|
|
7
7
|
const target_1 = require("../expressions/target");
|
|
8
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
8
9
|
class WhenType {
|
|
9
|
-
runSyntax(node,
|
|
10
|
+
runSyntax(node, input) {
|
|
10
11
|
var _a;
|
|
11
12
|
const nameToken = (_a = node.findFirstExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
|
|
12
13
|
if (nameToken === undefined) {
|
|
@@ -14,12 +15,14 @@ class WhenType {
|
|
|
14
15
|
}
|
|
15
16
|
let type = undefined;
|
|
16
17
|
const className = nameToken.getStr();
|
|
17
|
-
const found = scope.findObjectDefinition(className);
|
|
18
|
-
if (found === undefined && scope.getDDIC().inErrorNamespace(className) === false) {
|
|
18
|
+
const found = input.scope.findObjectDefinition(className);
|
|
19
|
+
if (found === undefined && input.scope.getDDIC().inErrorNamespace(className) === false) {
|
|
19
20
|
type = new basic_1.VoidType(className);
|
|
20
21
|
}
|
|
21
22
|
else if (found === undefined) {
|
|
22
|
-
|
|
23
|
+
const message = "Class " + className + " not found";
|
|
24
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, message));
|
|
25
|
+
return;
|
|
23
26
|
}
|
|
24
27
|
else {
|
|
25
28
|
type = new basic_1.ObjectReferenceType(found);
|
|
@@ -27,10 +30,10 @@ class WhenType {
|
|
|
27
30
|
const target = node === null || node === void 0 ? void 0 : node.findDirectExpression(Expressions.Target);
|
|
28
31
|
const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);
|
|
29
32
|
if (inline) {
|
|
30
|
-
new inline_data_1.InlineData().runSyntax(inline,
|
|
33
|
+
new inline_data_1.InlineData().runSyntax(inline, input, type);
|
|
31
34
|
}
|
|
32
35
|
else if (target) {
|
|
33
|
-
new target_1.Target().runSyntax(target,
|
|
36
|
+
new target_1.Target().runSyntax(target, input);
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
}
|
|
@@ -6,15 +6,15 @@ const source_1 = require("../expressions/source");
|
|
|
6
6
|
const cond_1 = require("../expressions/cond");
|
|
7
7
|
const target_1 = require("../expressions/target");
|
|
8
8
|
class While {
|
|
9
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input) {
|
|
10
10
|
for (const s of node.findDirectExpressions(Expressions.Cond)) {
|
|
11
|
-
new cond_1.Cond().runSyntax(s,
|
|
11
|
+
new cond_1.Cond().runSyntax(s, input);
|
|
12
12
|
}
|
|
13
13
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
14
|
-
new source_1.Source().runSyntax(s,
|
|
14
|
+
new source_1.Source().runSyntax(s, input);
|
|
15
15
|
}
|
|
16
16
|
for (const s of node.findDirectExpressions(Expressions.Target)) {
|
|
17
|
-
new target_1.Target().runSyntax(s,
|
|
17
|
+
new target_1.Target().runSyntax(s, input);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const select_1 = require("../expressions/select");
|
|
6
6
|
const select_loop_1 = require("../expressions/select_loop");
|
|
7
7
|
class With {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
for (const s of node.findAllExpressions(Expressions.Select)) {
|
|
10
|
-
new select_1.Select().runSyntax(s,
|
|
10
|
+
new select_1.Select().runSyntax(s, input);
|
|
11
11
|
}
|
|
12
12
|
for (const s of node.findAllExpressions(Expressions.SelectLoop)) {
|
|
13
|
-
new select_loop_1.SelectLoop().runSyntax(s,
|
|
13
|
+
new select_loop_1.SelectLoop().runSyntax(s, input);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -5,12 +5,12 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const select_1 = require("../expressions/select");
|
|
6
6
|
const select_loop_1 = require("../expressions/select_loop");
|
|
7
7
|
class WithLoop {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
for (const s of node.findAllExpressions(Expressions.Select)) {
|
|
10
|
-
new select_1.Select().runSyntax(s,
|
|
10
|
+
new select_1.Select().runSyntax(s, input);
|
|
11
11
|
}
|
|
12
12
|
for (const s of node.findAllExpressions(Expressions.SelectLoop)) {
|
|
13
|
-
new select_loop_1.SelectLoop().runSyntax(s,
|
|
13
|
+
new select_loop_1.SelectLoop().runSyntax(s, input);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -8,30 +8,34 @@ const dynamic_1 = require("../expressions/dynamic");
|
|
|
8
8
|
const _type_utils_1 = require("../_type_utils");
|
|
9
9
|
const field_chain_1 = require("../expressions/field_chain");
|
|
10
10
|
const _reference_1 = require("../_reference");
|
|
11
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
11
12
|
class Write {
|
|
12
|
-
runSyntax(node,
|
|
13
|
+
runSyntax(node, input) {
|
|
13
14
|
// todo, more
|
|
15
|
+
var _a;
|
|
14
16
|
let second = node.getChildren()[1];
|
|
15
17
|
if (second.get() instanceof Expressions.WriteOffsetLength) {
|
|
16
18
|
second = node.getChildren()[2];
|
|
17
19
|
}
|
|
18
|
-
for (const s of node.
|
|
19
|
-
const type = new source_1.Source().runSyntax(s,
|
|
20
|
+
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
21
|
+
const type = new source_1.Source().runSyntax(s, input);
|
|
20
22
|
if (s === second
|
|
21
|
-
&& new _type_utils_1.TypeUtils(scope).isCharLike(type) === false
|
|
22
|
-
&& new _type_utils_1.TypeUtils(scope).isHexLike(type) === false) {
|
|
23
|
-
|
|
23
|
+
&& new _type_utils_1.TypeUtils(input.scope).isCharLike(type) === false
|
|
24
|
+
&& new _type_utils_1.TypeUtils(input.scope).isHexLike(type) === false) {
|
|
25
|
+
const message = "Source not character like";
|
|
26
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, s.getFirstToken(), message));
|
|
27
|
+
return;
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
|
-
for (const s of node.
|
|
27
|
-
new field_chain_1.FieldChain().runSyntax(s,
|
|
30
|
+
for (const s of ((_a = node.findDirectExpression(Expressions.WriteOffsetLength)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.SimpleFieldChain2)) || []) {
|
|
31
|
+
new field_chain_1.FieldChain().runSyntax(s, input, _reference_1.ReferenceType.DataReadReference);
|
|
28
32
|
}
|
|
29
33
|
for (const s of node.findAllExpressions(Expressions.Dynamic)) {
|
|
30
|
-
new dynamic_1.Dynamic().runSyntax(s,
|
|
34
|
+
new dynamic_1.Dynamic().runSyntax(s, input);
|
|
31
35
|
}
|
|
32
36
|
const target = node.findDirectExpression(Expressions.Target);
|
|
33
37
|
if (target) {
|
|
34
|
-
new target_1.Target().runSyntax(target,
|
|
38
|
+
new target_1.Target().runSyntax(target, input);
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
41
|
}
|
|
@@ -8,14 +8,14 @@ const _typed_identifier_1 = require("../../types/_typed_identifier");
|
|
|
8
8
|
const Basic = require("../../types/basic");
|
|
9
9
|
const class_data_1 = require("../statements/class_data");
|
|
10
10
|
class ClassData {
|
|
11
|
-
runSyntax(node,
|
|
11
|
+
runSyntax(node, input) {
|
|
12
12
|
const name = node.findFirstExpression(Expressions.NamespaceSimpleName).getFirstToken();
|
|
13
13
|
const values = {};
|
|
14
14
|
const components = [];
|
|
15
15
|
for (const c of node.getChildren()) {
|
|
16
16
|
const ctyp = c.get();
|
|
17
17
|
if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.ClassData) {
|
|
18
|
-
const found = new class_data_1.ClassData().runSyntax(c,
|
|
18
|
+
const found = new class_data_1.ClassData().runSyntax(c, input);
|
|
19
19
|
if (found) {
|
|
20
20
|
components.push({ name: found.getName(), type: found.getType() });
|
|
21
21
|
values[found.getName()] = found.getValue();
|
|
@@ -23,7 +23,7 @@ class ClassData {
|
|
|
23
23
|
}
|
|
24
24
|
// todo, nested structures and INCLUDES
|
|
25
25
|
}
|
|
26
|
-
return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components), ["static" /* IdentifierMeta.Static */], values);
|
|
26
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.StructureType(components), ["static" /* IdentifierMeta.Static */], values);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
exports.ClassData = ClassData;
|
|
@@ -8,26 +8,27 @@ const nodes_1 = require("../../nodes");
|
|
|
8
8
|
const _typed_identifier_1 = require("../../types/_typed_identifier");
|
|
9
9
|
const Basic = require("../../types/basic");
|
|
10
10
|
const constant_1 = require("../statements/constant");
|
|
11
|
+
const assert_error_1 = require("../assert_error");
|
|
11
12
|
class Constants {
|
|
12
|
-
runSyntax(node,
|
|
13
|
+
runSyntax(node, input) {
|
|
13
14
|
var _a;
|
|
14
15
|
const name = (_a = node.findFirstExpression(Expressions.DefinitionName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
|
|
15
16
|
if (name === undefined) {
|
|
16
|
-
throw new
|
|
17
|
+
throw new assert_error_1.AssertError("Constants, structure, unexpected node");
|
|
17
18
|
}
|
|
18
19
|
const components = [];
|
|
19
20
|
const values = {};
|
|
20
21
|
for (const c of node.getChildren()) {
|
|
21
22
|
const ctyp = c.get();
|
|
22
23
|
if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.Constant) {
|
|
23
|
-
const found = new constant_1.Constant().runSyntax(c,
|
|
24
|
+
const found = new constant_1.Constant().runSyntax(c, input);
|
|
24
25
|
if (found) {
|
|
25
26
|
components.push({ name: found.getName(), type: found.getType() });
|
|
26
27
|
values[found.getName()] = found.getValue();
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
else if (c instanceof nodes_1.StructureNode && ctyp instanceof Structures.Constants) {
|
|
30
|
-
const { type: found, values: val } = new Constants().runSyntax(c,
|
|
31
|
+
const { type: found, values: val } = new Constants().runSyntax(c, input);
|
|
31
32
|
if (found) {
|
|
32
33
|
components.push({ name: found.getName(), type: found.getType() });
|
|
33
34
|
values[found.getName()] = val;
|
|
@@ -37,7 +38,7 @@ class Constants {
|
|
|
37
38
|
if (components.length === 0) {
|
|
38
39
|
return { type: undefined, values };
|
|
39
40
|
}
|
|
40
|
-
const type = new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components), ["read_only" /* IdentifierMeta.ReadOnly */, "static" /* IdentifierMeta.Static */]);
|
|
41
|
+
const type = new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.StructureType(components), ["read_only" /* IdentifierMeta.ReadOnly */, "static" /* IdentifierMeta.Static */]);
|
|
41
42
|
return { type, values };
|
|
42
43
|
}
|
|
43
44
|
}
|
|
@@ -9,8 +9,9 @@ const _typed_identifier_1 = require("../../types/_typed_identifier");
|
|
|
9
9
|
const Basic = require("../../types/basic");
|
|
10
10
|
const data_1 = require("../statements/data");
|
|
11
11
|
const _reference_1 = require("../_reference");
|
|
12
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
12
13
|
class Data {
|
|
13
|
-
runSyntax(node,
|
|
14
|
+
runSyntax(node, input) {
|
|
14
15
|
var _a;
|
|
15
16
|
const name = node.findFirstExpression(Expressions.DefinitionName).getFirstToken();
|
|
16
17
|
let table = false;
|
|
@@ -19,7 +20,7 @@ class Data {
|
|
|
19
20
|
for (const c of node.getChildren()) {
|
|
20
21
|
const ctyp = c.get();
|
|
21
22
|
if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.Data) {
|
|
22
|
-
const found = new data_1.Data().runSyntax(c,
|
|
23
|
+
const found = new data_1.Data().runSyntax(c, input);
|
|
23
24
|
if (found) {
|
|
24
25
|
components.push({ name: found.getName(), type: found.getType() });
|
|
25
26
|
if (found.getValue() !== undefined) {
|
|
@@ -28,7 +29,7 @@ class Data {
|
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
else if (c instanceof nodes_1.StructureNode && ctyp instanceof Structures.Data) {
|
|
31
|
-
const found = new Data().runSyntax(c,
|
|
32
|
+
const found = new Data().runSyntax(c, input);
|
|
32
33
|
if (found) {
|
|
33
34
|
components.push({ name: found.getName(), type: found.getType() });
|
|
34
35
|
}
|
|
@@ -42,13 +43,13 @@ class Data {
|
|
|
42
43
|
// INCLUDES
|
|
43
44
|
const typeToken = (_a = c.findFirstExpression(Expressions.TypeName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
|
|
44
45
|
const typeName = typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr();
|
|
45
|
-
let foundId = scope.findType(typeName);
|
|
46
|
+
let foundId = input.scope.findType(typeName);
|
|
46
47
|
if (foundId === undefined) {
|
|
47
|
-
foundId = scope.findVariable(typeName);
|
|
48
|
+
foundId = input.scope.findVariable(typeName);
|
|
48
49
|
}
|
|
49
50
|
let found = foundId === null || foundId === void 0 ? void 0 : foundId.getType();
|
|
50
51
|
if (found === undefined) {
|
|
51
|
-
const f = scope.getDDIC().lookupTableOrView(typeName).type;
|
|
52
|
+
const f = input.scope.getDDIC().lookupTableOrView(typeName).type;
|
|
52
53
|
if (f instanceof _typed_identifier_1.TypedIdentifier) {
|
|
53
54
|
found = f.getType();
|
|
54
55
|
}
|
|
@@ -57,21 +58,24 @@ class Data {
|
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
else {
|
|
60
|
-
scope.addReference(typeToken, foundId, _reference_1.ReferenceType.TypeReference, filename);
|
|
61
|
+
input.scope.addReference(typeToken, foundId, _reference_1.ReferenceType.TypeReference, input.filename);
|
|
61
62
|
}
|
|
62
63
|
if (found instanceof Basic.VoidType) {
|
|
63
64
|
if (table === true) {
|
|
64
|
-
|
|
65
|
+
const ttyp = new Basic.TableType(found, { withHeader: true, keyType: Basic.TableKeyType.default });
|
|
66
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, ttyp);
|
|
65
67
|
}
|
|
66
68
|
else {
|
|
67
|
-
return new _typed_identifier_1.TypedIdentifier(name, filename, found);
|
|
69
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, found);
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
if (found instanceof Basic.UnknownType) {
|
|
71
|
-
return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.UnknownType("unknown type, " + typeName));
|
|
73
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.UnknownType("unknown type, " + typeName));
|
|
72
74
|
}
|
|
73
75
|
if (!(found instanceof Basic.StructureType)) {
|
|
74
|
-
|
|
76
|
+
const message = "not structured, " + typeName;
|
|
77
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
78
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.VoidType(_syntax_input_1.CheckSyntaxKey));
|
|
75
79
|
}
|
|
76
80
|
for (const c of found.getComponents()) {
|
|
77
81
|
components.push(c);
|
|
@@ -79,11 +83,11 @@ class Data {
|
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
85
|
if (table === true) {
|
|
82
|
-
return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.TableType(new Basic.StructureType(components), { withHeader: true, keyType: Basic.TableKeyType.default }));
|
|
86
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.TableType(new Basic.StructureType(components), { withHeader: true, keyType: Basic.TableKeyType.default }));
|
|
83
87
|
}
|
|
84
88
|
else {
|
|
85
89
|
const val = Object.keys(values).length > 0 ? values : undefined;
|
|
86
|
-
return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components), undefined, val);
|
|
90
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, new Basic.StructureType(components), undefined, val);
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
93
|
}
|