From 42ab125c55f493ff9faaccc6fb8506410cea4de3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 16 Dec 2018 21:09:54 +0100 Subject: [PATCH] fix #1507 --- TestSuite/extensionmethods32.pas | 7 +++++++ TreeConverter/TreeConversion/syntax_tree_visitor.cs | 5 +++++ 2 files changed, 12 insertions(+) create mode 100644 TestSuite/extensionmethods32.pas diff --git a/TestSuite/extensionmethods32.pas b/TestSuite/extensionmethods32.pas new file mode 100644 index 000000000..5a76e7cd1 --- /dev/null +++ b/TestSuite/extensionmethods32.pas @@ -0,0 +1,7 @@ +function f1: byte := 0; + +begin + var l := new List; + l += f1; + assert(l[0] = 0); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 82ef84af7..503bdff1d 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -1136,6 +1136,11 @@ namespace PascalABCCompiler.TreeConverter } } + if (right_type.semantic_node_type == semantic_node_type.delegated_method && !left_type.IsDelegate && left_type.semantic_node_type != semantic_node_type.delegated_method) + { + try_convert_typed_expression_to_function_call(ref right); + right_type = right.type; + } if (right_type.semantic_node_type == semantic_node_type.delegated_method && name != compiler_string_consts.plusassign_name && name != compiler_string_consts.minusassign_name) { delegated_methods dm2 = (delegated_methods)right_type;