diff --git a/TestSuite/abstract6.pas b/TestSuite/abstract6.pas new file mode 100644 index 000000000..edf809710 --- /dev/null +++ b/TestSuite/abstract6.pas @@ -0,0 +1,18 @@ +{$reference l1.dll} + +type + c0 = class end; + + // обязательно использовать кастомный тип в качестве типоаргумента + // с ns.c2 не проявляется + c3 = class(ns.c2) + procedure test; + begin + f1(); + end; + end; + +begin + var obj := new c3; + +end. \ No newline at end of file diff --git a/TestSuite/l1.dll b/TestSuite/l1.dll new file mode 100644 index 000000000..a81af485c Binary files /dev/null and b/TestSuite/l1.dll differ diff --git a/TreeConverter/TreeRealization/generics.cs b/TreeConverter/TreeRealization/generics.cs index 96e044663..72923fb04 100644 --- a/TreeConverter/TreeRealization/generics.cs +++ b/TreeConverter/TreeRealization/generics.cs @@ -1824,6 +1824,13 @@ namespace PascalABCCompiler.TreeRealization cmn.return_variable = (orig_fn as common_function_node)?.return_variable; } cmn.IsOperator = orig_fn.IsOperator; + if (orig_fn is compiled_function_node) + { + compiled_function_node fn_orig = orig_fn as compiled_function_node; + if (fn_orig.method_info.GetBaseDefinition() != null) + cmn.overrided_method = compiled_function_node.get_compiled_method(fn_orig.method_info.GetBaseDefinition()); + } + return cmn; }