Browse Source

+ add test for fixed #40011

Sven/Sarah Barth 7 months ago
parent
commit
291d2e911a
1 changed files with 35 additions and 0 deletions
  1. 35 0
      tests/webtbs/tw40011.pp

+ 35 - 0
tests/webtbs/tw40011.pp

@@ -0,0 +1,35 @@
+program tw40011;
+
+{$mode delphi}
+{$modeswitch nestedprocvars}
+{$modeswitch anonymousfunctions}
+
+type
+  TFuncNested = function (const P1: String): String is nested;
+
+  TMyClass = class
+    class function CallFn(const A: String; const Fn: TFuncNested): String;
+    class function Test(const A, B: String): String;
+  end;
+
+class function TMyClass.CallFn(const A: String; const Fn: TFuncNested): String;
+begin
+  Result := Fn(A);
+end;
+
+class function TMyClass.Test(const A, B: String): String;
+begin
+  Result := CallFn(A, function (const P1: String): String begin
+      Result := P1 + B; // <-- SIGSEGV !!!
+    end);
+end;
+
+var
+  Sum: String;
+begin
+  Sum := TMyClass.Test('1', '2');
+  if Sum <> '12' then
+    Halt(1);
+  WriteLn('OK');
+end.
+