From f0c3caffd77de329b19816a1e6a682560274cac0 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 6 Feb 2009 16:05:41 +0000 Subject: [PATCH] Fixed forum-8965: "+=" code completion for events did not work if delegate was declared in source code. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3793 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs | 14 ++++---------- .../Project/Src/Implementations/SystemTypes.cs | 4 +++- .../NRefactoryASTConvertVisitor.cs | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs index a2b9a44610..fdf4697497 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs @@ -6,6 +6,7 @@ // using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; @@ -328,16 +329,9 @@ namespace ICSharpCode.SharpDevelop.Project /// void DeleteChildNodes() { - if (Nodes.Count == 0) return; - - foreach (TreeNode node in Nodes) { - FileNode fileNode = node as FileNode; - if (fileNode != null) { - fileNode.DeleteChildNodes(); // delete recursively - FileService.RemoveFile(fileNode.FileName, false); - } else { - LoggingService.Warn("FileNode.DeleteChildren. Child is not a FileNode."); - } + foreach (FileNode fileNode in Nodes.OfType().ToList()) { + fileNode.DeleteChildNodes(); // delete recursively + FileService.RemoveFile(fileNode.FileName, false); } } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SystemTypes.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SystemTypes.cs index f972323738..d6fb933640 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SystemTypes.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SystemTypes.cs @@ -15,6 +15,7 @@ namespace ICSharpCode.SharpDevelop.Dom public readonly IReturnType Void; public readonly IReturnType Object; public readonly IReturnType Delegate; + public readonly IReturnType MulticastDelegate; public readonly IReturnType ValueType; public readonly IReturnType Enum; @@ -39,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Dom Void = new VoidReturnType(pc); Object = CreateFromName("System.Object"); Delegate = CreateFromName("System.Delegate"); + MulticastDelegate = CreateFromName("System.MulticastDelegate"); ValueType = CreateFromName("System.ValueType"); Enum = CreateFromName("System.Enum"); @@ -53,7 +55,7 @@ namespace ICSharpCode.SharpDevelop.Dom Exception = CreateFromName("System.Exception"); AsyncCallback = CreateFromName("System.AsyncCallback"); IAsyncResult = CreateFromName("System.IAsyncResult"); - IAsyncResult = CreateFromName("System.IDisposable"); + IDisposable = CreateFromName("System.IDisposable"); } IReturnType CreateFromName(string name) diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs index 71aadbacf4..527fa94f6c 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs @@ -472,7 +472,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver void CreateDelegate(DefaultClass c, string name, AST.TypeReference returnType, IList templates, IList parameters) { - c.BaseTypes.Add(c.ProjectContent.SystemTypes.Delegate); + c.BaseTypes.Add(c.ProjectContent.SystemTypes.MulticastDelegate); if (currentClass.Count > 0) { DefaultClass cur = GetCurrentClass(); cur.InnerClasses.Add(c);