From 3cb6bf1b83f1a7440589573573c6e6aa4b1dee61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Thu, 10 Dec 2015 08:26:52 +0100 Subject: Fixed 'Bug 36796 - NRE in assembly browser'. --- .../MonoDevelop.AssemblyBrowser/AssemblyLoader.cs | 26 ++++++++++------------ .../TreeNodes/AssemblyNodeBuilder.cs | 16 ++++++------- 2 files changed, 19 insertions(+), 23 deletions(-) (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser') diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs index 0942715e79..e510cd1e26 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs @@ -43,9 +43,9 @@ namespace MonoDevelop.AssemblyBrowser private set; } - Task assemblyLoaderTask; + Task> assemblyLoaderTask; - public Task LoadingTask { + public Task> LoadingTask { get { return assemblyLoaderTask; } @@ -56,34 +56,32 @@ namespace MonoDevelop.AssemblyBrowser public AssemblyDefinition Assembly { get { - return assemblyLoaderTask.Result; + return assemblyLoaderTask.Result.Item1; } } - - IUnresolvedAssembly unresolvedAssembly; + public IUnresolvedAssembly UnresolvedAssembly { get { - return unresolvedAssembly; + return assemblyLoaderTask.Result.Item2; } } public AssemblyLoader (AssemblyBrowserWidget widget, string fileName) { if (widget == null) - throw new ArgumentNullException ("widget"); + throw new ArgumentNullException (nameof (widget)); if (fileName == null) - throw new ArgumentNullException ("fileName"); + throw new ArgumentNullException (nameof (fileName)); this.widget = widget; - this.FileName = fileName; + FileName = fileName; if (!File.Exists (fileName)) - throw new ArgumentException ("File doesn't exist.", "fileName"); - this.assemblyLoaderTask = Task.Run (() => { + throw new ArgumentException ("File doesn't exist.", nameof (fileName)); + assemblyLoaderTask = Task.Run (() => { try { var asm = AssemblyDefinition.ReadAssembly (FileName, new ReaderParameters { AssemblyResolver = this }); - unresolvedAssembly = widget.CecilLoader.LoadAssembly (asm); - return asm; + return Tuple.Create (asm, widget.CecilLoader.LoadAssembly (asm)); } catch (Exception e) { LoggingService.LogError ("Error while reading assembly " + FileName, e); return null; @@ -120,7 +118,7 @@ namespace MonoDevelop.AssemblyBrowser public string LookupAssembly (string fullAssemblyName) { var assemblyFile = Runtime.SystemAssemblyService.DefaultAssemblyContext.GetAssemblyLocation (fullAssemblyName, null); - if (assemblyFile != null && System.IO.File.Exists (assemblyFile)) + if (assemblyFile != null && File.Exists (assemblyFile)) return assemblyFile; var name = AssemblyNameReference.Parse (fullAssemblyName); diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs index 21fdf47598..627885294c 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs @@ -34,10 +34,8 @@ using Mono.Cecil; using MonoDevelop.Core; using MonoDevelop.Ide.Gui; -using MonoDevelop.Ide.Gui.Pads; using MonoDevelop.Ide.Gui.Components; using System.Collections.Generic; -using ICSharpCode.NRefactory.TypeSystem; using System.IO; using MonoDevelop.Ide.Editor; @@ -67,17 +65,17 @@ namespace MonoDevelop.AssemblyBrowser nodeInfo.Icon = Context.GetIcon (Stock.Reference); } - public override void BuildChildNodes (ITreeBuilder builder, object dataObject) + public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject) { var compilationUnit = (AssemblyLoader)dataObject; var references = new AssemblyReferenceFolder (compilationUnit.Assembly); if (references.AssemblyReferences.Any () || references.ModuleReferences.Any ()) - builder.AddChild (references); + treeBuilder.AddChild (references); var resources = new AssemblyResourceFolder (compilationUnit.Assembly); if (resources.Resources.Any ()) - builder.AddChild (resources); + treeBuilder.AddChild (resources); var namespaces = new Dictionary (); bool publicOnly = Widget.PublicApiOnly; @@ -94,14 +92,14 @@ namespace MonoDevelop.AssemblyBrowser foreach (var ns in namespaces.Values) { if (publicOnly && !ns.Types.Any (t => t.IsPublic)) continue; - builder.AddChild (ns); + treeBuilder.AddChild (ns); } } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) { var compilationUnit = (AssemblyLoader)dataObject; - return compilationUnit.Assembly.MainModule.HasTypes; + return compilationUnit?.Assembly?.MainModule.HasTypes == true; } public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode) @@ -119,7 +117,7 @@ namespace MonoDevelop.AssemblyBrowser if (e2 == null) return -1; - return e1.Assembly.Name.Name.CompareTo (e2.Assembly.Name.Name); + return string.Compare (e1.Assembly.Name.Name, e2.Assembly.Name.Name, StringComparison.Ordinal); } catch (Exception e) { LoggingService.LogError ("Exception in assembly browser sort function.", e); return -1; @@ -131,7 +129,7 @@ namespace MonoDevelop.AssemblyBrowser { result.Append (""); result.Append ("// " + - String.Format (GettextCatalog.GetString ("Assembly {0}, Version {1}"), + string.Format (GettextCatalog.GetString ("Assembly {0}, Version {1}"), assemblyDefinition.Name.Name, assemblyDefinition.Name.Version)); result.Append (""); -- cgit v1.2.3