From d35fcda955573bbd93be554440ca1be9700cf790 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, 21 Apr 2019 12:01:24 +0200 Subject: [PATCH] fix #1797 --- TestSuite/CompilationSamples/graph3d.pas | 35 +++++++++++++------ TestSuite/overloads10.pas | 6 ++++ .../TreeConversion/syntax_tree_visitor.cs | 3 ++ 3 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 TestSuite/overloads10.pas diff --git a/TestSuite/CompilationSamples/graph3d.pas b/TestSuite/CompilationSamples/graph3d.pas index a01e595bf..00c1ae28b 100644 --- a/TestSuite/CompilationSamples/graph3d.pas +++ b/TestSuite/CompilationSamples/graph3d.pas @@ -1130,10 +1130,13 @@ type el: ScaleTransform3D; procedure Hand(o: object; e: System.EventArgs); begin - var el0 := Element.scaletransform; - el0.ScaleX += el.ScaleX; - el0.ScaleY += el.ScaleY; - el0.ScaleZ += el.ScaleZ; + if not dax.AutoReverse then + begin + var el0 := Element.scaletransform; + el0.ScaleX += el.ScaleX; + el0.ScaleY += el.ScaleY; + el0.ScaleZ += el.ScaleZ; + end; Element.transfgroup.Children.Remove(el); if Completed <> nil then Completed(); @@ -1164,8 +1167,11 @@ type el: ScaleTransform3D; procedure Hand(o: object; e: System.EventArgs); begin - var el0 := Element.scaletransform; - el0.ScaleX += el.ScaleX; + if not da.AutoReverse then + begin + var el0 := Element.scaletransform; + el0.ScaleX += el.ScaleX; + end; Element.transfgroup.Children.Remove(el); if Completed <> nil then Completed(); @@ -1192,8 +1198,11 @@ type private procedure Hand(o: object; e: System.EventArgs); begin - var el0 := Element.scaletransform; - el0.ScaleY += el.ScaleY; + if not da.AutoReverse then + begin + var el0 := Element.scaletransform; + el0.ScaleY += el.ScaleY; + end; Element.transfgroup.Children.Remove(el); if Completed <> nil then Completed(); @@ -1214,8 +1223,11 @@ type private procedure Hand(o: object; e: System.EventArgs); begin - var el0 := Element.scaletransform; - el0.ScaleZ += el.ScaleZ; + if not da.AutoReverse then + begin + var el0 := Element.scaletransform; + el0.ScaleZ += el.ScaleZ; + end; Element.transfgroup.Children.Remove(el); if Completed <> nil then Completed(); @@ -1240,7 +1252,8 @@ type procedure Hand(o: object; e: System.EventArgs); begin var rot := el.Rotation as AxisAngleRotation3D; - Element.RotateAt(rot.Axis, angle, center); + if not da.AutoReverse then + Element.RotateAt(rot.Axis, angle, center); Element.transfgroup.Children.Remove(el); if Completed <> nil then Completed(); diff --git a/TestSuite/overloads10.pas b/TestSuite/overloads10.pas new file mode 100644 index 000000000..22476dede --- /dev/null +++ b/TestSuite/overloads10.pas @@ -0,0 +1,6 @@ +function f1: sequence of integer:= Seq(1,2); + +begin + var s := f1+f1; + assert(1 in s); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index c8effc49e..e4e8bd0a3 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -1107,6 +1107,9 @@ 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); + if (name != compiler_string_consts.plusassign_name && name != compiler_string_consts.minusassign_name) + try_convert_typed_expression_to_function_call(ref left); + 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)