@abaplint/core 2.111.0 → 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 +8 -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 +52 -64
- 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
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SourceField = void 0;
|
|
4
|
+
const basic_1 = require("../../types/basic");
|
|
4
5
|
const _reference_1 = require("../_reference");
|
|
6
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
5
7
|
class SourceField {
|
|
6
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input, type, error = true) {
|
|
7
9
|
const token = node.getFirstToken();
|
|
8
10
|
const name = token.getStr();
|
|
9
|
-
const found = scope.findVariable(name);
|
|
11
|
+
const found = input.scope.findVariable(name);
|
|
10
12
|
if (found === undefined) {
|
|
11
|
-
|
|
13
|
+
const message = "\"" + name + "\" not found, findTop";
|
|
14
|
+
if (error === true) {
|
|
15
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
16
|
+
}
|
|
17
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
12
18
|
}
|
|
13
19
|
if (type) {
|
|
14
|
-
scope.addReference(token, found, type, filename);
|
|
20
|
+
input.scope.addReference(token, found, type, input.filename);
|
|
15
21
|
}
|
|
16
22
|
if (name.includes("~")) {
|
|
17
|
-
const idef = scope.findInterfaceDefinition(name.split("~")[0]);
|
|
23
|
+
const idef = input.scope.findInterfaceDefinition(name.split("~")[0]);
|
|
18
24
|
if (idef) {
|
|
19
|
-
scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
25
|
+
input.scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
28
|
return found.getType();
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SourceFieldSymbol = void 0;
|
|
4
|
+
const basic_1 = require("../../types/basic");
|
|
4
5
|
const _reference_1 = require("../_reference");
|
|
6
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
5
7
|
class SourceFieldSymbol {
|
|
6
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
7
9
|
const token = node.getFirstToken();
|
|
8
|
-
const found = scope.findVariable(token.getStr());
|
|
10
|
+
const found = input.scope.findVariable(token.getStr());
|
|
9
11
|
if (found === undefined) {
|
|
10
|
-
|
|
12
|
+
const message = "\"" + node.getFirstToken().getStr() + "\" not found, SourceFieldSymbol";
|
|
13
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
14
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
11
15
|
}
|
|
12
|
-
scope.addReference(token, found, _reference_1.ReferenceType.DataReadReference, filename);
|
|
16
|
+
input.scope.addReference(token, found, _reference_1.ReferenceType.DataReadReference, input.filename);
|
|
13
17
|
return found.getType();
|
|
14
18
|
}
|
|
15
19
|
}
|
|
@@ -6,45 +6,37 @@ const nodes_1 = require("../../nodes");
|
|
|
6
6
|
const basic_1 = require("../../types/basic");
|
|
7
7
|
const dynamic_1 = require("./dynamic");
|
|
8
8
|
const source_1 = require("./source");
|
|
9
|
+
const sql_in_1 = require("./sql_in");
|
|
9
10
|
const sql_source_1 = require("./sql_source");
|
|
10
11
|
class SQLCompare {
|
|
11
|
-
runSyntax(node,
|
|
12
|
+
runSyntax(node, input, tables) {
|
|
12
13
|
var _a, _b;
|
|
13
14
|
let sourceType;
|
|
14
15
|
let token;
|
|
15
16
|
if (((_a = node.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Dynamic) {
|
|
16
|
-
new dynamic_1.Dynamic().runSyntax(node.getFirstChild(),
|
|
17
|
+
new dynamic_1.Dynamic().runSyntax(node.getFirstChild(), input);
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
|
-
for (const s of node.
|
|
20
|
-
new source_1.Source().runSyntax(s,
|
|
20
|
+
for (const s of node.findDirectExpressions(Expressions.SimpleSource3)) {
|
|
21
|
+
new source_1.Source().runSyntax(s, input);
|
|
21
22
|
}
|
|
22
|
-
for (const s of node.
|
|
23
|
+
for (const s of node.findDirectExpressions(Expressions.SQLSource)) {
|
|
23
24
|
for (const child of s.getChildren()) {
|
|
24
25
|
if (child instanceof nodes_1.ExpressionNode) {
|
|
25
26
|
token = child.getFirstToken();
|
|
26
27
|
break;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
sourceType = new sql_source_1.SQLSource().runSyntax(s,
|
|
30
|
+
sourceType = new sql_source_1.SQLSource().runSyntax(s, input);
|
|
30
31
|
}
|
|
31
32
|
const sqlin = node.findDirectExpression(Expressions.SQLIn);
|
|
32
|
-
if (sqlin
|
|
33
|
-
|
|
34
|
-
if (insource) {
|
|
35
|
-
const intype = new sql_source_1.SQLSource().runSyntax(insource, scope, filename);
|
|
36
|
-
if (intype &&
|
|
37
|
-
!(intype instanceof basic_1.VoidType) &&
|
|
38
|
-
!(intype instanceof basic_1.UnknownType) &&
|
|
39
|
-
!(intype instanceof basic_1.TableType)) {
|
|
40
|
-
throw new Error("IN, not a table");
|
|
41
|
-
}
|
|
42
|
-
}
|
|
33
|
+
if (sqlin) {
|
|
34
|
+
new sql_in_1.SQLIn().runSyntax(sqlin, input);
|
|
43
35
|
}
|
|
44
36
|
const fieldName = (_b = node.findDirectExpression(Expressions.SQLFieldName)) === null || _b === void 0 ? void 0 : _b.concatTokens();
|
|
45
37
|
if (fieldName && sourceType && token) {
|
|
46
38
|
// check compatibility for rule sql_value_conversion
|
|
47
|
-
const targetType = this.findType(fieldName, tables, scope);
|
|
39
|
+
const targetType = this.findType(fieldName, tables, input.scope);
|
|
48
40
|
let message = "";
|
|
49
41
|
if (sourceType instanceof basic_1.IntegerType
|
|
50
42
|
&& targetType instanceof basic_1.CharacterType) {
|
|
@@ -73,7 +65,7 @@ class SQLCompare {
|
|
|
73
65
|
message = "Source field longer than database field, NUMC -> NUMC";
|
|
74
66
|
}
|
|
75
67
|
if (message !== "") {
|
|
76
|
-
scope.addSQLConversion(fieldName, message, token);
|
|
68
|
+
input.scope.addSQLConversion(fieldName, message, token);
|
|
77
69
|
}
|
|
78
70
|
}
|
|
79
71
|
}
|
|
@@ -4,22 +4,25 @@ exports.SQLForAllEntries = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
const basic_1 = require("../../types/basic");
|
|
7
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
7
8
|
class SQLForAllEntries {
|
|
8
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input) {
|
|
9
10
|
let s = node.findFirstExpression(Expressions.Source);
|
|
10
11
|
if (s === undefined) {
|
|
11
12
|
s = node.findFirstExpression(Expressions.SimpleSource3);
|
|
12
13
|
}
|
|
13
14
|
if (s) {
|
|
14
|
-
const type = new source_1.Source().runSyntax(s,
|
|
15
|
+
const type = new source_1.Source().runSyntax(s, input);
|
|
15
16
|
if (type instanceof basic_1.VoidType) {
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
18
19
|
if (!(type instanceof basic_1.TableType)) {
|
|
19
|
-
|
|
20
|
+
const message = "FAE parameter must be table type";
|
|
21
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
22
|
+
return;
|
|
20
23
|
}
|
|
21
24
|
const name = s.concatTokens().replace("[]", "");
|
|
22
|
-
scope.setAllowHeaderUse(name);
|
|
25
|
+
input.scope.setAllowHeaderUse(name);
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
}
|
|
@@ -5,16 +5,16 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const dynamic_1 = require("./dynamic");
|
|
6
6
|
const database_table_1 = require("./database_table");
|
|
7
7
|
class SQLFrom {
|
|
8
|
-
runSyntax(node,
|
|
8
|
+
runSyntax(node, input) {
|
|
9
9
|
const ret = [];
|
|
10
10
|
const fromList = node.findAllExpressions(Expressions.SQLFromSource);
|
|
11
11
|
for (const from of fromList) {
|
|
12
12
|
for (const d of from.findAllExpressions(Expressions.Dynamic)) {
|
|
13
|
-
new dynamic_1.Dynamic().runSyntax(d,
|
|
13
|
+
new dynamic_1.Dynamic().runSyntax(d, input);
|
|
14
14
|
}
|
|
15
15
|
const dbtab = from.findFirstExpression(Expressions.DatabaseTable);
|
|
16
16
|
if (dbtab !== undefined) {
|
|
17
|
-
ret.push(new database_table_1.DatabaseTable().runSyntax(dbtab,
|
|
17
|
+
ret.push(new database_table_1.DatabaseTable().runSyntax(dbtab, input));
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
return ret;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLIn = void 0;
|
|
4
|
+
const Expressions = require("../../2_statements/expressions");
|
|
5
|
+
const basic_1 = require("../../types/basic");
|
|
6
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
7
|
+
const sql_source_1 = require("./sql_source");
|
|
8
|
+
class SQLIn {
|
|
9
|
+
runSyntax(node, input) {
|
|
10
|
+
if (node.getChildren().length === 2) {
|
|
11
|
+
const insource = node.findFirstExpression(Expressions.SQLSource);
|
|
12
|
+
if (insource) {
|
|
13
|
+
const intype = new sql_source_1.SQLSource().runSyntax(insource, input);
|
|
14
|
+
if (intype &&
|
|
15
|
+
!(intype instanceof basic_1.VoidType) &&
|
|
16
|
+
!(intype instanceof basic_1.UnknownType) &&
|
|
17
|
+
!(intype instanceof basic_1.TableType)) {
|
|
18
|
+
const message = "IN, not a table";
|
|
19
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
for (const s of node.findDirectExpressions(Expressions.SQLSource)) {
|
|
26
|
+
new sql_source_1.SQLSource().runSyntax(s, input);
|
|
27
|
+
}
|
|
28
|
+
for (const s of node.findDirectExpressions(Expressions.SQLSourceNoSpace)) {
|
|
29
|
+
new sql_source_1.SQLSource().runSyntax(s, input);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.SQLIn = SQLIn;
|
|
34
|
+
//# sourceMappingURL=sql_in.js.map
|
|
@@ -4,10 +4,10 @@ exports.SQLOrderBy = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const dynamic_1 = require("./dynamic");
|
|
6
6
|
class SQLOrderBy {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input) {
|
|
8
8
|
const dyn = node.findDirectExpression(Expressions.Dynamic);
|
|
9
9
|
if (dyn) {
|
|
10
|
-
new dynamic_1.Dynamic().runSyntax(dyn,
|
|
10
|
+
new dynamic_1.Dynamic().runSyntax(dyn, input);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -4,12 +4,12 @@ exports.SQLSource = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
class SQLSource {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input) {
|
|
8
8
|
for (const s of node.findAllExpressions(Expressions.Source)) {
|
|
9
|
-
return new source_1.Source().runSyntax(s,
|
|
9
|
+
return new source_1.Source().runSyntax(s, input);
|
|
10
10
|
}
|
|
11
11
|
for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {
|
|
12
|
-
return new source_1.Source().runSyntax(s,
|
|
12
|
+
return new source_1.Source().runSyntax(s, input);
|
|
13
13
|
}
|
|
14
14
|
return undefined;
|
|
15
15
|
}
|
|
@@ -5,26 +5,32 @@ const basic_1 = require("../../types/basic");
|
|
|
5
5
|
const Expressions = require("../../2_statements/expressions");
|
|
6
6
|
const source_1 = require("./source");
|
|
7
7
|
const _type_utils_1 = require("../_type_utils");
|
|
8
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
8
9
|
class StringTemplate {
|
|
9
|
-
runSyntax(node,
|
|
10
|
-
const typeUtils = new _type_utils_1.TypeUtils(scope);
|
|
10
|
+
runSyntax(node, input) {
|
|
11
|
+
const typeUtils = new _type_utils_1.TypeUtils(input.scope);
|
|
11
12
|
const ret = basic_1.StringType.get();
|
|
12
13
|
for (const templateSource of node.findAllExpressions(Expressions.StringTemplateSource)) {
|
|
13
14
|
const s = templateSource.findDirectExpression(Expressions.Source);
|
|
14
|
-
const type = new source_1.Source().runSyntax(s,
|
|
15
|
+
const type = new source_1.Source().runSyntax(s, input, ret);
|
|
15
16
|
if (type === undefined) {
|
|
16
|
-
|
|
17
|
+
const message = "No target type determined";
|
|
18
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
19
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
17
20
|
}
|
|
18
21
|
else if ((typeUtils.isCharLike(type) === false && typeUtils.isHexLike(type) === false)
|
|
19
22
|
|| type instanceof basic_1.StructureType) {
|
|
20
|
-
|
|
23
|
+
const message = "String template, not character like, " + type.constructor.name;
|
|
24
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
25
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
21
26
|
}
|
|
22
27
|
const format = templateSource.findDirectExpression(Expressions.StringTemplateFormatting);
|
|
23
28
|
const formatConcat = format === null || format === void 0 ? void 0 : format.concatTokens();
|
|
24
29
|
for (const formatSource of (format === null || format === void 0 ? void 0 : format.findAllExpressions(Expressions.Source)) || []) {
|
|
25
|
-
new source_1.Source().runSyntax(formatSource,
|
|
30
|
+
new source_1.Source().runSyntax(formatSource, input);
|
|
26
31
|
}
|
|
27
|
-
if (
|
|
32
|
+
if (format
|
|
33
|
+
&& (formatConcat === null || formatConcat === void 0 ? void 0 : formatConcat.includes("ALPHA = "))
|
|
28
34
|
&& !(type instanceof basic_1.UnknownType)
|
|
29
35
|
&& !(type instanceof basic_1.VoidType)
|
|
30
36
|
&& !(type instanceof basic_1.StringType)
|
|
@@ -33,7 +39,9 @@ class StringTemplate {
|
|
|
33
39
|
&& !(type instanceof basic_1.NumericGenericType)
|
|
34
40
|
&& !(type instanceof basic_1.NumericType)
|
|
35
41
|
&& !(type instanceof basic_1.AnyType)) {
|
|
36
|
-
|
|
42
|
+
const message = "Cannot apply ALPHA to this type";
|
|
43
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, format.getFirstToken(), message));
|
|
44
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
37
45
|
}
|
|
38
46
|
}
|
|
39
47
|
return ret;
|
|
@@ -3,21 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SwitchBody = void 0;
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
7
|
+
const basic_1 = require("../../types/basic");
|
|
6
8
|
class SwitchBody {
|
|
7
|
-
runSyntax(node,
|
|
9
|
+
runSyntax(node, input) {
|
|
8
10
|
if (node === undefined) {
|
|
9
11
|
return;
|
|
10
12
|
}
|
|
11
13
|
const thenSource = node.findExpressionAfterToken("THEN");
|
|
12
14
|
if (!((thenSource === null || thenSource === void 0 ? void 0 : thenSource.get()) instanceof Expressions.Source)) {
|
|
13
|
-
|
|
15
|
+
const message = "SwitchBody, unexpected";
|
|
16
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
17
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
14
18
|
}
|
|
15
|
-
const type = new source_1.Source().runSyntax(thenSource,
|
|
19
|
+
const type = new source_1.Source().runSyntax(thenSource, input);
|
|
16
20
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
17
21
|
if (s === thenSource) {
|
|
18
22
|
continue;
|
|
19
23
|
}
|
|
20
|
-
new source_1.Source().runSyntax(s,
|
|
24
|
+
new source_1.Source().runSyntax(s, input);
|
|
21
25
|
}
|
|
22
26
|
return type;
|
|
23
27
|
}
|
|
@@ -4,12 +4,12 @@ exports.TableExpression = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
class TableExpression {
|
|
7
|
-
runSyntax(node,
|
|
7
|
+
runSyntax(node, input) {
|
|
8
8
|
if (node === undefined) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
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
|
}
|
|
15
15
|
}
|
|
@@ -14,14 +14,15 @@ const table_expression_1 = require("./table_expression");
|
|
|
14
14
|
const expressions_1 = require("../../2_statements/expressions");
|
|
15
15
|
const field_length_1 = require("./field_length");
|
|
16
16
|
const cast_1 = require("./cast");
|
|
17
|
+
const _syntax_input_1 = require("../_syntax_input");
|
|
17
18
|
class Target {
|
|
18
|
-
runSyntax(node,
|
|
19
|
+
runSyntax(node, input) {
|
|
19
20
|
const concat = node.concatTokens();
|
|
20
21
|
if (concat.includes("-")) {
|
|
21
22
|
// workaround for names with dashes
|
|
22
|
-
const found = scope.findVariable(concat);
|
|
23
|
+
const found = input.scope.findVariable(concat);
|
|
23
24
|
if (found) {
|
|
24
|
-
scope.addReference(node.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, filename);
|
|
25
|
+
input.scope.addReference(node.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, input.filename);
|
|
25
26
|
return found.getType();
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -30,9 +31,11 @@ class Target {
|
|
|
30
31
|
if (first === undefined || !(first instanceof nodes_1.ExpressionNode)) {
|
|
31
32
|
return undefined;
|
|
32
33
|
}
|
|
33
|
-
let context = this.findTop(first,
|
|
34
|
+
let context = this.findTop(first, input);
|
|
34
35
|
if (context === undefined) {
|
|
35
|
-
|
|
36
|
+
const message = `"${first.getFirstToken().getStr()}" not found, Target`;
|
|
37
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
38
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
36
39
|
}
|
|
37
40
|
while (children.length > 0) {
|
|
38
41
|
const current = children.shift();
|
|
@@ -41,39 +44,49 @@ class Target {
|
|
|
41
44
|
}
|
|
42
45
|
if (current.get() instanceof tokens_1.Dash) {
|
|
43
46
|
if (context instanceof unknown_type_1.UnknownType) {
|
|
44
|
-
|
|
47
|
+
const message = "Not a structure, type unknown, target";
|
|
48
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
49
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
45
50
|
}
|
|
46
51
|
else if (!(context instanceof basic_1.StructureType)
|
|
47
52
|
&& !(context instanceof basic_1.TableType && context.isWithHeader() && context.getRowType() instanceof basic_1.StructureType)
|
|
48
53
|
&& !(context instanceof basic_1.TableType && context.isWithHeader() && context.getRowType() instanceof basic_1.VoidType)
|
|
49
54
|
&& !(context instanceof basic_1.VoidType)) {
|
|
50
|
-
|
|
55
|
+
const message = "Not a structure, target";
|
|
56
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
57
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
51
58
|
}
|
|
52
59
|
}
|
|
53
60
|
else if (current.get() instanceof tokens_1.InstanceArrow) {
|
|
54
61
|
if (!(context instanceof basic_1.ObjectReferenceType)
|
|
55
62
|
&& !(context instanceof basic_1.DataReference)
|
|
56
63
|
&& !(context instanceof basic_1.VoidType)) {
|
|
57
|
-
|
|
64
|
+
const message = "Not an object reference, target";
|
|
65
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
66
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
58
67
|
}
|
|
59
68
|
}
|
|
60
69
|
else if (current.get() instanceof expressions_1.Dereference) {
|
|
61
70
|
if (!(context instanceof basic_1.DataReference) && !(context instanceof basic_1.VoidType)) {
|
|
62
|
-
|
|
71
|
+
const message = "Not an object reference, target";
|
|
72
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
73
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
63
74
|
}
|
|
64
75
|
if (!(context instanceof basic_1.VoidType)) {
|
|
65
76
|
context = context.getType();
|
|
66
77
|
}
|
|
67
78
|
}
|
|
68
79
|
else if (current.get() instanceof Expressions.ComponentName) {
|
|
69
|
-
context = new component_name_1.ComponentName().runSyntax(context, current);
|
|
80
|
+
context = new component_name_1.ComponentName().runSyntax(context, current, input);
|
|
70
81
|
}
|
|
71
82
|
else if (current.get() instanceof Expressions.TableBody) {
|
|
72
83
|
if (!(context instanceof basic_1.TableType)
|
|
73
84
|
&& !(context instanceof basic_1.VoidType)
|
|
74
85
|
&& !(context instanceof unknown_type_1.UnknownType)
|
|
75
86
|
&& !(context instanceof unknown_type_1.UnknownType)) {
|
|
76
|
-
|
|
87
|
+
const message = "Not a internal table, \"[]\"";
|
|
88
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
89
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
77
90
|
}
|
|
78
91
|
if (context instanceof basic_1.TableType && context.isWithHeader()) {
|
|
79
92
|
context = new basic_1.TableType(context.getRowType(), Object.assign(Object.assign({}, context.getOptions()), { withHeader: false }));
|
|
@@ -82,36 +95,42 @@ class Target {
|
|
|
82
95
|
else if (current instanceof nodes_1.ExpressionNode
|
|
83
96
|
&& current.get() instanceof Expressions.TableExpression) {
|
|
84
97
|
if (!(context instanceof basic_1.TableType) && !(context instanceof basic_1.VoidType)) {
|
|
85
|
-
|
|
98
|
+
const message = "Table expression, expected table";
|
|
99
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
100
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
86
101
|
}
|
|
87
|
-
new table_expression_1.TableExpression().runSyntax(current,
|
|
102
|
+
new table_expression_1.TableExpression().runSyntax(current, input);
|
|
88
103
|
if (!(context instanceof basic_1.VoidType)) {
|
|
89
104
|
context = context.getRowType();
|
|
90
105
|
}
|
|
91
106
|
}
|
|
92
107
|
else if (current.get() instanceof Expressions.AttributeName) {
|
|
93
108
|
const type = children.length === 0 ? _reference_1.ReferenceType.DataWriteReference : _reference_1.ReferenceType.DataReadReference;
|
|
94
|
-
context = new attribute_name_1.AttributeName().runSyntax(context, current,
|
|
109
|
+
context = new attribute_name_1.AttributeName().runSyntax(context, current, input, type);
|
|
95
110
|
}
|
|
96
111
|
}
|
|
97
112
|
const offset = node.findDirectExpression(Expressions.FieldOffset);
|
|
98
113
|
if (offset) {
|
|
99
114
|
if (context instanceof basic_1.XStringType || context instanceof basic_1.StringType) {
|
|
100
|
-
|
|
115
|
+
const message = "xstring/string offset/length in writer position not possible";
|
|
116
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
117
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
101
118
|
}
|
|
102
|
-
new field_offset_1.FieldOffset().runSyntax(offset,
|
|
119
|
+
new field_offset_1.FieldOffset().runSyntax(offset, input);
|
|
103
120
|
}
|
|
104
121
|
const length = node.findDirectExpression(Expressions.FieldLength);
|
|
105
122
|
if (length) {
|
|
106
123
|
if (context instanceof basic_1.XStringType || context instanceof basic_1.StringType) {
|
|
107
|
-
|
|
124
|
+
const message = "xstring/string offset/length in writer position not possible";
|
|
125
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
126
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
108
127
|
}
|
|
109
|
-
new field_length_1.FieldLength().runSyntax(length,
|
|
128
|
+
new field_length_1.FieldLength().runSyntax(length, input);
|
|
110
129
|
}
|
|
111
130
|
return context;
|
|
112
131
|
}
|
|
113
132
|
/////////////////////////////////
|
|
114
|
-
findTop(node,
|
|
133
|
+
findTop(node, input) {
|
|
115
134
|
if (node === undefined) {
|
|
116
135
|
return undefined;
|
|
117
136
|
}
|
|
@@ -119,26 +138,26 @@ class Target {
|
|
|
119
138
|
const name = token.getStr();
|
|
120
139
|
if (node.get() instanceof Expressions.TargetField
|
|
121
140
|
|| node.get() instanceof Expressions.TargetFieldSymbol) {
|
|
122
|
-
const found = scope.findVariable(name);
|
|
141
|
+
const found = input.scope.findVariable(name);
|
|
123
142
|
if (found) {
|
|
124
|
-
scope.addReference(token, found, _reference_1.ReferenceType.DataWriteReference, filename);
|
|
143
|
+
input.scope.addReference(token, found, _reference_1.ReferenceType.DataWriteReference, input.filename);
|
|
125
144
|
}
|
|
126
145
|
if (name.includes("~")) {
|
|
127
|
-
const idef = scope.findInterfaceDefinition(name.split("~")[0]);
|
|
146
|
+
const idef = input.scope.findInterfaceDefinition(name.split("~")[0]);
|
|
128
147
|
if (idef) {
|
|
129
|
-
scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
148
|
+
input.scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
130
149
|
}
|
|
131
150
|
}
|
|
132
151
|
return found === null || found === void 0 ? void 0 : found.getType();
|
|
133
152
|
}
|
|
134
153
|
else if (node.get() instanceof Expressions.ClassName) {
|
|
135
|
-
const found = scope.findObjectDefinition(name);
|
|
154
|
+
const found = input.scope.findObjectDefinition(name);
|
|
136
155
|
if (found) {
|
|
137
|
-
scope.addReference(token, found, _reference_1.ReferenceType.ObjectOrientedReference, filename);
|
|
156
|
+
input.scope.addReference(token, found, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
138
157
|
return new basic_1.ObjectReferenceType(found);
|
|
139
158
|
}
|
|
140
|
-
else if (scope.getDDIC().inErrorNamespace(name) === false) {
|
|
141
|
-
scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, { ooName: name, ooType: "CLAS" });
|
|
159
|
+
else if (input.scope.getDDIC().inErrorNamespace(name) === false) {
|
|
160
|
+
input.scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, input.filename, { ooName: name, ooType: "CLAS" });
|
|
142
161
|
return new basic_1.VoidType(name);
|
|
143
162
|
}
|
|
144
163
|
else {
|
|
@@ -146,9 +165,11 @@ class Target {
|
|
|
146
165
|
}
|
|
147
166
|
}
|
|
148
167
|
else if (node.get() instanceof Expressions.Cast && node instanceof nodes_1.ExpressionNode) {
|
|
149
|
-
const ret = new cast_1.Cast().runSyntax(node,
|
|
168
|
+
const ret = new cast_1.Cast().runSyntax(node, input, undefined);
|
|
150
169
|
if (ret instanceof unknown_type_1.UnknownType) {
|
|
151
|
-
|
|
170
|
+
const message = "CAST, uknown type";
|
|
171
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
172
|
+
return new basic_1.VoidType(_syntax_input_1.CheckSyntaxKey);
|
|
152
173
|
}
|
|
153
174
|
return ret;
|
|
154
175
|
}
|
|
@@ -8,7 +8,7 @@ const basic_1 = require("../../types/basic");
|
|
|
8
8
|
const _scope_type_1 = require("../_scope_type");
|
|
9
9
|
const type_table_key_1 = require("./type_table_key");
|
|
10
10
|
class TypeTable {
|
|
11
|
-
runSyntax(node,
|
|
11
|
+
runSyntax(node, input, qualifiedNamePrefix) {
|
|
12
12
|
// todo, input is currently the statement, but should be the expression?
|
|
13
13
|
let nameExpr = node.findFirstExpression(Expressions.DefinitionName);
|
|
14
14
|
if (nameExpr === undefined) {
|
|
@@ -21,14 +21,14 @@ class TypeTable {
|
|
|
21
21
|
let qualifiedName = qualifiedNamePrefix || "";
|
|
22
22
|
if (node.getFirstToken().getStr().toUpperCase() === "TYPES") {
|
|
23
23
|
qualifiedName = qualifiedName + name.getStr();
|
|
24
|
-
if (scope.getType() === _scope_type_1.ScopeType.ClassDefinition
|
|
25
|
-
|| scope.getType() === _scope_type_1.ScopeType.Interface) {
|
|
26
|
-
qualifiedName = scope.getName() + "=>" + qualifiedName;
|
|
24
|
+
if (input.scope.getType() === _scope_type_1.ScopeType.ClassDefinition
|
|
25
|
+
|| input.scope.getType() === _scope_type_1.ScopeType.Interface) {
|
|
26
|
+
qualifiedName = input.scope.getName() + "=>" + qualifiedName;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
let type = new basic_types_1.BasicTypes(
|
|
29
|
+
let type = new basic_types_1.BasicTypes(input).parseTable(node, qualifiedName);
|
|
30
30
|
if (type === undefined) {
|
|
31
|
-
return new _typed_identifier_1.TypedIdentifier(name, filename, new basic_1.UnknownType("TableType, fallback"));
|
|
31
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, new basic_1.UnknownType("TableType, fallback"));
|
|
32
32
|
}
|
|
33
33
|
for (const tt of node.findAllExpressions(Expressions.TypeTableKey)) {
|
|
34
34
|
const error = new type_table_key_1.TypeTableKey().runSyntax(tt, type);
|
|
@@ -36,7 +36,7 @@ class TypeTable {
|
|
|
36
36
|
type = error;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
return new _typed_identifier_1.TypedIdentifier(name, filename, type);
|
|
39
|
+
return new _typed_identifier_1.TypedIdentifier(name, input.filename, type);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
exports.TypeTable = TypeTable;
|