diff --git a/TestSuite/interface5.pas b/TestSuite/interface5.pas new file mode 100644 index 000000000..1d92617a0 --- /dev/null +++ b/TestSuite/interface5.pas @@ -0,0 +1,19 @@ +type + I1 = interface + property p1: byte read write; + end; + //Ошибка: Класс t1 не реализует метод get_p1:byte интерфейса I1 + t1 = class(I1) + public b: byte; + b2: byte; + public property I1.p1: byte read b write b; + public property p1: byte read b2; + end; + +begin + var o: I1 := new t1; + o.p1 := 1; + assert(o.p1 = 1); + var o2 := o as t1; + assert(o2.p1 = 0); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/compiler_string_consts.cs b/TreeConverter/TreeConversion/compiler_string_consts.cs index 754baf67e..2fa70d801 100644 --- a/TreeConverter/TreeConversion/compiler_string_consts.cs +++ b/TreeConverter/TreeConversion/compiler_string_consts.cs @@ -389,10 +389,18 @@ namespace PascalABCCompiler.TreeConverter } public static string GetGetAccessorName(string name) { + if (name.IndexOf(".") != -1) + { + return string.Format("{0}get_{1}", name.Substring(0, name.LastIndexOf('.') + 1), name.Substring(name.LastIndexOf('.')+1)); + } return GetAccessorName("get_{0}", name); } public static string GetSetAccessorName(string name) { + if (name.IndexOf(".") != -1) + { + return string.Format("{0}set_{1}", name.Substring(0, name.LastIndexOf('.') + 1), name.Substring(name.LastIndexOf('.') + 1)); + } return GetAccessorName("set_{0}", name); } public static string GetAddHandler(string name)