From 37733573a5965f97ffeecf8fbf4a4e3d54b32b0d 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: Wed, 3 Oct 2018 21:21:24 +0200 Subject: [PATCH] fix #1265 --- TestSuite/generics24.pas | 13 +++++++++++++ TreeConverter/TreeRealization/generics.cs | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 TestSuite/generics24.pas diff --git a/TestSuite/generics24.pas b/TestSuite/generics24.pas new file mode 100644 index 000000000..b7de02d08 --- /dev/null +++ b/TestSuite/generics24.pas @@ -0,0 +1,13 @@ +type + at1 = abstract class + public constructor := exit; + end; + +procedure p1(o1: T1); +where T1: at1; +begin end; + +begin + var o: at1; + p1(o); +end. \ No newline at end of file diff --git a/TreeConverter/TreeRealization/generics.cs b/TreeConverter/TreeRealization/generics.cs index b46a66307..141fb2e3f 100644 --- a/TreeConverter/TreeRealization/generics.cs +++ b/TreeConverter/TreeRealization/generics.cs @@ -1334,6 +1334,8 @@ namespace PascalABCCompiler.TreeRealization public static bool type_has_default_ctor(type_node tn, bool find_protected_ctors) { + if (tn.is_generic_parameter && tn.base_type != null && tn.base_type.IsAbstract) + return false; List sil = tn.find_in_type(compiler_string_consts.default_constructor_name, tn.Scope); if (sil != null) {