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) {