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; } }