From a1aae548c60a32b078452b7962261be61c1faf2f Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Wed, 1 Nov 2023 19:14:25 +0100 Subject: [PATCH] #2866 --- TestSuite/explicitinterface13.pas | 12 ++++++++++++ TreeConverter/TreeConversion/compilation_context.cs | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 TestSuite/explicitinterface13.pas 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