diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs index 2d93b6dd28..5b8976775e 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs @@ -2529,9 +2529,11 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver } StoreCurrentState(foreachStatement.VariableNameToken); resolver = resolver.AddVariable(v); + if (!resolveResultCache.ContainsKey(foreachStatement.VariableNameToken)) { StoreResult(foreachStatement.VariableNameToken, new LocalResolveResult(v)); } + Scan(foreachStatement.EmbeddedStatement); resolver = resolver.PopBlock(); return voidResult; @@ -3181,9 +3183,12 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver ResolveResult target; if (memberType.IsDoubleColon && memberType.Target is SimpleType) { SimpleType t = (SimpleType)memberType.Target; - StoreCurrentState(t); + bool storeResult = !resolveResultCache.ContainsKey(t); + if (storeResult) + StoreCurrentState(t); target = resolver.ResolveAlias(t.Identifier); - StoreResult(t, target); + if (storeResult) + StoreResult(t, target); } else { target = Resolve(memberType.Target); }