From 061c066a712694c5b46cb22bc33cbab25828b6b5 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: Tue, 8 May 2018 19:54:14 +0200 Subject: [PATCH] bug fix #816 --- TestSuite/errors/err0239.pas | 7 +++++++ .../TreeConversion/convertion_data_and_alghoritms.cs | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 TestSuite/errors/err0239.pas diff --git a/TestSuite/errors/err0239.pas b/TestSuite/errors/err0239.pas new file mode 100644 index 000000000..2775aef42 --- /dev/null +++ b/TestSuite/errors/err0239.pas @@ -0,0 +1,7 @@ +type + I1 = interface + end; + +begin + (I1(System.Math.Sin)); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs index c7cd4a357..97f374184 100644 --- a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs +++ b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs @@ -681,7 +681,7 @@ namespace PascalABCCompiler.TreeConverter return ret; } - if ((type_table.is_derived(from.type, to)) || (type_table.is_derived(to, from.type)) || from.type.IsInterface || to.IsInterface) + if ((type_table.is_derived(from.type, to)) || (type_table.is_derived(to, from.type)) || from.type.IsInterface || to.IsInterface && !(from.type is delegated_methods)) { if (from.type.IsSealed && to.IsInterface && !from.type.ImplementingInterfaces.Contains(to) || from.type.IsInterface && to.IsSealed && !to.ImplementingInterfaces.Contains(from.type))