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)