|
|
|
@ -259,9 +259,20 @@ namespace ICSharpCode.NRefactory.CSharp
@@ -259,9 +259,20 @@ namespace ICSharpCode.NRefactory.CSharp
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (expr.Parent is YieldReturnStatement) { |
|
|
|
|
var state = resolver.GetResolverStateBefore(expr); |
|
|
|
|
if (state != null && (state.CurrentMember.ReturnType is ParameterizedType)) { |
|
|
|
|
var pt = (ParameterizedType)state.CurrentMember.ReturnType; |
|
|
|
|
ParameterizedType pt = null; |
|
|
|
|
var parent = expr.Ancestors.FirstOrDefault(n => n is EntityDeclaration || n is AnonymousMethodExpression|| n is LambdaExpression); |
|
|
|
|
if (parent != null) { |
|
|
|
|
var rr = resolver.Resolve(parent); |
|
|
|
|
if (!rr.IsError) |
|
|
|
|
pt = rr.Type as ParameterizedType; |
|
|
|
|
} |
|
|
|
|
var e = parent as EntityDeclaration; |
|
|
|
|
if (e != null) { |
|
|
|
|
var rt = resolver.Resolve(e.ReturnType); |
|
|
|
|
if (!rt.IsError) |
|
|
|
|
pt = rt.Type as ParameterizedType; |
|
|
|
|
} |
|
|
|
|
if (pt != null) { |
|
|
|
|
if (pt.FullName == "System.Collections.Generic.IEnumerable") { |
|
|
|
|
return new [] { pt.TypeArguments.First() }; |
|
|
|
|
} |
|
|
|
|