diff --git a/TestSuite/abstract2.pas b/TestSuite/abstract2.pas new file mode 100644 index 000000000..0cf50ddcd --- /dev/null +++ b/TestSuite/abstract2.pas @@ -0,0 +1,21 @@ +type + I1 = interface + + function f1: byte; + + end; + AC1 = abstract class(I1) + + public function f1: byte; abstract; + + end; + C1 = class(AC1) + + public function f1: byte; override := 1; + + end; + +begin + var c: I1 := new C1; + assert(c.f1=1); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/compilation_context.cs b/TreeConverter/TreeConversion/compilation_context.cs index 8fda4c3fc..732e52a5b 100644 --- a/TreeConverter/TreeConversion/compilation_context.cs +++ b/TreeConverter/TreeConversion/compilation_context.cs @@ -2677,7 +2677,7 @@ namespace PascalABCCompiler.TreeConverter continue; fn = si.sym_info as function_node; //Сверяем параметры и тип возвращаемого значения - if (convertion_data_and_alghoritms.function_eq_params_and_result(meth, fn, true) && fn.polymorphic_state != SemanticTree.polymorphic_state.ps_virtual_abstract) + if (convertion_data_and_alghoritms.function_eq_params_and_result(meth, fn, true) /*&& fn.polymorphic_state != SemanticTree.polymorphic_state.ps_virtual_abstract*/) { //Нашли нужную функцию common_method_node fn_common = fn as common_method_node;