From 7df3367870a4db102023704b8d7e71754e86ff0f Mon Sep 17 00:00:00 2001 From: Mike <@fe80::348f:8ff6:a34c:c566%10> Date: Tue, 7 Feb 2012 11:06:52 +0100 Subject: [PATCH] Guard against storing the resolve result for variable name token twice in foreach statement. --- ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs index 67864dbde1..7bbc02e882 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs @@ -2528,7 +2528,9 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver } StoreCurrentState(foreachStatement.VariableNameToken); resolver = resolver.AddVariable(v); - StoreResult(foreachStatement.VariableNameToken, new LocalResolveResult(v)); + if (!resolveResultCache.ContainsKey(foreachStatement.VariableNameToken)) { + StoreResult(foreachStatement.VariableNameToken, new LocalResolveResult(v)); + } Scan(foreachStatement.EmbeddedStatement); resolver = resolver.PopBlock(); return voidResult;