@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
|
@@ -8,17 +8,20 @@ const _object_oriented_1 = require("../_object_oriented");
|
|
|
8
8
|
const data_reference_type_1 = require("../../types/basic/data_reference_type");
|
|
9
9
|
const _reference_1 = require("../_reference");
|
|
10
10
|
const basic_1 = require("../../types/basic");
|
|
11
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
11
12
|
class AttributeName {
|
|
12
|
-
runSyntax(context, node,
|
|
13
|
+
runSyntax(context, node, input, type, error = true) {
|
|
13
14
|
if (context instanceof void_type_1.VoidType) {
|
|
14
15
|
return context;
|
|
15
16
|
}
|
|
16
|
-
const helper = new _object_oriented_1.ObjectOriented(scope);
|
|
17
|
+
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
17
18
|
let ret = undefined;
|
|
18
19
|
if (context instanceof object_reference_type_1.ObjectReferenceType) {
|
|
19
|
-
const def = scope.findObjectDefinition(context.getIdentifierName());
|
|
20
|
+
const def = input.scope.findObjectDefinition(context.getIdentifierName());
|
|
20
21
|
if (def === undefined) {
|
|
21
|
-
|
|
22
|
+
const message = "Definition for \"" + context.getIdentifierName() + "\" not found in scope(AttributeName)";
|
|
23
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
24
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
22
25
|
}
|
|
23
26
|
const token = node.getFirstToken();
|
|
24
27
|
const name = token.getStr();
|
|
@@ -27,15 +30,19 @@ class AttributeName {
|
|
|
27
30
|
found = helper.searchConstantName(def, name);
|
|
28
31
|
}
|
|
29
32
|
if (found === undefined) {
|
|
30
|
-
|
|
33
|
+
const message = "Attribute or constant \"" + name + "\" not found in \"" + def.getName() + "\"";
|
|
34
|
+
if (error === true) {
|
|
35
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
36
|
+
}
|
|
37
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
31
38
|
}
|
|
32
39
|
if (type) {
|
|
33
|
-
scope.addReference(token, found, type, filename);
|
|
40
|
+
input.scope.addReference(token, found, type, input.filename);
|
|
34
41
|
}
|
|
35
42
|
if (found && name.includes("~")) {
|
|
36
|
-
const idef = scope.findInterfaceDefinition(name.split("~")[0]);
|
|
43
|
+
const idef = input.scope.findInterfaceDefinition(name.split("~")[0]);
|
|
37
44
|
if (idef) {
|
|
38
|
-
scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
45
|
+
input.scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
39
46
|
}
|
|
40
47
|
}
|
|
41
48
|
ret = found.getType();
|
|
@@ -47,15 +54,21 @@ class AttributeName {
|
|
|
47
54
|
return sub;
|
|
48
55
|
}
|
|
49
56
|
if (!(sub instanceof structure_type_1.StructureType)) {
|
|
50
|
-
|
|
57
|
+
const message = "Data reference not structured";
|
|
58
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
59
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
51
60
|
}
|
|
52
61
|
ret = sub.getComponentByName(name);
|
|
53
62
|
if (ret === undefined) {
|
|
54
|
-
|
|
63
|
+
const message = "Component \"" + name + "\" not found in data reference structure";
|
|
64
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
65
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
55
66
|
}
|
|
56
67
|
}
|
|
57
68
|
else {
|
|
58
|
-
|
|
69
|
+
const message = "Not an object reference, attribute name";
|
|
70
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
71
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
59
72
|
}
|
|
60
73
|
return ret;
|
|
61
74
|
}
|
|
@@ -7,39 +7,46 @@ const source_1 = require("./source");
|
|
|
7
7
|
const _type_utils_1 = require("../_type_utils");
|
|
8
8
|
const basic_types_1 = require("../basic_types");
|
|
9
9
|
const _reference_1 = require("../_reference");
|
|
10
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
10
11
|
class Cast {
|
|
11
|
-
runSyntax(node,
|
|
12
|
+
runSyntax(node, input, targetType) {
|
|
12
13
|
const sourceNode = node.findDirectExpression(Expressions.Source);
|
|
13
14
|
if (sourceNode === undefined) {
|
|
14
|
-
|
|
15
|
+
const message = "Cast, source node not found";
|
|
16
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
17
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
15
18
|
}
|
|
16
|
-
const sourceType = new source_1.Source().runSyntax(sourceNode,
|
|
19
|
+
const sourceType = new source_1.Source().runSyntax(sourceNode, input);
|
|
17
20
|
let tt = undefined;
|
|
18
21
|
const typeExpression = node.findDirectExpression(Expressions.TypeNameOrInfer);
|
|
19
22
|
const typeName = typeExpression === null || typeExpression === void 0 ? void 0 : typeExpression.concatTokens();
|
|
20
23
|
if (typeName === undefined) {
|
|
21
|
-
|
|
24
|
+
const message = "Cast, child TypeNameOrInfer not found";
|
|
25
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
26
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
22
27
|
}
|
|
23
28
|
else if (typeName === "#" && targetType) {
|
|
24
29
|
tt = targetType;
|
|
25
30
|
}
|
|
26
31
|
else if (typeName === "#") {
|
|
27
|
-
|
|
32
|
+
const message = "Cast, todo, infer type";
|
|
33
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
34
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
28
35
|
}
|
|
29
36
|
if (tt === undefined && typeExpression) {
|
|
30
|
-
const basic = new basic_types_1.BasicTypes(
|
|
37
|
+
const basic = new basic_types_1.BasicTypes(input);
|
|
31
38
|
tt = basic.parseType(typeExpression);
|
|
32
39
|
if (tt === undefined || tt instanceof basic_1.VoidType || tt instanceof basic_1.UnknownType) {
|
|
33
|
-
const found = scope.findObjectDefinition(typeName);
|
|
40
|
+
const found = input.scope.findObjectDefinition(typeName);
|
|
34
41
|
if (found) {
|
|
35
42
|
tt = new basic_1.ObjectReferenceType(found, { qualifiedName: typeName });
|
|
36
|
-
scope.addReference(typeExpression.getFirstToken(), found, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
43
|
+
input.scope.addReference(typeExpression.getFirstToken(), found, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
else {
|
|
40
47
|
tt = new basic_1.DataReference(tt, typeName);
|
|
41
48
|
}
|
|
42
|
-
if (tt === undefined && scope.getDDIC().inErrorNamespace(typeName) === false) {
|
|
49
|
+
if (tt === undefined && input.scope.getDDIC().inErrorNamespace(typeName) === false) {
|
|
43
50
|
tt = new basic_1.VoidType(typeName);
|
|
44
51
|
}
|
|
45
52
|
else if (typeName.toUpperCase() === "OBJECT") {
|
|
@@ -47,12 +54,16 @@ class Cast {
|
|
|
47
54
|
}
|
|
48
55
|
else if (tt === undefined) {
|
|
49
56
|
// todo, this should be an UnknownType instead?
|
|
50
|
-
|
|
57
|
+
const message = "Type \"" + typeName + "\" not found in scope, Cast";
|
|
58
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
59
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
51
60
|
}
|
|
52
61
|
}
|
|
53
|
-
new source_1.Source().addIfInferred(node,
|
|
54
|
-
if (new _type_utils_1.TypeUtils(scope).isCastable(sourceType, tt) === false) {
|
|
55
|
-
|
|
62
|
+
new source_1.Source().addIfInferred(node, input, tt);
|
|
63
|
+
if (new _type_utils_1.TypeUtils(input.scope).isCastable(sourceType, tt) === false) {
|
|
64
|
+
const message = "Cast, incompatible types";
|
|
65
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
66
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
56
67
|
}
|
|
57
68
|
return tt;
|
|
58
69
|
}
|
|
@@ -6,15 +6,15 @@ const source_1 = require("./source");
|
|
|
6
6
|
const method_call_chain_1 = require("./method_call_chain");
|
|
7
7
|
const source_field_symbol_1 = require("./source_field_symbol");
|
|
8
8
|
class Compare {
|
|
9
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input) {
|
|
10
10
|
for (const t of node.findDirectExpressions(Expressions.Source)) {
|
|
11
|
-
new source_1.Source().runSyntax(t,
|
|
11
|
+
new source_1.Source().runSyntax(t, input);
|
|
12
12
|
}
|
|
13
13
|
for (const t of node.findDirectExpressions(Expressions.SourceFieldSymbol)) {
|
|
14
|
-
new source_field_symbol_1.SourceFieldSymbol().runSyntax(t,
|
|
14
|
+
new source_field_symbol_1.SourceFieldSymbol().runSyntax(t, input);
|
|
15
15
|
}
|
|
16
16
|
for (const t of node.findDirectExpressions(Expressions.MethodCallChain)) {
|
|
17
|
-
new method_call_chain_1.MethodCallChain().runSyntax(t,
|
|
17
|
+
new method_call_chain_1.MethodCallChain().runSyntax(t, input);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -8,8 +8,9 @@ const basic_1 = require("../../types/basic");
|
|
|
8
8
|
const types_1 = require("../../types");
|
|
9
9
|
const _reference_1 = require("../_reference");
|
|
10
10
|
const _object_oriented_1 = require("../_object_oriented");
|
|
11
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
11
12
|
class ComponentChain {
|
|
12
|
-
runSyntax(context, node,
|
|
13
|
+
runSyntax(context, node, input) {
|
|
13
14
|
if (context === undefined) {
|
|
14
15
|
return undefined;
|
|
15
16
|
}
|
|
@@ -26,17 +27,23 @@ class ComponentChain {
|
|
|
26
27
|
const concat = child.concatTokens();
|
|
27
28
|
if (concat === "-") {
|
|
28
29
|
if (!(context instanceof structure_type_1.StructureType)) {
|
|
29
|
-
|
|
30
|
+
const message = "ComponentChain, not a structure";
|
|
31
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
32
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
35
|
else if (concat === "=>") {
|
|
33
36
|
if (!(context instanceof basic_1.ObjectReferenceType)) {
|
|
34
|
-
|
|
37
|
+
const message = "ComponentChain, not a reference";
|
|
38
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
39
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
else if (concat === "->") {
|
|
38
43
|
if (!(context instanceof basic_1.ObjectReferenceType) && !(context instanceof basic_1.DataReference)) {
|
|
39
|
-
|
|
44
|
+
const message = "ComponentChain, not a reference";
|
|
45
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
46
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
}
|
|
@@ -51,31 +58,39 @@ class ComponentChain {
|
|
|
51
58
|
if (context instanceof structure_type_1.StructureType) {
|
|
52
59
|
context = context.getComponentByName(name);
|
|
53
60
|
if (context === undefined) {
|
|
54
|
-
|
|
61
|
+
const message = "Component \"" + name + "\" not found in structure";
|
|
62
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
63
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
55
64
|
}
|
|
56
65
|
}
|
|
57
66
|
else if (context instanceof basic_1.ObjectReferenceType) {
|
|
58
67
|
const id = context.getIdentifier();
|
|
59
|
-
const def = scope.findObjectDefinition(id.getName());
|
|
68
|
+
const def = input.scope.findObjectDefinition(id.getName());
|
|
60
69
|
if (def === undefined) {
|
|
61
|
-
|
|
70
|
+
const message = id.getName() + " not found in scope";
|
|
71
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
72
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
62
73
|
}
|
|
63
|
-
const helper = new _object_oriented_1.ObjectOriented(scope);
|
|
74
|
+
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
64
75
|
const found = helper.searchAttributeName(def, name);
|
|
65
76
|
context = found === null || found === void 0 ? void 0 : found.getType();
|
|
66
77
|
if (context === undefined) {
|
|
67
|
-
|
|
78
|
+
const message = "Attribute \"" + name + "\" not found";
|
|
79
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
80
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
68
81
|
}
|
|
69
82
|
else {
|
|
70
83
|
const extra = {
|
|
71
84
|
ooName: id.getName(),
|
|
72
85
|
ooType: id instanceof types_1.ClassDefinition ? "CLAS" : "INTF"
|
|
73
86
|
};
|
|
74
|
-
scope.addReference(child.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, filename, extra);
|
|
87
|
+
input.scope.addReference(child.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, input.filename, extra);
|
|
75
88
|
}
|
|
76
89
|
}
|
|
77
90
|
else {
|
|
78
|
-
|
|
91
|
+
const message = "ComponentChain, not a structure, " + (context === null || context === void 0 ? void 0 : context.constructor.name);
|
|
92
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
93
|
+
return new void_type_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
79
94
|
}
|
|
80
95
|
}
|
|
81
96
|
}
|
|
@@ -2,17 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ComponentCompare = void 0;
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
5
6
|
const component_chain_1 = require("./component_chain");
|
|
6
7
|
const source_1 = require("./source");
|
|
7
8
|
class ComponentCompare {
|
|
8
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input, type) {
|
|
9
10
|
const chain = node.findDirectExpression(Expressions.ComponentChainSimple);
|
|
10
11
|
if (chain === undefined) {
|
|
11
|
-
|
|
12
|
+
const message = "ComponentCompare, chain not found";
|
|
13
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
14
|
+
return;
|
|
12
15
|
}
|
|
13
|
-
new component_chain_1.ComponentChain().runSyntax(type, chain,
|
|
16
|
+
new component_chain_1.ComponentChain().runSyntax(type, chain, input);
|
|
14
17
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
15
|
-
new source_1.Source().runSyntax(s,
|
|
18
|
+
new source_1.Source().runSyntax(s, input);
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
}
|
|
@@ -3,28 +3,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ComponentCompareSimple = void 0;
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const nodes_1 = require("../../nodes");
|
|
6
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
6
7
|
const _type_utils_1 = require("../_type_utils");
|
|
7
8
|
const component_chain_1 = require("./component_chain");
|
|
8
9
|
const source_1 = require("./source");
|
|
9
10
|
class ComponentCompareSimple {
|
|
10
|
-
runSyntax(node,
|
|
11
|
+
runSyntax(node, input, rowType) {
|
|
11
12
|
let targetType = undefined;
|
|
12
13
|
for (const c of node.getChildren()) {
|
|
13
14
|
if (c instanceof nodes_1.ExpressionNode) {
|
|
14
15
|
if (c.get() instanceof Expressions.ComponentChainSimple) {
|
|
15
|
-
targetType = new component_chain_1.ComponentChain().runSyntax(rowType, c,
|
|
16
|
+
targetType = new component_chain_1.ComponentChain().runSyntax(rowType, c, input);
|
|
16
17
|
}
|
|
17
18
|
else if (c.get() instanceof Expressions.Dynamic) {
|
|
18
19
|
targetType = undefined;
|
|
19
20
|
}
|
|
20
21
|
else if (c.get() instanceof Expressions.Source) {
|
|
21
|
-
const sourceType = new source_1.Source().runSyntax(c,
|
|
22
|
-
if (targetType && new _type_utils_1.TypeUtils(scope).isAssignable(sourceType, targetType) === false) {
|
|
23
|
-
|
|
22
|
+
const sourceType = new source_1.Source().runSyntax(c, input, targetType);
|
|
23
|
+
if (targetType && new _type_utils_1.TypeUtils(input.scope).isAssignable(sourceType, targetType) === false) {
|
|
24
|
+
const message = "ComponentCompareSimple, incompatible types";
|
|
25
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
26
|
+
return;
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
29
|
else {
|
|
27
|
-
|
|
30
|
+
const message = "ComponentCompareSimple, unexpected node";
|
|
31
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
32
|
+
return;
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
}
|
|
@@ -4,15 +4,15 @@ exports.ComponentCond = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const component_compare_1 = require("./component_compare");
|
|
6
6
|
class ComponentCond {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input, type) {
|
|
8
8
|
for (const t of node.findDirectExpressions(Expressions.ComponentCondSub)) {
|
|
9
9
|
const c = t.findDirectExpression(Expressions.ComponentCond);
|
|
10
10
|
if (c) {
|
|
11
|
-
new ComponentCond().runSyntax(c,
|
|
11
|
+
new ComponentCond().runSyntax(c, input, type);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
for (const t of node.findDirectExpressions(Expressions.ComponentCompare)) {
|
|
15
|
-
new component_compare_1.ComponentCompare().runSyntax(t,
|
|
15
|
+
new component_compare_1.ComponentCompare().runSyntax(t, input, type);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -2,16 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ComponentName = void 0;
|
|
4
4
|
const Basic = require("../../types/basic");
|
|
5
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
5
6
|
class ComponentName {
|
|
6
|
-
runSyntax(context, node) {
|
|
7
|
+
runSyntax(context, node, input) {
|
|
7
8
|
if (context instanceof Basic.VoidType) {
|
|
8
9
|
return context;
|
|
9
10
|
}
|
|
10
|
-
const
|
|
11
|
+
const nameToken = node.getFirstToken();
|
|
12
|
+
const name = nameToken.getStr();
|
|
11
13
|
if (context instanceof Basic.StructureType) {
|
|
12
14
|
const ret = context.getComponentByName(name);
|
|
13
15
|
if (ret === undefined) {
|
|
14
|
-
|
|
16
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, "Component \"" + name + "\" not found in structure"));
|
|
17
|
+
return new Basic.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
15
18
|
}
|
|
16
19
|
return ret;
|
|
17
20
|
}
|
|
@@ -26,12 +29,14 @@ class ComponentName {
|
|
|
26
29
|
else if (rowType instanceof Basic.StructureType) {
|
|
27
30
|
const ret = rowType.getComponentByName(name);
|
|
28
31
|
if (ret === undefined) {
|
|
29
|
-
|
|
32
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, "Component \"" + name + "\" not found in structure"));
|
|
33
|
+
return new Basic.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
30
34
|
}
|
|
31
35
|
return ret;
|
|
32
36
|
}
|
|
33
37
|
}
|
|
34
|
-
|
|
38
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, "Not a structure, ComponentName, \"" + name + "\""));
|
|
39
|
+
return new Basic.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
exports.ComponentName = ComponentName;
|
|
@@ -4,18 +4,15 @@ exports.Cond = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const compare_1 = require("./compare");
|
|
6
6
|
class Cond {
|
|
7
|
-
runSyntax(node,
|
|
8
|
-
if (node === undefined) {
|
|
9
|
-
throw new Error("Cond, expected node input");
|
|
10
|
-
}
|
|
7
|
+
runSyntax(node, input) {
|
|
11
8
|
for (const t of node.findDirectExpressions(Expressions.CondSub)) {
|
|
12
9
|
const c = t.findDirectExpression(Expressions.Cond);
|
|
13
10
|
if (c) {
|
|
14
|
-
new Cond().runSyntax(c,
|
|
11
|
+
new Cond().runSyntax(c, input);
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
14
|
for (const t of node.findDirectExpressions(Expressions.Compare)) {
|
|
18
|
-
new compare_1.Compare().runSyntax(t,
|
|
15
|
+
new compare_1.Compare().runSyntax(t, input);
|
|
19
16
|
}
|
|
20
17
|
}
|
|
21
18
|
}
|
|
@@ -6,29 +6,29 @@ const source_1 = require("./source");
|
|
|
6
6
|
const let_1 = require("./let");
|
|
7
7
|
const cond_1 = require("./cond");
|
|
8
8
|
class CondBody {
|
|
9
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input) {
|
|
10
10
|
if (node === undefined) {
|
|
11
11
|
return undefined;
|
|
12
12
|
}
|
|
13
13
|
let scoped = false;
|
|
14
14
|
const l = node.findDirectExpression(Expressions.Let);
|
|
15
15
|
if (l) {
|
|
16
|
-
scoped = new let_1.Let().runSyntax(l,
|
|
16
|
+
scoped = new let_1.Let().runSyntax(l, input);
|
|
17
17
|
}
|
|
18
18
|
for (const s of node.findDirectExpressions(Expressions.Cond)) {
|
|
19
|
-
new cond_1.Cond().runSyntax(s,
|
|
19
|
+
new cond_1.Cond().runSyntax(s, input);
|
|
20
20
|
}
|
|
21
21
|
let type = undefined;
|
|
22
22
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
23
23
|
if (type === undefined) {
|
|
24
|
-
type = new source_1.Source().runSyntax(s,
|
|
24
|
+
type = new source_1.Source().runSyntax(s, input);
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
|
-
new source_1.Source().runSyntax(s,
|
|
27
|
+
new source_1.Source().runSyntax(s, input);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
if (scoped === true) {
|
|
31
|
-
scope.pop(node.getLastToken().getEnd());
|
|
31
|
+
input.scope.pop(node.getLastToken().getEnd());
|
|
32
32
|
}
|
|
33
33
|
return type;
|
|
34
34
|
}
|
|
@@ -4,23 +4,24 @@ exports.ConvBody = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
const let_1 = require("./let");
|
|
7
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
8
|
+
const basic_1 = require("../../types/basic");
|
|
7
9
|
class ConvBody {
|
|
8
|
-
runSyntax(node,
|
|
9
|
-
if (node === undefined) {
|
|
10
|
-
throw new Error("ConvBody, node undefined");
|
|
11
|
-
}
|
|
10
|
+
runSyntax(node, input) {
|
|
12
11
|
let scoped = false;
|
|
13
12
|
const l = node.findDirectExpression(Expressions.Let);
|
|
14
13
|
if (l) {
|
|
15
|
-
scoped = new let_1.Let().runSyntax(l,
|
|
14
|
+
scoped = new let_1.Let().runSyntax(l, input);
|
|
16
15
|
}
|
|
17
16
|
const s = node.findDirectExpression(Expressions.Source);
|
|
18
17
|
if (s === undefined) {
|
|
19
|
-
|
|
18
|
+
const message = "ConvBody, no source found";
|
|
19
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
20
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
20
21
|
}
|
|
21
|
-
const sourceType = new source_1.Source().runSyntax(s,
|
|
22
|
+
const sourceType = new source_1.Source().runSyntax(s, input);
|
|
22
23
|
if (scoped === true) {
|
|
23
|
-
scope.pop(node.getLastToken().getEnd());
|
|
24
|
+
input.scope.pop(node.getLastToken().getEnd());
|
|
24
25
|
}
|
|
25
26
|
return sourceType;
|
|
26
27
|
}
|
|
@@ -4,17 +4,17 @@ exports.CorrespondingBody = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
class CorrespondingBody {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input, targetType) {
|
|
8
8
|
if (node === undefined) {
|
|
9
9
|
return targetType;
|
|
10
10
|
}
|
|
11
11
|
let type = undefined;
|
|
12
12
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
13
13
|
if (type === undefined) {
|
|
14
|
-
type = new source_1.Source().runSyntax(s,
|
|
14
|
+
type = new source_1.Source().runSyntax(s, input);
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
new source_1.Source().runSyntax(s,
|
|
17
|
+
new source_1.Source().runSyntax(s, input);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
return targetType ? targetType : type;
|
|
@@ -7,25 +7,25 @@ const basic_1 = require("../../types/basic");
|
|
|
7
7
|
const basic_types_1 = require("../basic_types");
|
|
8
8
|
const type_table_1 = require("./type_table");
|
|
9
9
|
class DataDefinition {
|
|
10
|
-
runSyntax(node,
|
|
10
|
+
runSyntax(node, input) {
|
|
11
11
|
const tt = node.findFirstExpression(Expressions.TypeTable);
|
|
12
12
|
if (tt) {
|
|
13
|
-
return new type_table_1.TypeTable().runSyntax(node,
|
|
13
|
+
return new type_table_1.TypeTable().runSyntax(node, input);
|
|
14
14
|
}
|
|
15
15
|
const valueNode = node.findFirstExpression(Expressions.Value);
|
|
16
16
|
let value = undefined;
|
|
17
17
|
if (valueNode) {
|
|
18
|
-
value = new basic_types_1.BasicTypes(
|
|
18
|
+
value = new basic_types_1.BasicTypes(input).findValue(node);
|
|
19
19
|
}
|
|
20
20
|
const name = node.findFirstExpression(Expressions.DefinitionName);
|
|
21
21
|
const typeStructure = node.findFirstExpression(Expressions.TypeStructure);
|
|
22
22
|
if (typeStructure && name) {
|
|
23
|
-
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new basic_1.VoidType("DataDefinition, TypeStructure"));
|
|
23
|
+
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename, new basic_1.VoidType("DataDefinition, TypeStructure"));
|
|
24
24
|
}
|
|
25
|
-
const bfound = new basic_types_1.BasicTypes(
|
|
25
|
+
const bfound = new basic_types_1.BasicTypes(input).simpleType(node);
|
|
26
26
|
if (bfound) {
|
|
27
27
|
if (value) {
|
|
28
|
-
return new _typed_identifier_1.TypedIdentifier(bfound.getToken(), filename, bfound.getType(), bfound.getMeta(), value);
|
|
28
|
+
return new _typed_identifier_1.TypedIdentifier(bfound.getToken(), input.filename, bfound.getType(), bfound.getMeta(), value);
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
31
31
|
return bfound;
|
|
@@ -33,7 +33,7 @@ class DataDefinition {
|
|
|
33
33
|
}
|
|
34
34
|
if (name) {
|
|
35
35
|
console.dir("undef");
|
|
36
|
-
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new basic_1.UnknownType("DataDefinition, fallback"));
|
|
36
|
+
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename, new basic_1.UnknownType("DataDefinition, fallback"));
|
|
37
37
|
}
|
|
38
38
|
return undefined;
|
|
39
39
|
}
|
|
@@ -2,24 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DatabaseTable = void 0;
|
|
4
4
|
const _reference_1 = require("../_reference");
|
|
5
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
5
6
|
class DatabaseTable {
|
|
6
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input) {
|
|
7
8
|
const token = node.getFirstToken();
|
|
8
9
|
const name = token.getStr();
|
|
9
10
|
if (name === "(") {
|
|
10
11
|
// dynamic
|
|
11
12
|
return undefined;
|
|
12
13
|
}
|
|
13
|
-
const found = scope.getDDIC().lookupTableOrView2(name);
|
|
14
|
-
if (found === undefined && scope.getDDIC().inErrorNamespace(name) === true) {
|
|
15
|
-
|
|
14
|
+
const found = input.scope.getDDIC().lookupTableOrView2(name);
|
|
15
|
+
if (found === undefined && input.scope.getDDIC().inErrorNamespace(name) === true) {
|
|
16
|
+
const message = "Database table or view \"" + name + "\" not found";
|
|
17
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
16
18
|
}
|
|
17
19
|
else if (found === undefined) {
|
|
18
|
-
scope.addReference(token, undefined, _reference_1.ReferenceType.TableVoidReference, filename);
|
|
20
|
+
input.scope.addReference(token, undefined, _reference_1.ReferenceType.TableVoidReference, input.filename);
|
|
19
21
|
}
|
|
20
22
|
else {
|
|
21
|
-
scope.addReference(token, found.getIdentifier(), _reference_1.ReferenceType.TableReference, filename);
|
|
22
|
-
scope.getDDICReferences().addUsing(scope.getParentObj(), { object: found, token: token, filename: filename });
|
|
23
|
+
input.scope.addReference(token, found.getIdentifier(), _reference_1.ReferenceType.TableReference, input.filename);
|
|
24
|
+
input.scope.getDDICReferences().addUsing(input.scope.getParentObj(), { object: found, token: token, filename: input.filename });
|
|
23
25
|
}
|
|
24
26
|
return found;
|
|
25
27
|
}
|
|
@@ -6,10 +6,10 @@ const field_chain_1 = require("./field_chain");
|
|
|
6
6
|
const _reference_1 = require("../_reference");
|
|
7
7
|
const constant_1 = require("./constant");
|
|
8
8
|
class Default {
|
|
9
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input) {
|
|
10
10
|
const chain = node.findDirectExpression(Expressions.FieldChain);
|
|
11
11
|
if (chain) {
|
|
12
|
-
return new field_chain_1.FieldChain().runSyntax(chain,
|
|
12
|
+
return new field_chain_1.FieldChain().runSyntax(chain, input, _reference_1.ReferenceType.DataReadReference);
|
|
13
13
|
}
|
|
14
14
|
const constant = node.findDirectExpression(Expressions.Constant);
|
|
15
15
|
if (constant) {
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Dereference = void 0;
|
|
4
4
|
const basic_1 = require("../../types/basic");
|
|
5
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
5
6
|
class Dereference {
|
|
6
|
-
runSyntax(type) {
|
|
7
|
+
runSyntax(node, type, input) {
|
|
7
8
|
if (type instanceof basic_1.VoidType
|
|
8
9
|
|| type instanceof basic_1.AnyType
|
|
9
10
|
|| type instanceof basic_1.DataType
|
|
@@ -12,7 +13,9 @@ class Dereference {
|
|
|
12
13
|
return type;
|
|
13
14
|
}
|
|
14
15
|
if (!(type instanceof basic_1.DataReference)) {
|
|
15
|
-
|
|
16
|
+
const message = "Not a data reference, cannot be dereferenced";
|
|
17
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
18
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
16
19
|
}
|
|
17
20
|
return type.getType();
|
|
18
21
|
}
|
|
@@ -5,10 +5,10 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const field_chain_1 = require("./field_chain");
|
|
6
6
|
const _reference_1 = require("../_reference");
|
|
7
7
|
class Dynamic {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
const chain = node.findDirectExpression(Expressions.FieldChain);
|
|
10
10
|
if (chain) {
|
|
11
|
-
new field_chain_1.FieldChain().runSyntax(chain,
|
|
11
|
+
new field_chain_1.FieldChain().runSyntax(chain, input, _reference_1.ReferenceType.DataReadReference);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
}
|