diff --git a/TestSuite/explicitinterface13.pas b/TestSuite/explicitinterface13.pas new file mode 100644 index 000000000..000986199 --- /dev/null +++ b/TestSuite/explicitinterface13.pas @@ -0,0 +1,12 @@ +type + i1 = interface + procedure p1; + end; + //Ошибка: Функция класса c1, реализующая метод p1 интерфейса i1, должна быть нестатической с уровнем доступа public + c1 = class(i1) + procedure i1.p1 := exit; + end; + +begin + var obj := new c1; +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/compilation_context.cs b/TreeConverter/TreeConversion/compilation_context.cs index 635b1dc84..f378c06e5 100644 --- a/TreeConverter/TreeConversion/compilation_context.cs +++ b/TreeConverter/TreeConversion/compilation_context.cs @@ -2895,7 +2895,8 @@ namespace PascalABCCompiler.TreeConverter commn.field_access_level != SemanticTree.field_access_level.fal_public || commn.is_constructor) { - bad = true; + if (!(commn.name.IndexOf(".") != -1 && commn.field_access_level != SemanticTree.field_access_level.fal_public)) + bad = true; } } else