From 1482a35bdf1c0a8613c3ee27c0a732771ff8c6d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Thu, 4 Oct 2018 12:42:54 +0200 Subject: [PATCH] fix #1098 --- .../ProcessYieldsCapturedVars.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs b/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs index 43582d485..ffbe1f261 100644 --- a/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs +++ b/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs @@ -408,7 +408,7 @@ namespace SyntaxVisitors { // Метод класса описан вне класса - return UpperTo().list + cd = UpperTo().list .OfType() .SelectMany(tdecls => tdecls.types_decl) .Where(td => td.type_name.name == GetClassName(pd).name) @@ -416,6 +416,23 @@ namespace SyntaxVisitors .Where(_cd => _cd != null) .DefaultIfEmpty() .First(); + if (cd == null) + { + implementation_node impl = UpperTo(); + if (impl != null) + { + cd = (impl.Parent as unit_module).interface_part.interface_definitions.list + .OfType() + .SelectMany(tdecls => tdecls.types_decl) + .Where(td => td.type_name.name == GetClassName(pd).name) + .Select(td => td.type_def as class_definition) + .Where(_cd => _cd != null) + .DefaultIfEmpty() + .First(); + } + } + + return cd; } }