Browse Source

Fixed "assertion problem". Failed code was:

--------------------------------
using System;
using System.Collections.Generic;
namespace MyApp
{
public interface ISubject<T>
{
}
public class Test<T,TRight,TLeft>
{
public void Foo (IObserver<T> observer)
{
var rightSubs = new List<ISubject<TRight>> ();
var rightVals = new List<TRight> ();
Observer.Create<TLeft> (v => {
ISubject<TRight> rsub = new ReplaySubject<TRight> ();
foreach (var r }, () => sub.OnCompleted ());
}
}
}
------------------------------------
newNRvisualizers
Mike Krüger 14 years ago
parent
commit
802cd23697
  1. 19
      ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs

19
ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs

@ -176,15 +176,16 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver @@ -176,15 +176,16 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
}
// We shouldn't scan nodes that were already resolved.
Debug.Assert(!resolveResultCache.ContainsKey(node));
// Doing so should be harmless since we allow scanning twice, but it indicates
// a bug in the logic that causes the scan.
bool oldResolverEnabled = resolverEnabled;
resolverEnabled = false;
StoreCurrentState(node);
node.AcceptVisitor(this, null);
resolverEnabled = oldResolverEnabled;
if (!resolveResultCache.ContainsKey(node)) {
// Doing so should be harmless since we allow scanning twice, but it indicates
// a bug in the logic that causes the scan.
bool oldResolverEnabled = resolverEnabled;
resolverEnabled = false;
StoreCurrentState(node);
node.AcceptVisitor(this, null);
resolverEnabled = oldResolverEnabled;
}
break;
case ResolveVisitorNavigationMode.Resolve:
Resolve(node);

Loading…
Cancel
Save