From 1aecc81874afbf0453f4a346646c15d02915cc1c Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 28 Aug 2022 12:13:21 +0200 Subject: [PATCH] #2688 --- TestSuite/abstract4.pas | 21 +++++++++++++++++++ TestSuite/intellisense_tests/shortprog2.pas | 2 ++ .../TreeConversion/compilation_context.cs | 8 +++++++ 3 files changed, 31 insertions(+) create mode 100644 TestSuite/abstract4.pas create mode 100644 TestSuite/intellisense_tests/shortprog2.pas diff --git a/TestSuite/abstract4.pas b/TestSuite/abstract4.pas new file mode 100644 index 000000000..cbc92695d --- /dev/null +++ b/TestSuite/abstract4.pas @@ -0,0 +1,21 @@ +type + t1 = abstract class + + procedure p1(p: procedure); abstract; + + end; + t2 = class(t1) + + procedure p1(p: procedure); override; + begin + p; + end; + + end; + +begin + var o := new t2; + var i := 0; + o.p1(()->begin i:=1 end); + assert(i = 1); +end. \ No newline at end of file diff --git a/TestSuite/intellisense_tests/shortprog2.pas b/TestSuite/intellisense_tests/shortprog2.pas new file mode 100644 index 000000000..2c87a7f84 --- /dev/null +++ b/TestSuite/intellisense_tests/shortprog2.pas @@ -0,0 +1,2 @@ +## +Println{(procedure Println(a,b,...);)} \ No newline at end of file diff --git a/TreeConverter/TreeConversion/compilation_context.cs b/TreeConverter/TreeConversion/compilation_context.cs index 1e30e9284..e4e40d80d 100644 --- a/TreeConverter/TreeConversion/compilation_context.cs +++ b/TreeConverter/TreeConversion/compilation_context.cs @@ -3943,6 +3943,14 @@ namespace PascalABCCompiler.TreeConverter cmn.overrided_method = FindMethodToOverride(cmn); if (cmn.overrided_method == null) AddError(cmn.loc, "NO_METHOD_TO_OVERRIDE"); + for (int i = 0; i < cmn.parameters.Count; i++) + { + var cp = cmn.parameters[i]; + if (cp.type.IsDelegate && cp.type is common_type_node && (cp.type as common_type_node).name.IndexOf("$") != -1) + { + cp.type = cmn.overrided_method.parameters[i].type; + } + } cmn.SetName(cmn.overrided_method.name); }