@abaplint/core 2.113.125 → 2.113.127
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 +18 -3
- package/build/src/abap/5_syntax/_builtin.js +10 -10
- package/build/src/abap/5_syntax/_current_scope.js +13 -0
- package/build/src/abap/5_syntax/_procedural.js +2 -2
- package/build/src/abap/5_syntax/_type_utils.js +13 -7
- package/build/src/abap/5_syntax/basic_types.js +11 -11
- package/build/src/abap/5_syntax/expressions/attribute_chain.js +5 -5
- package/build/src/abap/5_syntax/expressions/attribute_name.js +6 -6
- package/build/src/abap/5_syntax/expressions/cast.js +9 -9
- package/build/src/abap/5_syntax/expressions/compare.js +4 -4
- package/build/src/abap/5_syntax/expressions/component_chain.js +8 -8
- package/build/src/abap/5_syntax/expressions/component_compare.js +3 -3
- package/build/src/abap/5_syntax/expressions/component_compare_simple.js +3 -3
- package/build/src/abap/5_syntax/expressions/component_cond.js +3 -3
- package/build/src/abap/5_syntax/expressions/component_name.js +4 -4
- package/build/src/abap/5_syntax/expressions/cond.js +3 -3
- package/build/src/abap/5_syntax/expressions/cond_body.js +5 -5
- package/build/src/abap/5_syntax/expressions/constant.js +1 -1
- package/build/src/abap/5_syntax/expressions/conv_body.js +4 -4
- package/build/src/abap/5_syntax/expressions/corresponding_body.js +3 -3
- package/build/src/abap/5_syntax/expressions/data_definition.js +3 -4
- package/build/src/abap/5_syntax/expressions/database_table.js +1 -1
- package/build/src/abap/5_syntax/expressions/default.js +3 -3
- package/build/src/abap/5_syntax/expressions/dereference.js +2 -2
- package/build/src/abap/5_syntax/expressions/dynamic.js +2 -2
- package/build/src/abap/5_syntax/expressions/field_assignment.js +2 -2
- package/build/src/abap/5_syntax/expressions/field_chain.js +19 -19
- package/build/src/abap/5_syntax/expressions/field_length.js +2 -2
- package/build/src/abap/5_syntax/expressions/field_offset.js +2 -2
- package/build/src/abap/5_syntax/expressions/filter_body.js +3 -3
- package/build/src/abap/5_syntax/expressions/for.js +8 -8
- package/build/src/abap/5_syntax/expressions/form_param.js +2 -2
- package/build/src/abap/5_syntax/expressions/fstarget.js +2 -2
- package/build/src/abap/5_syntax/expressions/inline_data.js +1 -1
- package/build/src/abap/5_syntax/expressions/inline_field_definition.js +3 -3
- package/build/src/abap/5_syntax/expressions/inline_fs.js +1 -1
- package/build/src/abap/5_syntax/expressions/inline_loop_definition.js +2 -2
- package/build/src/abap/5_syntax/expressions/let.js +2 -2
- package/build/src/abap/5_syntax/expressions/loop_group_by.js +6 -6
- package/build/src/abap/5_syntax/expressions/message_source.js +2 -2
- package/build/src/abap/5_syntax/expressions/method_call_body.js +3 -3
- package/build/src/abap/5_syntax/expressions/method_call_chain.js +14 -14
- package/build/src/abap/5_syntax/expressions/method_call_param.js +2 -2
- package/build/src/abap/5_syntax/expressions/method_def_returning.js +1 -1
- package/build/src/abap/5_syntax/expressions/method_param.js +4 -4
- package/build/src/abap/5_syntax/expressions/method_parameters.js +7 -7
- package/build/src/abap/5_syntax/expressions/method_source.js +20 -20
- package/build/src/abap/5_syntax/expressions/new_object.js +10 -10
- package/build/src/abap/5_syntax/expressions/raise_with.js +2 -2
- package/build/src/abap/5_syntax/expressions/reduce_body.js +7 -7
- package/build/src/abap/5_syntax/expressions/reduce_next.js +3 -3
- package/build/src/abap/5_syntax/expressions/select.js +25 -25
- package/build/src/abap/5_syntax/expressions/select_loop.js +2 -2
- package/build/src/abap/5_syntax/expressions/source.js +30 -30
- package/build/src/abap/5_syntax/expressions/source_field.js +2 -2
- package/build/src/abap/5_syntax/expressions/source_field_symbol.js +2 -2
- package/build/src/abap/5_syntax/expressions/sql_compare.js +6 -6
- package/build/src/abap/5_syntax/expressions/sql_for_all_entries.js +2 -2
- package/build/src/abap/5_syntax/expressions/sql_from.js +3 -3
- package/build/src/abap/5_syntax/expressions/sql_in.js +4 -4
- package/build/src/abap/5_syntax/expressions/sql_order_by.js +2 -2
- package/build/src/abap/5_syntax/expressions/sql_source.js +3 -3
- package/build/src/abap/5_syntax/expressions/string_template.js +6 -6
- package/build/src/abap/5_syntax/expressions/switch_body.js +4 -4
- package/build/src/abap/5_syntax/expressions/table_expression.js +2 -2
- package/build/src/abap/5_syntax/expressions/target.js +19 -19
- package/build/src/abap/5_syntax/expressions/type_table.js +2 -2
- package/build/src/abap/5_syntax/expressions/type_table_key.js +1 -1
- package/build/src/abap/5_syntax/expressions/value_body.js +10 -10
- package/build/src/abap/5_syntax/statements/add.js +2 -2
- package/build/src/abap/5_syntax/statements/add_corresponding.js +2 -2
- package/build/src/abap/5_syntax/statements/append.js +6 -6
- package/build/src/abap/5_syntax/statements/assert.js +1 -1
- package/build/src/abap/5_syntax/statements/assign.js +8 -8
- package/build/src/abap/5_syntax/statements/authority_check.js +1 -1
- package/build/src/abap/5_syntax/statements/call.js +3 -3
- package/build/src/abap/5_syntax/statements/call_badi.js +3 -3
- package/build/src/abap/5_syntax/statements/call_function.js +6 -6
- package/build/src/abap/5_syntax/statements/call_kernel.js +1 -1
- package/build/src/abap/5_syntax/statements/call_transaction.js +2 -2
- package/build/src/abap/5_syntax/statements/call_transformation.js +4 -4
- package/build/src/abap/5_syntax/statements/case.js +1 -1
- package/build/src/abap/5_syntax/statements/case_type.js +1 -1
- package/build/src/abap/5_syntax/statements/catch.js +2 -2
- package/build/src/abap/5_syntax/statements/check.js +1 -1
- package/build/src/abap/5_syntax/statements/class_data.js +2 -2
- package/build/src/abap/5_syntax/statements/class_implementation.js +1 -1
- package/build/src/abap/5_syntax/statements/clear.js +2 -2
- package/build/src/abap/5_syntax/statements/close_dataset.js +1 -1
- package/build/src/abap/5_syntax/statements/collect.js +3 -3
- package/build/src/abap/5_syntax/statements/commit_entities.js +3 -3
- package/build/src/abap/5_syntax/statements/concatenate.js +5 -5
- package/build/src/abap/5_syntax/statements/condense.js +1 -1
- package/build/src/abap/5_syntax/statements/convert.js +7 -7
- package/build/src/abap/5_syntax/statements/create_data.js +3 -3
- package/build/src/abap/5_syntax/statements/create_object.js +9 -6
- package/build/src/abap/5_syntax/statements/data.js +2 -2
- package/build/src/abap/5_syntax/statements/delete_cluster.js +1 -1
- package/build/src/abap/5_syntax/statements/delete_database.js +4 -4
- package/build/src/abap/5_syntax/statements/delete_internal.js +4 -4
- package/build/src/abap/5_syntax/statements/delete_memory.js +1 -1
- package/build/src/abap/5_syntax/statements/delete_report.js +1 -1
- package/build/src/abap/5_syntax/statements/describe.js +10 -10
- package/build/src/abap/5_syntax/statements/divide.js +2 -2
- package/build/src/abap/5_syntax/statements/do.js +2 -2
- package/build/src/abap/5_syntax/statements/editor_call.js +2 -2
- package/build/src/abap/5_syntax/statements/else_if.js +1 -1
- package/build/src/abap/5_syntax/statements/export.js +2 -2
- package/build/src/abap/5_syntax/statements/find.js +5 -5
- package/build/src/abap/5_syntax/statements/format.js +1 -1
- package/build/src/abap/5_syntax/statements/get_badi.js +3 -3
- package/build/src/abap/5_syntax/statements/get_bit.js +3 -3
- package/build/src/abap/5_syntax/statements/get_cursor.js +1 -1
- package/build/src/abap/5_syntax/statements/get_locale.js +2 -2
- package/build/src/abap/5_syntax/statements/get_parameter.js +3 -3
- package/build/src/abap/5_syntax/statements/get_reference.js +3 -3
- package/build/src/abap/5_syntax/statements/get_run_time.js +2 -2
- package/build/src/abap/5_syntax/statements/get_time.js +2 -2
- package/build/src/abap/5_syntax/statements/if.js +1 -1
- package/build/src/abap/5_syntax/statements/import.js +2 -2
- package/build/src/abap/5_syntax/statements/import_dynpro.js +2 -2
- package/build/src/abap/5_syntax/statements/include_type.js +2 -2
- package/build/src/abap/5_syntax/statements/insert_database.js +4 -4
- package/build/src/abap/5_syntax/statements/insert_field_group.js +3 -3
- package/build/src/abap/5_syntax/statements/insert_internal.js +7 -7
- package/build/src/abap/5_syntax/statements/insert_report.js +1 -1
- package/build/src/abap/5_syntax/statements/insert_textpool.js +1 -1
- package/build/src/abap/5_syntax/statements/log_point.js +1 -1
- package/build/src/abap/5_syntax/statements/loop.js +10 -10
- package/build/src/abap/5_syntax/statements/loop_at_screen.js +2 -2
- package/build/src/abap/5_syntax/statements/message.js +5 -5
- package/build/src/abap/5_syntax/statements/modify_database.js +5 -5
- package/build/src/abap/5_syntax/statements/modify_entities.js +3 -3
- package/build/src/abap/5_syntax/statements/modify_internal.js +4 -4
- package/build/src/abap/5_syntax/statements/modify_screen.js +1 -1
- package/build/src/abap/5_syntax/statements/move.js +4 -4
- package/build/src/abap/5_syntax/statements/move_corresponding.js +2 -2
- package/build/src/abap/5_syntax/statements/multiply.js +2 -2
- package/build/src/abap/5_syntax/statements/open_dataset.js +2 -2
- package/build/src/abap/5_syntax/statements/pack.js +2 -2
- package/build/src/abap/5_syntax/statements/parameter.js +1 -1
- package/build/src/abap/5_syntax/statements/perform.js +4 -4
- package/build/src/abap/5_syntax/statements/raise.js +8 -8
- package/build/src/abap/5_syntax/statements/raise_event.js +1 -1
- package/build/src/abap/5_syntax/statements/read_entities.js +3 -3
- package/build/src/abap/5_syntax/statements/read_report.js +2 -2
- package/build/src/abap/5_syntax/statements/read_table.js +8 -8
- package/build/src/abap/5_syntax/statements/read_textpool.js +2 -2
- package/build/src/abap/5_syntax/statements/receive.js +2 -2
- package/build/src/abap/5_syntax/statements/replace.js +2 -2
- package/build/src/abap/5_syntax/statements/scan.js +2 -2
- package/build/src/abap/5_syntax/statements/search.js +1 -1
- package/build/src/abap/5_syntax/statements/select.js +1 -1
- package/build/src/abap/5_syntax/statements/select_loop.js +1 -1
- package/build/src/abap/5_syntax/statements/selectoption.js +4 -4
- package/build/src/abap/5_syntax/statements/set_bit.js +2 -2
- package/build/src/abap/5_syntax/statements/set_handler.js +2 -2
- package/build/src/abap/5_syntax/statements/set_locale.js +2 -2
- package/build/src/abap/5_syntax/statements/set_parameter.js +1 -1
- package/build/src/abap/5_syntax/statements/set_pf_status.js +1 -1
- package/build/src/abap/5_syntax/statements/set_titlebar.js +1 -1
- package/build/src/abap/5_syntax/statements/shift.js +2 -2
- package/build/src/abap/5_syntax/statements/sort.js +2 -2
- package/build/src/abap/5_syntax/statements/split.js +3 -3
- package/build/src/abap/5_syntax/statements/static.js +1 -1
- package/build/src/abap/5_syntax/statements/submit.js +3 -3
- package/build/src/abap/5_syntax/statements/subtract.js +2 -2
- package/build/src/abap/5_syntax/statements/subtract_corresponding.js +2 -2
- package/build/src/abap/5_syntax/statements/syntax_check.js +2 -2
- package/build/src/abap/5_syntax/statements/system_call.js +1 -1
- package/build/src/abap/5_syntax/statements/transfer.js +2 -2
- package/build/src/abap/5_syntax/statements/translate.js +2 -2
- package/build/src/abap/5_syntax/statements/truncate_dataset.js +1 -1
- package/build/src/abap/5_syntax/statements/type.js +3 -3
- package/build/src/abap/5_syntax/statements/unpack.js +2 -2
- package/build/src/abap/5_syntax/statements/update_database.js +4 -4
- package/build/src/abap/5_syntax/statements/wait.js +2 -2
- package/build/src/abap/5_syntax/statements/when.js +1 -1
- package/build/src/abap/5_syntax/statements/when_type.js +3 -3
- package/build/src/abap/5_syntax/statements/while.js +3 -3
- package/build/src/abap/5_syntax/statements/with.js +2 -2
- package/build/src/abap/5_syntax/statements/with_loop.js +2 -2
- package/build/src/abap/5_syntax/statements/write.js +4 -4
- package/build/src/abap/5_syntax/structures/data.js +1 -1
- package/build/src/abap/5_syntax/structures/statics.js +1 -1
- package/build/src/abap/types/basic/any_type.js +13 -0
- package/build/src/abap/types/basic/cgeneric_type.js +7 -0
- package/build/src/abap/types/basic/integer_type.js +7 -4
- package/build/src/abap/types/basic/string_type.js +7 -4
- package/build/src/abap/types/basic/void_type.js +10 -0
- package/build/src/abap/types/basic/xgeneric_type.js +7 -0
- package/build/src/abap/types/basic/xstring_type.js +13 -0
- package/build/src/abap/types/event_definition.js +1 -1
- package/build/src/abap/types/form_definition.js +3 -3
- package/build/src/abap/types/method_parameters.js +11 -11
- package/build/src/cds/cds_determine_types.js +5 -5
- package/build/src/ddic.js +11 -11
- package/build/src/objects/authorization_check_field.js +1 -1
- package/build/src/objects/lock_object.js +1 -1
- package/build/src/objects/maintenance_and_transport_object.js +2 -2
- package/build/src/objects/table.js +1 -1
- package/build/src/objects/view.js +1 -1
- package/build/src/registry.js +1 -1
- package/build/src/rules/xml_consistency.js +1 -1
- package/package.json +5 -5
|
@@ -9,25 +9,25 @@ const fstarget_1 = require("./fstarget");
|
|
|
9
9
|
const target_1 = require("./target");
|
|
10
10
|
const source_1 = require("./source");
|
|
11
11
|
class LoopGroupBy {
|
|
12
|
-
runSyntax(node, input) {
|
|
12
|
+
static runSyntax(node, input) {
|
|
13
13
|
for (const t of node.findAllExpressions(Expressions.Target)) {
|
|
14
14
|
const inline = t.findDirectExpression(Expressions.InlineData);
|
|
15
15
|
if (inline) {
|
|
16
|
-
|
|
16
|
+
inline_data_1.InlineData.runSyntax(inline, input, basic_1.VoidType.get("todoGroupBy"));
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
|
-
|
|
19
|
+
target_1.Target.runSyntax(t, input);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
for (const t of node.findAllExpressions(Expressions.FSTarget)) {
|
|
23
|
-
|
|
23
|
+
fstarget_1.FSTarget.runSyntax(t, input, basic_1.VoidType.get("todoGroupBy"));
|
|
24
24
|
}
|
|
25
25
|
for (const t of node.findDirectExpressions(Expressions.Source)) {
|
|
26
|
-
|
|
26
|
+
source_1.Source.runSyntax(t, input, basic_1.VoidType.get("todoGroupBy"));
|
|
27
27
|
}
|
|
28
28
|
for (const c of node.findDirectExpressions(Expressions.LoopGroupByComponent)) {
|
|
29
29
|
for (const t of c.findDirectExpressions(Expressions.ComponentCompareSingle)) {
|
|
30
|
-
|
|
30
|
+
component_compare_1.ComponentCompare.runSyntax(t, input);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -4,10 +4,10 @@ exports.MessageSource = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
class MessageSource {
|
|
7
|
-
runSyntax(node, input) {
|
|
7
|
+
static runSyntax(node, input) {
|
|
8
8
|
var _a, _b, _c, _d, _e;
|
|
9
9
|
for (const f of node.findDirectExpressions(Expressions.Source)) {
|
|
10
|
-
|
|
10
|
+
source_1.Source.runSyntax(f, input);
|
|
11
11
|
}
|
|
12
12
|
if (node.getFirstToken().getStr().toUpperCase() === "ID") {
|
|
13
13
|
const id = (_a = node.findExpressionAfterToken("ID")) === null || _a === void 0 ? void 0 : _a.concatTokens();
|
|
@@ -6,18 +6,18 @@ const method_parameters_1 = require("./method_parameters");
|
|
|
6
6
|
const source_1 = require("./source");
|
|
7
7
|
const method_call_param_1 = require("./method_call_param");
|
|
8
8
|
class MethodCallBody {
|
|
9
|
-
runSyntax(node, input, method) {
|
|
9
|
+
static runSyntax(node, input, method) {
|
|
10
10
|
const parameters = node.findDirectExpression(Expressions.MethodParameters);
|
|
11
11
|
if (parameters) {
|
|
12
12
|
new method_parameters_1.MethodParameters().runSyntax(parameters, input, method);
|
|
13
13
|
}
|
|
14
14
|
const param = node.findDirectExpression(Expressions.MethodCallParam);
|
|
15
15
|
if (param) {
|
|
16
|
-
|
|
16
|
+
method_call_param_1.MethodCallParam.runSyntax(param, input, method);
|
|
17
17
|
}
|
|
18
18
|
// for PARAMETER-TABLE and EXCEPTION-TABLE
|
|
19
19
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
20
|
-
|
|
20
|
+
source_1.Source.runSyntax(s, input);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -15,7 +15,7 @@ const component_name_1 = require("./component_name");
|
|
|
15
15
|
const attribute_name_1 = require("./attribute_name");
|
|
16
16
|
const _syntax_input_1 = require("../_syntax_input");
|
|
17
17
|
class MethodCallChain {
|
|
18
|
-
runSyntax(node, input, targetType) {
|
|
18
|
+
static runSyntax(node, input, targetType) {
|
|
19
19
|
var _a, _b;
|
|
20
20
|
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
21
21
|
const children = node.getChildren().slice();
|
|
@@ -23,7 +23,7 @@ class MethodCallChain {
|
|
|
23
23
|
if (first === undefined) {
|
|
24
24
|
const message = "MethodCallChain, first child expected";
|
|
25
25
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
26
|
-
return
|
|
26
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
27
27
|
}
|
|
28
28
|
let context = this.findTop(first, input, targetType);
|
|
29
29
|
if (first.get() instanceof Expressions.MethodCall) {
|
|
@@ -53,7 +53,7 @@ class MethodCallChain {
|
|
|
53
53
|
if (previous && previous.getFirstToken().getStr() === "=>" && (method === null || method === void 0 ? void 0 : method.isStatic()) === false) {
|
|
54
54
|
const message = "Method \"" + methodName + "\" not static";
|
|
55
55
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, methodToken, message));
|
|
56
|
-
return
|
|
56
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
57
57
|
}
|
|
58
58
|
const voidedName = context instanceof basic_1.VoidType ? context.getVoided() : undefined;
|
|
59
59
|
const extra = helper.methodReferenceExtras(foundDef, className || voidedName);
|
|
@@ -72,7 +72,7 @@ class MethodCallChain {
|
|
|
72
72
|
else if (method === undefined && !(context instanceof basic_1.VoidType)) {
|
|
73
73
|
const message = "Method \"" + methodName + "\" not found, methodCallChain";
|
|
74
74
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, methodToken, message));
|
|
75
|
-
return
|
|
75
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
76
76
|
}
|
|
77
77
|
else if (method) {
|
|
78
78
|
const ret = (_b = method.getParameters().getReturning()) === null || _b === void 0 ? void 0 : _b.getType();
|
|
@@ -80,24 +80,24 @@ class MethodCallChain {
|
|
|
80
80
|
}
|
|
81
81
|
const param = current.findDirectExpression(Expressions.MethodCallParam);
|
|
82
82
|
if (param && method) {
|
|
83
|
-
|
|
83
|
+
method_call_param_1.MethodCallParam.runSyntax(param, input, method);
|
|
84
84
|
}
|
|
85
85
|
else if (param && context instanceof basic_1.VoidType) {
|
|
86
|
-
|
|
86
|
+
method_call_param_1.MethodCallParam.runSyntax(param, input, context);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
else if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.ComponentName) {
|
|
90
|
-
context =
|
|
90
|
+
context = component_name_1.ComponentName.runSyntax(context, current, input);
|
|
91
91
|
}
|
|
92
92
|
else if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.AttributeName) {
|
|
93
|
-
context =
|
|
93
|
+
context = attribute_name_1.AttributeName.runSyntax(context, current, input);
|
|
94
94
|
}
|
|
95
95
|
previous = current;
|
|
96
96
|
}
|
|
97
97
|
return context;
|
|
98
98
|
}
|
|
99
99
|
//////////////////////////////////////
|
|
100
|
-
findTop(first, input, targetType) {
|
|
100
|
+
static findTop(first, input, targetType) {
|
|
101
101
|
var _a;
|
|
102
102
|
if (first.get() instanceof Expressions.ClassName) {
|
|
103
103
|
const token = first.getFirstToken();
|
|
@@ -106,24 +106,24 @@ class MethodCallChain {
|
|
|
106
106
|
if (classDefinition === undefined && input.scope.getDDIC().inErrorNamespace(className) === false) {
|
|
107
107
|
const extra = { ooName: className, ooType: "Void" };
|
|
108
108
|
input.scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, input.filename, extra);
|
|
109
|
-
return
|
|
109
|
+
return basic_1.VoidType.get(className);
|
|
110
110
|
}
|
|
111
111
|
else if (classDefinition === undefined) {
|
|
112
112
|
const message = "Class " + className + " not found";
|
|
113
113
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, first.getFirstToken(), message));
|
|
114
|
-
return
|
|
114
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
115
115
|
}
|
|
116
116
|
input.scope.addReference(first.getFirstToken(), classDefinition, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
117
117
|
return new basic_1.ObjectReferenceType(classDefinition);
|
|
118
118
|
}
|
|
119
119
|
else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.FieldChain) {
|
|
120
|
-
return
|
|
120
|
+
return field_chain_1.FieldChain.runSyntax(first, input, _reference_1.ReferenceType.DataReadReference);
|
|
121
121
|
}
|
|
122
122
|
else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.NewObject) {
|
|
123
|
-
return
|
|
123
|
+
return new_object_1.NewObject.runSyntax(first, input, targetType);
|
|
124
124
|
}
|
|
125
125
|
else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Cast) {
|
|
126
|
-
return
|
|
126
|
+
return cast_1.Cast.runSyntax(first, input, targetType);
|
|
127
127
|
}
|
|
128
128
|
else {
|
|
129
129
|
const meType = (_a = input.scope.findVariable("me")) === null || _a === void 0 ? void 0 : _a.getType();
|
|
@@ -10,7 +10,7 @@ const source_1 = require("./source");
|
|
|
10
10
|
const _type_utils_1 = require("../_type_utils");
|
|
11
11
|
const _syntax_input_1 = require("../_syntax_input");
|
|
12
12
|
class MethodCallParam {
|
|
13
|
-
runSyntax(node, input, method) {
|
|
13
|
+
static runSyntax(node, input, method) {
|
|
14
14
|
if (!(node.get() instanceof Expressions.MethodCallParam)) {
|
|
15
15
|
const message = "MethodCallParam, unexpected input";
|
|
16
16
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
@@ -68,7 +68,7 @@ class MethodCallParam {
|
|
|
68
68
|
}
|
|
69
69
|
let sourceType = basic_1.StringType.get();
|
|
70
70
|
if (child.get() instanceof Expressions.Source) {
|
|
71
|
-
sourceType =
|
|
71
|
+
sourceType = source_1.Source.runSyntax(child, input, targetType);
|
|
72
72
|
}
|
|
73
73
|
if (sourceType === undefined) {
|
|
74
74
|
const message = "No source type determined, method source";
|
|
@@ -7,7 +7,7 @@ const basic_1 = require("../../types/basic");
|
|
|
7
7
|
const basic_types_1 = require("../basic_types");
|
|
8
8
|
const assert_error_1 = require("../assert_error");
|
|
9
9
|
class MethodDefReturning {
|
|
10
|
-
runSyntax(node, input, meta) {
|
|
10
|
+
static runSyntax(node, input, meta) {
|
|
11
11
|
const name = node.findDirectExpression(Expressions.MethodParamName);
|
|
12
12
|
if (name === undefined) {
|
|
13
13
|
throw new assert_error_1.AssertError("method_parameter.ts, todo, handle pass by value and reference");
|
|
@@ -9,7 +9,7 @@ const default_1 = require("./default");
|
|
|
9
9
|
const cgeneric_type_1 = require("../../types/basic/cgeneric_type");
|
|
10
10
|
const assert_error_1 = require("../assert_error");
|
|
11
11
|
class MethodParam {
|
|
12
|
-
runSyntax(node, input, meta) {
|
|
12
|
+
static runSyntax(node, input, meta) {
|
|
13
13
|
const name = node.findDirectExpression(Expressions.MethodParamName);
|
|
14
14
|
if (name === undefined) {
|
|
15
15
|
throw new assert_error_1.AssertError("MethodParam, todo, handle pass by value and reference");
|
|
@@ -21,7 +21,7 @@ class MethodParam {
|
|
|
21
21
|
const def = type.findDirectExpression(Expressions.Default);
|
|
22
22
|
if (def) {
|
|
23
23
|
try {
|
|
24
|
-
|
|
24
|
+
default_1.Default.runSyntax(def, input);
|
|
25
25
|
}
|
|
26
26
|
catch (e) {
|
|
27
27
|
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename, new basic_1.UnknownType(e.toString()), meta);
|
|
@@ -29,10 +29,10 @@ class MethodParam {
|
|
|
29
29
|
}
|
|
30
30
|
const concat = type.concatTokens().toUpperCase();
|
|
31
31
|
if (concat === "TYPE C" || concat.startsWith("TYPE C ")) {
|
|
32
|
-
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename,
|
|
32
|
+
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename, cgeneric_type_1.CGenericType.get(), meta);
|
|
33
33
|
}
|
|
34
34
|
else if (concat === "TYPE X" || concat.startsWith("TYPE X ")) {
|
|
35
|
-
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename,
|
|
35
|
+
return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename, basic_1.XGenericType.get(), meta);
|
|
36
36
|
}
|
|
37
37
|
const found = new basic_types_1.BasicTypes(input).parseType(type);
|
|
38
38
|
if (found) {
|
|
@@ -49,7 +49,7 @@ class MethodParameters {
|
|
|
49
49
|
const node = children.shift();
|
|
50
50
|
const exceptions = node.findFirstExpression(Expressions.ParameterException);
|
|
51
51
|
for (const s of (exceptions === null || exceptions === void 0 ? void 0 : exceptions.findAllExpressions(Expressions.SimpleFieldChain)) || []) {
|
|
52
|
-
|
|
52
|
+
field_chain_1.FieldChain.runSyntax(s, input, _reference_1.ReferenceType.DataReadReference);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
break;
|
|
@@ -76,10 +76,10 @@ class MethodParameters {
|
|
|
76
76
|
const target = node.findDirectExpression(Expressions.Target);
|
|
77
77
|
const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);
|
|
78
78
|
if (inline) {
|
|
79
|
-
|
|
79
|
+
inline_data_1.InlineData.runSyntax(inline, input, type);
|
|
80
80
|
}
|
|
81
81
|
else if (target) {
|
|
82
|
-
const targetType =
|
|
82
|
+
const targetType = target_1.Target.runSyntax(target, input);
|
|
83
83
|
if (targetType && new _type_utils_1.TypeUtils(input.scope).isAssignable(type, targetType) === false) {
|
|
84
84
|
const message = "Method returning value not type compatible";
|
|
85
85
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
@@ -104,7 +104,7 @@ class MethodParameters {
|
|
|
104
104
|
}
|
|
105
105
|
const inline = item.target.findDirectExpression(Expressions.InlineData);
|
|
106
106
|
if (inline) {
|
|
107
|
-
|
|
107
|
+
inline_data_1.InlineData.runSyntax(inline, input, parameterType);
|
|
108
108
|
}
|
|
109
109
|
else if (item.targetType === undefined) {
|
|
110
110
|
const message = "Could not determine target type";
|
|
@@ -210,7 +210,7 @@ class MethodParameters {
|
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
|
-
let sourceType =
|
|
213
|
+
let sourceType = source_1.Source.runSyntax(source, input, targetType);
|
|
214
214
|
if (sourceType === undefined) {
|
|
215
215
|
if (method instanceof basic_1.VoidType) {
|
|
216
216
|
sourceType = method;
|
|
@@ -218,7 +218,7 @@ class MethodParameters {
|
|
|
218
218
|
else {
|
|
219
219
|
const message = "No source type determined for parameter " + name + " input";
|
|
220
220
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
221
|
-
sourceType =
|
|
221
|
+
sourceType = basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
ret.push({ name, source, sourceType });
|
|
@@ -246,7 +246,7 @@ class MethodParameters {
|
|
|
246
246
|
if (target === undefined) {
|
|
247
247
|
throw new assert_error_1.AssertError("parameterListT, no target found");
|
|
248
248
|
}
|
|
249
|
-
const targetType =
|
|
249
|
+
const targetType = target_1.Target.runSyntax(target, input);
|
|
250
250
|
ret.push({ name, target, targetType });
|
|
251
251
|
}
|
|
252
252
|
return ret;
|
|
@@ -17,7 +17,7 @@ const version_1 = require("../../../version");
|
|
|
17
17
|
const _syntax_input_1 = require("../_syntax_input");
|
|
18
18
|
const assert_error_1 = require("../assert_error");
|
|
19
19
|
class MethodSource {
|
|
20
|
-
runSyntax(node, input) {
|
|
20
|
+
static runSyntax(node, input) {
|
|
21
21
|
var _a, _b, _c;
|
|
22
22
|
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
23
23
|
const children = node.getChildren().slice();
|
|
@@ -38,14 +38,14 @@ class MethodSource {
|
|
|
38
38
|
if (name !== undefined && input.scope.findClassDefinition(name) === undefined) {
|
|
39
39
|
const message = `Class "${name}" not found/released`;
|
|
40
40
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
41
|
-
return
|
|
41
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
if (context instanceof basic_1.VoidType) {
|
|
45
45
|
while (children.length > 0) {
|
|
46
46
|
const current = children.shift();
|
|
47
47
|
if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.Dynamic) {
|
|
48
|
-
|
|
48
|
+
dynamic_1.Dynamic.runSyntax(current, input);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
return context;
|
|
@@ -59,12 +59,12 @@ class MethodSource {
|
|
|
59
59
|
if (context instanceof basic_1.UnknownType) {
|
|
60
60
|
const message = "Not a structure, type unknown, MethodSource";
|
|
61
61
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
62
|
-
return
|
|
62
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
63
63
|
}
|
|
64
64
|
else if (!(context instanceof basic_1.StructureType)) {
|
|
65
65
|
const message = "Not a structure, MethodSource";
|
|
66
66
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
67
|
-
return
|
|
67
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
else if (current.get() instanceof tokens_1.InstanceArrow
|
|
@@ -74,7 +74,7 @@ class MethodSource {
|
|
|
74
74
|
else if (current.get() instanceof Expressions.AttributeName
|
|
75
75
|
|| current.get() instanceof Expressions.SourceField) {
|
|
76
76
|
if (context instanceof _abstract_type_1.AbstractType) {
|
|
77
|
-
const attr =
|
|
77
|
+
const attr = attribute_name_1.AttributeName.runSyntax(context, current, input, _reference_1.ReferenceType.DataReadReference, false);
|
|
78
78
|
const isSyntaxError = attr instanceof basic_1.VoidType && attr.getVoided() === _syntax_input_1.CheckSyntaxKey;
|
|
79
79
|
if (isSyntaxError === false) {
|
|
80
80
|
context = attr;
|
|
@@ -89,12 +89,12 @@ class MethodSource {
|
|
|
89
89
|
// eslint-disable-next-line prefer-const
|
|
90
90
|
let { method, def: foundDef } = helper.searchMethodName(def, methodName);
|
|
91
91
|
if (method === undefined && (methodName === null || methodName === void 0 ? void 0 : methodName.toUpperCase()) === "CONSTRUCTOR") {
|
|
92
|
-
context =
|
|
92
|
+
context = basic_1.VoidType.get("CONSTRUCTOR"); // todo, this is a workaround, constructors always exists
|
|
93
93
|
}
|
|
94
94
|
else if (method === undefined && !(context instanceof basic_1.VoidType)) {
|
|
95
95
|
const message = "Method or attribute \"" + methodName + "\" not found, MethodSource";
|
|
96
96
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
97
|
-
return
|
|
97
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
98
98
|
}
|
|
99
99
|
else if (method) {
|
|
100
100
|
const extra = helper.methodReferenceExtras(foundDef, className);
|
|
@@ -106,27 +106,27 @@ class MethodSource {
|
|
|
106
106
|
if (context instanceof basic_1.TableType && context.isWithHeader()) {
|
|
107
107
|
context = context.getRowType();
|
|
108
108
|
}
|
|
109
|
-
context =
|
|
109
|
+
context = component_name_1.ComponentName.runSyntax(context, current, input);
|
|
110
110
|
}
|
|
111
111
|
else if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.Dynamic) {
|
|
112
|
-
|
|
113
|
-
context =
|
|
112
|
+
dynamic_1.Dynamic.runSyntax(current, input);
|
|
113
|
+
context = basic_1.VoidType.get("Dynamic");
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
if (context instanceof _abstract_type_1.AbstractType && !(context instanceof basic_1.VoidType)) {
|
|
117
117
|
const message = "Not a method, MethodSource";
|
|
118
118
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
119
|
-
return
|
|
119
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
120
120
|
}
|
|
121
121
|
else if (context === undefined) {
|
|
122
122
|
const message = "Not found, MethodSource";
|
|
123
123
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
124
|
-
return
|
|
124
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
125
125
|
}
|
|
126
126
|
return context;
|
|
127
127
|
}
|
|
128
128
|
//////////////////////////////////////
|
|
129
|
-
findTop(first, input, children) {
|
|
129
|
+
static findTop(first, input, children) {
|
|
130
130
|
if (first.get() instanceof Expressions.ClassName) {
|
|
131
131
|
// todo, refactor this part to new expression handler,
|
|
132
132
|
const token = first.getFirstToken();
|
|
@@ -135,25 +135,25 @@ class MethodSource {
|
|
|
135
135
|
if (classDefinition === undefined && input.scope.getDDIC().inErrorNamespace(className) === false) {
|
|
136
136
|
const extra = { ooName: className, ooType: "Void" };
|
|
137
137
|
input.scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, input.filename, extra);
|
|
138
|
-
return
|
|
138
|
+
return basic_1.VoidType.get(className);
|
|
139
139
|
}
|
|
140
140
|
else if (classDefinition === undefined) {
|
|
141
141
|
const message = "Class " + className + " not found";
|
|
142
142
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, first.getFirstToken(), message));
|
|
143
|
-
return
|
|
143
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
144
144
|
}
|
|
145
145
|
input.scope.addReference(first.getFirstToken(), classDefinition, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
|
|
146
146
|
return new basic_1.ObjectReferenceType(classDefinition);
|
|
147
147
|
}
|
|
148
148
|
else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.SourceField && children.length > 0) {
|
|
149
|
-
return
|
|
149
|
+
return source_field_1.SourceField.runSyntax(first, input, _reference_1.ReferenceType.DataReadReference);
|
|
150
150
|
}
|
|
151
151
|
else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.SourceFieldSymbol) {
|
|
152
|
-
return
|
|
152
|
+
return source_field_symbol_1.SourceFieldSymbol.runSyntax(first, input);
|
|
153
153
|
}
|
|
154
154
|
else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Dynamic) {
|
|
155
|
-
|
|
156
|
-
return
|
|
155
|
+
dynamic_1.Dynamic.runSyntax(first, input);
|
|
156
|
+
return basic_1.VoidType.get("Dynamic");
|
|
157
157
|
}
|
|
158
158
|
return undefined;
|
|
159
159
|
}
|
|
@@ -12,7 +12,7 @@ const _type_utils_1 = require("../_type_utils");
|
|
|
12
12
|
const _syntax_input_1 = require("../_syntax_input");
|
|
13
13
|
const assert_error_1 = require("../assert_error");
|
|
14
14
|
class NewObject {
|
|
15
|
-
runSyntax(node, input, targetType) {
|
|
15
|
+
static runSyntax(node, input, targetType) {
|
|
16
16
|
let ret = undefined;
|
|
17
17
|
const typeExpr = node.findDirectExpression(Expressions.TypeNameOrInfer);
|
|
18
18
|
const typeToken = typeExpr === null || typeExpr === void 0 ? void 0 : typeExpr.getFirstToken();
|
|
@@ -31,14 +31,14 @@ class NewObject {
|
|
|
31
31
|
if (intf) {
|
|
32
32
|
const message = intf.getName() + " is an interface, cannot be instantiated";
|
|
33
33
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
34
|
-
return
|
|
34
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
ret = targetType;
|
|
38
38
|
if ((clas === null || clas === void 0 ? void 0 : clas.isAbstract()) === true) {
|
|
39
39
|
const message = clas.getName() + " is abstract, cannot be instantiated";
|
|
40
40
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
41
|
-
return
|
|
41
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
else if (typeName === "#" && targetType) {
|
|
@@ -57,7 +57,7 @@ class NewObject {
|
|
|
57
57
|
if ((clas === null || clas === void 0 ? void 0 : clas.isAbstract()) === true) {
|
|
58
58
|
const message = clas.getName() + " is abstract, cannot be instantiated";
|
|
59
59
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
60
|
-
return
|
|
60
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
61
61
|
}
|
|
62
62
|
ret = objref;
|
|
63
63
|
}
|
|
@@ -77,7 +77,7 @@ class NewObject {
|
|
|
77
77
|
else {
|
|
78
78
|
const message = "Type \"" + typeName + "\" not found in scope, NewObject";
|
|
79
79
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
80
|
-
return
|
|
80
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
if (ret instanceof basic_1.ObjectReferenceType) {
|
|
@@ -85,17 +85,17 @@ class NewObject {
|
|
|
85
85
|
}
|
|
86
86
|
else {
|
|
87
87
|
for (const s of node.findAllExpressions(Expressions.Source)) {
|
|
88
|
-
|
|
88
|
+
source_1.Source.runSyntax(s, input, ret);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
if (ret instanceof basic_1.UnknownType && input.scope.getDDIC().inErrorNamespace(typeName) === true) {
|
|
92
92
|
const message = "Class or type \"" + typeName + "\" not found";
|
|
93
93
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
94
|
-
return
|
|
94
|
+
return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
|
|
95
95
|
}
|
|
96
96
|
return ret;
|
|
97
97
|
}
|
|
98
|
-
parameters(node, obj, input) {
|
|
98
|
+
static parameters(node, obj, input) {
|
|
99
99
|
const name = obj.getIdentifier().getName();
|
|
100
100
|
const def = input.scope.findObjectDefinition(name);
|
|
101
101
|
const helper = new _object_oriented_1.ObjectOriented(input.scope);
|
|
@@ -112,7 +112,7 @@ class NewObject {
|
|
|
112
112
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
|
-
const sourceType =
|
|
115
|
+
const sourceType = source_1.Source.runSyntax(source, input, type);
|
|
116
116
|
if (new _type_utils_1.TypeUtils(input.scope).isAssignableStrict(sourceType, type) === false) {
|
|
117
117
|
const message = `NEW parameter type not compatible`;
|
|
118
118
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
@@ -134,7 +134,7 @@ class NewObject {
|
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
defaultImportingType(method) {
|
|
137
|
+
static defaultImportingType(method) {
|
|
138
138
|
let targetType = undefined;
|
|
139
139
|
if (method === undefined) {
|
|
140
140
|
return undefined;
|
|
@@ -4,9 +4,9 @@ exports.RaiseWith = void 0;
|
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
class RaiseWith {
|
|
7
|
-
runSyntax(node, input) {
|
|
7
|
+
static runSyntax(node, input) {
|
|
8
8
|
for (const f of node.findAllExpressionsMulti([Expressions.SimpleSource1, Expressions.Source])) {
|
|
9
|
-
|
|
9
|
+
source_1.Source.runSyntax(f, input);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -10,14 +10,14 @@ const reduce_next_1 = require("./reduce_next");
|
|
|
10
10
|
const let_1 = require("./let");
|
|
11
11
|
const _scope_type_1 = require("../_scope_type");
|
|
12
12
|
class ReduceBody {
|
|
13
|
-
runSyntax(node, input, targetType) {
|
|
13
|
+
static runSyntax(node, input, targetType) {
|
|
14
14
|
if (node === undefined) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
let scoped = false;
|
|
18
18
|
const letNode = node.findDirectExpression(Expressions.Let);
|
|
19
19
|
if (letNode) {
|
|
20
|
-
scoped =
|
|
20
|
+
scoped = let_1.Let.runSyntax(letNode, input);
|
|
21
21
|
}
|
|
22
22
|
let first = undefined;
|
|
23
23
|
for (const i of node.findDirectExpressions(Expressions.InlineFieldDefinition)) {
|
|
@@ -28,25 +28,25 @@ class ReduceBody {
|
|
|
28
28
|
let foundType = targetType;
|
|
29
29
|
const source = i.findDirectExpression(Expressions.Source);
|
|
30
30
|
if (source) {
|
|
31
|
-
foundType =
|
|
31
|
+
foundType = source_1.Source.runSyntax(source, input, targetType);
|
|
32
32
|
}
|
|
33
|
-
const found =
|
|
33
|
+
const found = inline_field_definition_1.InlineFieldDefinition.runSyntax(i, input, foundType);
|
|
34
34
|
if (found && first === undefined) {
|
|
35
35
|
first = found;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
let forScopes = 0;
|
|
39
39
|
for (const forNode of node.findDirectExpressions(Expressions.For) || []) {
|
|
40
|
-
const scoped =
|
|
40
|
+
const scoped = for_1.For.runSyntax(forNode, input);
|
|
41
41
|
if (scoped === true) {
|
|
42
42
|
forScopes++;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
46
|
-
|
|
46
|
+
source_1.Source.runSyntax(s, input);
|
|
47
47
|
}
|
|
48
48
|
for (const s of node.findDirectExpressions(Expressions.ReduceNext)) {
|
|
49
|
-
|
|
49
|
+
reduce_next_1.ReduceNext.runSyntax(s, input);
|
|
50
50
|
}
|
|
51
51
|
if (scoped === true) {
|
|
52
52
|
input.scope.pop(node.getLastToken().getEnd());
|
|
@@ -5,15 +5,15 @@ const Expressions = require("../../2_statements/expressions");
|
|
|
5
5
|
const source_1 = require("./source");
|
|
6
6
|
const target_1 = require("./target");
|
|
7
7
|
class ReduceNext {
|
|
8
|
-
runSyntax(node, input) {
|
|
8
|
+
static runSyntax(node, input) {
|
|
9
9
|
if (node === undefined) {
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
12
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
13
|
-
|
|
13
|
+
source_1.Source.runSyntax(s, input);
|
|
14
14
|
}
|
|
15
15
|
for (const s of node.findDirectExpressions(Expressions.SimpleTarget)) {
|
|
16
|
-
|
|
16
|
+
target_1.Target.runSyntax(s, input);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|