diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2015-08-13 08:43:11 +0300 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2015-08-13 08:43:33 +0300 |
commit | 370eebb40013533b6db62775f6ce6c1039d36a04 (patch) | |
tree | a08b312f2a038bb2cac5429d6674bef43b6fdf89 /main/src/addins/MonoDevelop.AssemblyBrowser | |
parent | f7de89807c9fd74124dcc26d5c37051e4b5e5ad4 (diff) |
Fixed 'Bug 33041 - Go-to-definition against a type inside
Microsoft.mshtml.dll freezes all of XS'.
Diffstat (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser')
-rw-r--r-- | main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs index 5a1b069cc6..54ad286a35 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs @@ -129,6 +129,38 @@ namespace MonoDevelop.AssemblyBrowser return referencedSegment.Reference.ToString (); } + class FastNonInterningProvider : InterningProvider + { + Dictionary<string, string> stringDict = new Dictionary<string, string>(); + + public override string Intern (string text) + { + if (text == null) + return null; + + string output; + if (stringDict.TryGetValue(text, out output)) + return output; + stringDict [text] = text; + return text; + } + + public override ISupportsInterning Intern (ISupportsInterning obj) + { + return obj; + } + + public override IList<T> InternList<T>(IList<T> list) + { + return list; + } + + public override object InternValue (object obj) + { + return obj; + } + } + public AssemblyBrowserWidget () { this.Build (); @@ -183,6 +215,7 @@ namespace MonoDevelop.AssemblyBrowser languageCombobox.Changed += LanguageComboboxhandleChanged; loader = new CecilLoader (true); + loader.InterningProvider = new FastNonInterningProvider (); loader.IncludeInternalMembers = true; TreeView = new AssemblyBrowserTreeView (new NodeBuilder[] { new ErrorNodeBuilder (), |