diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs index 9147c7cc71..0f268ccc0a 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs @@ -33,6 +33,7 @@ using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Semantics; +using ICSharpCode.NRefactory.TypeSystem.Implementation; namespace ICSharpCode.NRefactory.CSharp.Completion { @@ -444,11 +445,16 @@ namespace ICSharpCode.NRefactory.CSharp.Completion var csResolver = new CSharpResolver (ctx, System.Threading.CancellationToken.None); var navigator = new NodeListResolveVisitorNavigator (new[] { resolveNode }); + if (ProjectContent is SimpleProjectContent) + ((SimpleProjectContent)ProjectContent).UpdateProjectContent (CSharpParsedFile, file); var visitor = new ResolveVisitor (csResolver, file, navigator); + visitor.Scan (unit); // Print (unit); var state = visitor.GetResolverStateBefore (resolveNode); var result = visitor.GetResolveResult (resolveNode); + if (ProjectContent is SimpleProjectContent) + ((SimpleProjectContent)ProjectContent).UpdateProjectContent (file, CSharpParsedFile); return Tuple.Create (result, state); } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs index b053aeb4fd..0745a89ec6 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs @@ -925,6 +925,40 @@ namespace MyNamespace }); } + /// + /// Bug 1967 - [new resolver] Intellisense doesn't work + /// + [Test()] + public void TestBug1967 () + { + CombinedProviderTest ( +@" +namespace MyNamespace +{ + partial class FormMain + { + FormMain field1; + string field2; + } +} + +namespace MyNamespace +{ + public partial class FormMain + { + private void Bar() + { + $field1.$ + } + } +} +", provider => { + Assert.IsNotNull (provider.Find ("field1"), "field 'field1' not found."); + Assert.IsNotNull (provider.Find ("field2"), "field 'field2' not found."); + }); + } + + /// /// Bug 432434 - Code completion doesn't work with subclasses ///