Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <llsan@microsoft.com>2019-03-21 03:02:26 +0300
committerLluis Sanchez <llsan@microsoft.com>2019-03-21 12:08:48 +0300
commite466141ef7b2c39585e29f94c28f6deb82e8be97 (patch)
treea8e8661e23ea0eac955ea0fe106f14453f8997cf /main/src/addins/MonoDevelop.AssemblyBrowser
parentea8b962d5ed27ad8dd52594124d35eb0bea4b714 (diff)
parent228695e2dc646fb2ad812c06bebfe33ca9f69601 (diff)
Merge branch 'new-service-model' into new-doc-model
Diffstat (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser')
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/Makefile.am1
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj48
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.SearchIdleRunner.cs41
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs88
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs69
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyReferenceFolder.cs27
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyResourceFolder.cs12
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs5
-rwxr-xr-xmain/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ColoredCSharpFormatter.cs88
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/MetadataExtensions.cs62
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs7
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs5
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceNodeBuilder.cs14
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs8
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/AssemblyNodeBuilder.cs32
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/EventDefinitionNodeBuilder.cs42
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/FieldDefinitionNodeBuilder.cs52
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/MethodDefinitionNodeBuilder.cs74
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/PropertyDefinitionNodeBuilder.cs60
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/TypeDefinitionNodeBuilder.cs86
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ErrorNodeBuilder.cs2
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ModuleReferenceNodeBuilder.cs13
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/NamespaceData.cs1
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ResourceNodeBuilder.cs10
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Roslyn/ProjectNodeBuilder.cs4
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/Util/CSharpLanguage.cs786
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/XmlDocIdLib/XmlDocIdGenerator.cs1288
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/packages.config4
28 files changed, 1475 insertions, 1454 deletions
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/Makefile.am b/main/src/addins/MonoDevelop.AssemblyBrowser/Makefile.am
deleted file mode 100644
index c9cc87438f..0000000000
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-include $(top_srcdir)/xbuild.include
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
index 40d6c6408e..88a8e5c326 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
@@ -8,54 +8,18 @@
<TargetFrameworkVersion>$(MDFrameworkVersion)</TargetFrameworkVersion>
<OutputPath>..\..\..\build\AddIns\DisplayBindings\AssemblyBrowser</OutputPath>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+ <!--
+ This needs to be ported to the new editor, and currently makes use of many deprecated APIs.
+ -->
+ <NoWarn>$(NoWarn);618;612</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
<ItemGroup>
<Reference Include="System" />
- <Reference Include="ICSharpCode.Decompiler">
- <HintPath>..\..\..\packages\ICSharpCode.Decompiler.3.2.0.3856\lib\net46\ICSharpCode.Decompiler.dll</HintPath>
- <Private>false</Private>
- </Reference>
<Reference Include="System.Core" />
<Reference Include="monodoc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
<Reference Include="System.Xml" />
- <Reference Include="System.Reflection.Metadata">
- <HintPath>..\..\..\build\bin\System.Reflection.Metadata.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="System.Collections.Immutable">
- <HintPath>..\..\..\build\bin\System.Collections.Immutable.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="Microsoft.CodeAnalysis">
- <HintPath>..\..\..\build\bin\Microsoft.CodeAnalysis.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="Mono.Cecil">
- <HintPath>..\..\..\packages\Mono.Cecil.0.10.0-beta6\lib\net40\Mono.Cecil.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="Mono.Cecil.Mdb">
- <HintPath>..\..\..\packages\Mono.Cecil.0.10.0-beta6\lib\net40\Mono.Cecil.Mdb.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="Mono.Cecil.Pdb">
- <HintPath>..\..\..\packages\Mono.Cecil.0.10.0-beta6\lib\net40\Mono.Cecil.Pdb.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="Mono.Cecil.Rocks">
- <HintPath>..\..\..\packages\Mono.Cecil.0.10.0-beta6\lib\net40\Mono.Cecil.Rocks.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="System.ValueTuple">
- <HintPath>..\..\..\build\bin\System.ValueTuple.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="Microsoft.CodeAnalysis.Workspaces">
- <HintPath>..\..\..\build\bin\Microsoft.CodeAnalysis.Workspaces.dll</HintPath>
- <Private>False</Private>
- </Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
@@ -137,12 +101,10 @@
<Compile Include="MonoDevelop.AssemblyBrowser\AssemblyBrowserHandler.cs" />
<Compile Include="MonoDevelop.AssemblyBrowser\AssemblyBrowserWidget.AssemblyBrowserTreeView.cs" />
<Compile Include="MonoDevelop.AssemblyBrowser\AssemblyBrowserWidget.SearchIdleRunner.cs" />
+ <Compile Include="MonoDevelop.AssemblyBrowser\MetadataExtensions.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MonoDevelop.AssemblyBrowser.addin.xml" />
</ItemGroup>
- <ItemGroup>
- <None Include="packages.config" />
- </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.SearchIdleRunner.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.SearchIdleRunner.cs
index 88fc84e688..93f46c4277 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.SearchIdleRunner.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.SearchIdleRunner.cs
@@ -28,12 +28,12 @@
using System;
using System.Collections.Generic;
-
-using Mono.Cecil;
+
using MonoDevelop.Ide;
using System.Threading;
using MonoDevelop.Core.Text;
using System.Collections.Immutable;
+using ICSharpCode.Decompiler.TypeSystem;
namespace MonoDevelop.AssemblyBrowser
{
@@ -43,7 +43,7 @@ namespace MonoDevelop.AssemblyBrowser
{
readonly AssemblyBrowserWidget assemblyBrowserWidget;
readonly CancellationToken token;
- readonly List<IMemberDefinition> memberList = new List<IMemberDefinition> ();
+ readonly List<IEntity> memberList = new List<IEntity> ();
readonly bool publicOnly;
readonly string pattern;
readonly ImmutableList<AssemblyLoader> definitions;
@@ -52,7 +52,7 @@ namespace MonoDevelop.AssemblyBrowser
bool fillStepFinished;
int currentDefinition;
int i = 0;
- IEnumerator<TypeDefinition> currentTypeEnumerator;
+ IEnumerator<ITypeDefinition> currentTypeEnumerator;
public SearchIdleRunner (AssemblyBrowserWidget assemblyBrowserWidget, string pattern, CancellationToken token)
{
@@ -102,8 +102,9 @@ namespace MonoDevelop.AssemblyBrowser
return;
}
var unit = definitions [currentDefinition];
+ var typeSystem = unit.DecompilerTypeSystem;
if (currentTypeEnumerator == null) {
- currentTypeEnumerator = unit.Assembly.MainModule.Types.GetEnumerator ();
+ currentTypeEnumerator = typeSystem.GetAllTypeDefinitions ().GetEnumerator ();
if (!currentTypeEnumerator.MoveNext ()) {
currentTypeEnumerator = null;
currentDefinition++;
@@ -121,14 +122,12 @@ namespace MonoDevelop.AssemblyBrowser
case SearchMode.Member:
if (token.IsCancellationRequested)
return;
- if (!type.IsPublic && publicOnly)
+ if (!type.IsPublic () && publicOnly)
return;
foreach (var member in type.Methods) {
if (token.IsCancellationRequested)
return;
- if (!member.IsPublic && publicOnly)
- continue;
- if (member.IsSpecialName || member.IsRuntimeSpecialName)
+ if (!member.IsPublic () && publicOnly)
continue;
if (matcher.IsMatch (member.Name))
memberList.Add (member);
@@ -136,9 +135,7 @@ namespace MonoDevelop.AssemblyBrowser
foreach (var member in type.Fields) {
if (token.IsCancellationRequested)
return;
- if (!member.IsPublic && publicOnly)
- continue;
- if (member.IsSpecialName || member.IsRuntimeSpecialName)
+ if (!member.IsPublic () && publicOnly)
continue;
if (matcher.IsMatch (member.Name))
memberList.Add (member);
@@ -146,10 +143,8 @@ namespace MonoDevelop.AssemblyBrowser
foreach (var member in type.Properties) {
if (token.IsCancellationRequested)
return;
- var accessor = member.GetMethod ?? member.SetMethod;
- if (!accessor.IsPublic && publicOnly)
- continue;
- if (member.IsSpecialName || member.IsRuntimeSpecialName)
+ var accessor = member.Getter ?? member.Setter;
+ if (!accessor.IsPublic () && publicOnly)
continue;
if (matcher.IsMatch (member.Name))
memberList.Add (member);
@@ -157,19 +152,17 @@ namespace MonoDevelop.AssemblyBrowser
foreach (var member in type.Events) {
if (token.IsCancellationRequested)
return;
- if (member.IsSpecialName || member.IsRuntimeSpecialName)
- continue;
- var accessor = member.AddMethod ?? member.RemoveMethod;
- if (!accessor.IsPublic && publicOnly)
+ var accessor = member.AddAccessor ?? member.RemoveAccessor;
+ if (!accessor.IsPublic () && publicOnly)
continue;
if (matcher.IsMatch (member.Name))
memberList.Add (member);
}
break;
case SearchMode.Type:
- if (!type.IsPublic && publicOnly)
+ if (!type.IsPublic () && publicOnly)
return;
- if (type.IsSpecialName || type.IsRuntimeSpecialName || type.Name == "<Module>")
+ if (type.Name == "<Module>")
return;
if (matcher.IsMatch (type.FullName))
memberList.Add (type);
@@ -177,9 +170,9 @@ namespace MonoDevelop.AssemblyBrowser
case SearchMode.TypeAndMembers:
if (token.IsCancellationRequested)
return;
- if (!type.IsPublic && publicOnly)
+ if (!type.IsPublic () && publicOnly)
return;
- if (type.IsSpecialName || type.IsRuntimeSpecialName || type.Name == "<Module>")
+ if (type.Name == "<Module>")
return;
if (matcher.IsMatch (type.FullName))
memberList.Add (type);
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
index 9da9528358..4744bf114f 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
@@ -33,7 +33,6 @@ using System.Text;
using System.Xml;
using Gtk;
-using Mono.Cecil;
using MonoDevelop.Components.Commands;
using MonoDevelop.Core;
using MonoDevelop.Ide;
@@ -42,6 +41,8 @@ using MonoDevelop.Ide.Gui.Components;
using System.Linq;
using MonoDevelop.Ide.TypeSystem;
using ICSharpCode.Decompiler.TypeSystem;
+using ICSharpCode.Decompiler.Metadata;
+using ICSharpCode.Decompiler.Documentation;
using MonoDevelop.Projects;
using ICSharpCode.Decompiler.TypeSystem.Implementation;
using XmlDocIdLib;
@@ -93,6 +94,10 @@ namespace MonoDevelop.AssemblyBrowser
if (referencedSegment == null)
return null;
+ return null;
+
+ // TODO fixme
+ /*
var td = referencedSegment.Reference as TypeDefinition;
if (td != null) {
isNotPublic = !td.IsPublic;
@@ -128,6 +133,7 @@ namespace MonoDevelop.AssemblyBrowser
}
return referencedSegment.Reference.ToString ();
+ */
}
@@ -208,7 +214,6 @@ namespace MonoDevelop.AssemblyBrowser
new ErrorNodeBuilder (),
new ProjectNodeBuilder (this),
new AssemblyNodeBuilder (this),
- new ModuleReferenceNodeBuilder (),
new AssemblyReferenceNodeBuilder (this),
//new AssemblyReferenceFolderNodeBuilder (this),
new AssemblyResourceFolderNodeBuilder (),
@@ -260,7 +265,7 @@ namespace MonoDevelop.AssemblyBrowser
notebook1.Page = 0;
//this.searchWidget.Visible = false;
- resultListStore = new Gtk.ListStore (typeof(IMemberDefinition));
+ resultListStore = new Gtk.ListStore (typeof(IMember));
CreateColumns ();
// this.searchEntry.Changed += SearchEntryhandleChanged;
@@ -332,7 +337,7 @@ namespace MonoDevelop.AssemblyBrowser
{
TreeIter selectedIter;
if (searchTreeview.Selection.GetSelected (out selectedIter)) {
- var member = (IMemberDefinition)resultListStore.GetValue (selectedIter, 0);
+ var member = (IMember)resultListStore.GetValue (selectedIter, 0);
var nav = SearchMember (member);
if (nav != null) {
@@ -365,9 +370,10 @@ namespace MonoDevelop.AssemblyBrowser
TreeView.GrabFocus ();
}
- ITreeNavigator SearchMember (IMemberDefinition member, bool expandNode = true)
+ ITreeNavigator SearchMember (IMember member, bool expandNode = true)
{
- return SearchMember (Mono.Cecil.Rocks.DocCommentId.GetDocCommentId (member), expandNode);
+ //return SearchMember (Mono.Cecil.Rocks.DocCommentId.GetDocCommentId (member), expandNode);
+ return SearchMember (member.ReflectionName, expandNode);
}
ITreeNavigator SearchMember (string helpUrl, bool expandNode = true)
@@ -376,24 +382,23 @@ namespace MonoDevelop.AssemblyBrowser
if (nav != null)
return nav;
// Constructor may be a generated default without implementation.
- var ctorIdx = helpUrl.IndexOf (".#ctor", StringComparison.Ordinal);
- if (helpUrl.StartsWith ("M:", StringComparison.Ordinal) && ctorIdx > 0) {
- return SearchMember ("T" + helpUrl.Substring (1, ctorIdx - 1), expandNode);
- }
+ //var ctorIdx = helpUrl.IndexOf (".#ctor", StringComparison.Ordinal);
+ //if (helpUrl.StartsWith ("M:", StringComparison.Ordinal) && ctorIdx > 0) {
+ // return SearchMember ("T" + helpUrl.Substring (1, ctorIdx - 1), expandNode);
+ //}
return null;
}
bool IsMatch (ITreeNavigator nav, string helpUrl, bool searchType)
{
- var member = nav.DataItem as IMemberDefinition;
- if (member == null)
- return false;
- return Mono.Cecil.Rocks.DocCommentId.GetDocCommentId (member) == helpUrl;
+ if (nav.DataItem is IEntity entity)
+ return entity.GetIdString () == helpUrl;
+ return false;
}
static bool SkipChildren (ITreeNavigator nav, string helpUrl, bool searchType)
{
- if (nav.DataItem is IMemberDefinition && !(nav.DataItem is TypeDefinition))
+ if (nav.DataItem is IMember && !(nav.DataItem is ITypeDefinition))
return true;
if (nav.DataItem is BaseTypeFolder)
return true;
@@ -411,7 +416,7 @@ namespace MonoDevelop.AssemblyBrowser
int idx = helpUrl.IndexOf ('~', startIndex);
if (idx > 0)
endIndex = idx;
- var type = nav.DataItem as TypeDefinition;
+ var type = nav.DataItem as ITypeDefinition;
if (type != null && helpUrl.IndexOf (type.FullName, startIndex, Math.Min (endIndex - startIndex, type.FullName.Length), StringComparison.Ordinal) == -1)
return true;
var @namespace = nav.DataItem as NamespaceData;
@@ -544,14 +549,14 @@ namespace MonoDevelop.AssemblyBrowser
void RenderDeclaringTypeOrNamespace (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter)
{
var ct = (Gtk.CellRendererText)cell;
- var entity = tree_model.GetValue (iter, 0) as IMemberDefinition;
+ var entity = tree_model.GetValue (iter, 0) as IEntity;
if (entity != null) {
if (entity.DeclaringType != null) {
ct.Text = entity.DeclaringType.FullName;
return;
}
- if (entity is TypeDefinition) {
- ct.Text = ((TypeDefinition)entity).Namespace;
+ if (entity is ITypeDefinition type) {
+ ct.Text = type.Namespace;
} else {
ct.Text = entity.DeclaringType.Namespace;
}
@@ -561,7 +566,7 @@ namespace MonoDevelop.AssemblyBrowser
void RenderText (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter)
{
var ct = (Gtk.CellRendererText)cell;
- var entity = tree_model.GetValue (iter, 0) as IMemberDefinition;
+ var entity = tree_model.GetValue (iter, 0) as INamedElement;
if (entity != null)
ct.Text = entity.Name;
}
@@ -569,32 +574,28 @@ namespace MonoDevelop.AssemblyBrowser
void RenderImage (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter)
{
var ct = (CellRendererImage)cell;
- var evt = tree_model.GetValue (iter, 0) as EventDefinition;
- if (evt != null) {
+ var entity = tree_model.GetValue (iter, 0) as IEntity;
+ if (entity is IEvent evt) {
ct.Image = ImageService.GetIcon (EventDefinitionNodeBuilder.GetStockIcon (evt), Gtk.IconSize.Menu);
return;
}
- var field = tree_model.GetValue (iter, 0) as FieldDefinition;
- if (field != null) {
+ if (entity is IField field) {
ct.Image = ImageService.GetIcon (FieldDefinitionNodeBuilder.GetStockIcon (field), Gtk.IconSize.Menu);
return;
}
- var method = tree_model.GetValue (iter, 0) as MethodDefinition;
- if (method != null) {
+ if (entity is IMethod method) {
ct.Image = ImageService.GetIcon (MethodDefinitionNodeBuilder.GetStockIcon (method), Gtk.IconSize.Menu);
return;
}
- var property = tree_model.GetValue (iter, 0) as PropertyDefinition;
- if (property != null) {
+ if (entity is IProperty property) {
ct.Image = ImageService.GetIcon (PropertyDefinitionNodeBuilder.GetStockIcon (property), Gtk.IconSize.Menu);
return;
}
-
- var type = tree_model.GetValue (iter, 0) as TypeDefinition;
- if (type != null) {
+
+ if (entity is ITypeDefinition type) {
ct.Image = ImageService.GetIcon (TypeDefinitionNodeBuilder.GetStockIcon (type), Gtk.IconSize.Menu);
return;
}
@@ -971,13 +972,13 @@ namespace MonoDevelop.AssemblyBrowser
int i = 0;
System.Action loadNext = null;
- var references = cecilObject.MainModule.AssemblyReferences;
+ var references = cecilObject.AssemblyReferences;
loadNext = () => {
var reference = references [i];
string fileName = currentAssembly.LookupAssembly (reference.FullName);
if (string.IsNullOrEmpty (fileName)) {
LoggingService.LogWarning ("Assembly browser: Can't find assembly: " + reference.FullName + ".");
- if (++i == references.Count)
+ if (++i == references.Length)
LoggingService.LogError ("Assembly browser: Can't find: " + url + ".");
else
loadNext ();
@@ -992,7 +993,7 @@ namespace MonoDevelop.AssemblyBrowser
Application.Invoke ((o, args) => {
var nav = SearchMember (url, expandNode);
if (nav == null) {
- if (++i == references.Count)
+ if (++i == references.Length)
LoggingService.LogError ("Assembly browser: Can't find: " + url + ".");
else
loadNext ();
@@ -1011,8 +1012,8 @@ namespace MonoDevelop.AssemblyBrowser
LoggingService.LogWarning ("Assembly browser: Can't find assembly: " + definition.Assembly.FullName + ".");
continue;
}
- foreach (var assemblyNameReference in cecilObject.MainModule.AssemblyReferences) {
- var result = AddReferenceByAssemblyName (assemblyNameReference);
+ foreach (var assemblyNameReference in cecilObject.AssemblyReferences) {
+ var result = AddReferenceByAssemblyName (assemblyNameReference.FullName);
if (result == null) {
LoggingService.LogWarning ("Assembly browser: Can't find assembly: " + assemblyNameReference.FullName + ".");
} else {
@@ -1051,7 +1052,7 @@ namespace MonoDevelop.AssemblyBrowser
internal void SelectAssembly (AssemblyLoader loader)
{
- AssemblyDefinition cu = loader.Assembly;
+ PEFile cu = loader.Assembly;
Application.Invoke ((o, args) => {
ITreeNavigator nav = TreeView.GetRootNode ();
if (nav == null)
@@ -1097,7 +1098,7 @@ namespace MonoDevelop.AssemblyBrowser
nav.MoveToFirstChild ();
do {
- if (nav.DataItem is AssemblyDefinition d)
+ if (nav.DataItem is PEFile d)
d.Dispose ();
} while (nav.MoveNext ());
nav.MoveToParent ();
@@ -1152,9 +1153,9 @@ namespace MonoDevelop.AssemblyBrowser
ImmutableList<AssemblyLoader> definitions = ImmutableList<AssemblyLoader>.Empty;
List<Project> projects = new List<Project> ();
- internal AssemblyLoader AddReferenceByAssemblyName (AssemblyNameReference reference, bool expand = false)
+ internal AssemblyLoader AddReferenceByAssemblyName (PEFile reference, bool expand = false)
{
- return AddReferenceByAssemblyName (reference.Name, expand, querySearch: false);
+ return AddReferenceByAssemblyName (reference.FullName, expand, querySearch: false);
}
internal AssemblyLoader AddReferenceByAssemblyName (string assemblyFullName, bool expand = false, bool querySearch = true)
@@ -1242,7 +1243,7 @@ namespace MonoDevelop.AssemblyBrowser
void HandleCursorChanged (object sender, EventArgs e)
{
if (!suspendNavigation) {
- var selectedEntity = TreeView.GetSelectedNode ()?.DataItem as IMemberDefinition;
+ var selectedEntity = TreeView.GetSelectedNode ()?.DataItem as IEntity;
if (selectedEntity != null)
IdeServices.NavigationHistoryService.LogActiveDocument ();
}
@@ -1253,11 +1254,12 @@ namespace MonoDevelop.AssemblyBrowser
public NavigationPoint BuildNavigationPoint ()
{
var node = TreeView.GetSelectedNode ();
- var selectedEntity = node?.DataItem as IMemberDefinition;
+ var selectedEntity = node?.DataItem as INamedElement;
AssemblyLoader loader = null;
if (selectedEntity != null) {
loader = (AssemblyLoader)this.TreeView.GetSelectedNode ().GetParentDataItem (typeof (AssemblyLoader), true);
- return new AssemblyBrowserNavigationPoint (definitions, loader, Mono.Cecil.Rocks.DocCommentId.GetDocCommentId (selectedEntity));
+ // TODO: fix this
+ return new AssemblyBrowserNavigationPoint (definitions, loader, selectedEntity.ReflectionName);
}
loader = node?.DataItem as AssemblyLoader;
if (loader != null)
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs
index 9f49f87521..4f132fb1e1 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs
@@ -24,7 +24,6 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
-using Mono.Cecil;
using ICSharpCode.Decompiler.CSharp;
using ICSharpCode.Decompiler.TypeSystem;
using System.Threading.Tasks;
@@ -32,10 +31,14 @@ using MonoDevelop.Core;
using System.IO;
using System.Threading;
using System.Collections.Generic;
+using ICSharpCode.Decompiler.Metadata;
+using System.Reflection.Metadata;
+using System.Linq;
+
namespace MonoDevelop.AssemblyBrowser
{
- class AssemblyLoader : IAssemblyResolver, IDisposable
+ class AssemblyLoader : IDisposable
{
readonly CancellationTokenSource src = new CancellationTokenSource ();
readonly AssemblyBrowserWidget widget;
@@ -45,10 +48,10 @@ namespace MonoDevelop.AssemblyBrowser
private set;
}
- Task<AssemblyDefinition> assemblyLoaderTask;
- TaskCompletionSource<AssemblyDefinition> assemblyDefinitionTaskSource;
+ Task<PEFile> assemblyLoaderTask;
+ TaskCompletionSource<PEFile> assemblyDefinitionTaskSource;
- public Task<AssemblyDefinition> LoadingTask {
+ public Task<PEFile> LoadingTask {
get {
return assemblyLoaderTask;
}
@@ -57,12 +60,12 @@ namespace MonoDevelop.AssemblyBrowser
}
}
- public AssemblyDefinition Assembly => AssemblyTask.Result;
- public Task<AssemblyDefinition> AssemblyTask => assemblyDefinitionTaskSource.Task;
+ public PEFile Assembly => AssemblyTask.Result;
+ public Task<PEFile> AssemblyTask => assemblyDefinitionTaskSource.Task;
- public ModuleDefinition ModuleDefinition {
+ public MetadataReader ModuleDefinition {
get {
- return assemblyLoaderTask.Result.MainModule;
+ return assemblyLoaderTask.Result.Metadata;
}
}
@@ -82,8 +85,7 @@ namespace MonoDevelop.AssemblyBrowser
public DecompilerTypeSystem DecompilerTypeSystem {
get {
if (decompilerTypeSystem == null) {
- decompilerTypeSystem = new DecompilerTypeSystem (Assembly.MainModule);
-
+ decompilerTypeSystem = new DecompilerTypeSystem (Assembly, new AssemblyResolver (widget));
}
return decompilerTypeSystem;
}
@@ -102,15 +104,13 @@ namespace MonoDevelop.AssemblyBrowser
if (!File.Exists (fileName))
throw new ArgumentException ("File doesn't exist.", nameof (fileName));
- assemblyDefinitionTaskSource = new TaskCompletionSource<AssemblyDefinition> ();
+ assemblyDefinitionTaskSource = new TaskCompletionSource<PEFile> ();
assemblyLoaderTask = Task.Run (() => {
try {
- var assemblyDefinition = AssemblyDefinition.ReadAssembly (FileName, new ReaderParameters {
- AssemblyResolver = this
- });
- assemblyDefinitionTaskSource.SetResult (assemblyDefinition);
- return assemblyDefinition;
+ var peFile = new PEFile (FileName, System.Reflection.PortableExecutable.PEStreamOptions.PrefetchEntireImage);
+ assemblyDefinitionTaskSource.SetResult (peFile);
+ return peFile;
} catch (Exception e) {
LoggingService.LogError ("Error while reading assembly " + FileName, e);
Error = new Error(e.Message);
@@ -120,6 +120,27 @@ namespace MonoDevelop.AssemblyBrowser
});
}
+ class AssemblyResolver : IAssemblyResolver
+ {
+ readonly AssemblyBrowserWidget widget;
+ public AssemblyResolver (AssemblyBrowserWidget widget)
+ {
+ this.widget = widget;
+ }
+
+ public PEFile Resolve (IAssemblyReference reference)
+ {
+ var loader = widget.AddReferenceByAssemblyName (reference.FullName);
+ return loader != null ? loader.Assembly : null;
+ }
+
+ public PEFile ResolveModule (PEFile mainModule, string moduleName)
+ {
+ var loader = widget.AddReferenceByFileName (mainModule.FileName);
+ return loader != null ? loader.Assembly : null;
+ }
+ }
+
class FastNonInterningProvider : InterningProvider
{
Dictionary<string, string> stringDict = new Dictionary<string, string> ();
@@ -152,20 +173,6 @@ namespace MonoDevelop.AssemblyBrowser
}
}
- #region IAssemblyResolver implementation
- AssemblyDefinition IAssemblyResolver.Resolve (AssemblyNameReference name)
- {
- var loader = widget.AddReferenceByAssemblyName (name);
- return loader != null ? loader.Assembly : null;
- }
-
- AssemblyDefinition IAssemblyResolver.Resolve (AssemblyNameReference name, ReaderParameters parameters)
- {
- var loader = widget.AddReferenceByAssemblyName (name);
- return loader != null ? loader.Assembly : null;
- }
- #endregion
-
public string LookupAssembly (string fullAssemblyName)
{
var assemblyFile = Runtime.SystemAssemblyService.DefaultAssemblyContext.GetAssemblyLocation (fullAssemblyName, null);
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyReferenceFolder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyReferenceFolder.cs
index 96400f68c0..511d90b77f 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyReferenceFolder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyReferenceFolder.cs
@@ -27,38 +27,41 @@
using System;
using System.Linq;
using System.Text;
-
-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.Decompiler.Metadata;
+using ICSharpCode.Decompiler.TypeSystem;
namespace MonoDevelop.AssemblyBrowser
{
class AssemblyReferenceFolder
{
- AssemblyDefinition definition;
+ PEFile definition;
- public IEnumerable<AssemblyNameReference> AssemblyReferences {
+ public IEnumerable<AssemblyReference> AssemblyReferences {
get {
- return definition.MainModule.AssemblyReferences;
+ return definition.AssemblyReferences;
}
}
+
+ // Ass
- public IEnumerable<ModuleReference> ModuleReferences {
+ public IEnumerable<IModule> ModuleReferences {
get {
- return definition.MainModule.ModuleReferences;
+ // TODO:
+ yield break;
+ //foreach (var reference in definition.Metadata.GetModuleReferences ())
+ //yield return definition.Metadata.GetModuleReference (reference);
}
}
- public AssemblyReferenceFolder (AssemblyDefinition definition)
+ public AssemblyReferenceFolder (PEFile definition)
{
- if (definition == null)
- throw new ArgumentNullException ("definition");
- this.definition = definition;
+ this.definition = definition ?? throw new ArgumentNullException (nameof (definition));
}
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyResourceFolder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyResourceFolder.cs
index bcc024e808..e96e6841ba 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyResourceFolder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyResourceFolder.cs
@@ -27,26 +27,24 @@
//
using System;
-using Mono.Cecil;
using System.Collections.Generic;
+using ICSharpCode.Decompiler.Metadata;
namespace MonoDevelop.AssemblyBrowser
{
class AssemblyResourceFolder
{
- AssemblyDefinition definition;
+ PEFile definition;
public IEnumerable<Resource> Resources {
get {
- return definition.MainModule.Resources;
+ return definition.Resources;
}
}
- public AssemblyResourceFolder (AssemblyDefinition definition)
+ public AssemblyResourceFolder (PEFile definition)
{
- if (definition == null)
- throw new ArgumentNullException ("definition");
- this.definition = definition;
+ this.definition = definition ?? throw new ArgumentNullException (nameof (definition));
}
}
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs
index c036cb19d3..091a476763 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs
@@ -28,18 +28,17 @@
using System;
using ICSharpCode.Decompiler.TypeSystem;
-using Mono.Cecil;
namespace MonoDevelop.AssemblyBrowser
{
class BaseTypeFolder : IDisposable
{
- public TypeDefinition Type {
+ public ITypeDefinition Type {
get;
private set;
}
- public BaseTypeFolder (TypeDefinition type)
+ public BaseTypeFolder (ITypeDefinition type)
{
this.Type = type;
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ColoredCSharpFormatter.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ColoredCSharpFormatter.cs
index 61b7e8b97e..2cbbfb0b20 100755
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ColoredCSharpFormatter.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ColoredCSharpFormatter.cs
@@ -32,6 +32,10 @@ using System.Linq;
using MonoDevelop.Core.Text;
using MonoDevelop.Ide.Editor;
using ICSharpCode.Decompiler.CSharp.Syntax;
+using ICSharpCode.Decompiler.Disassembler;
+using ICSharpCode.Decompiler.Metadata;
+using System.Reflection.Metadata;
+using ICSharpCode.Decompiler.TypeSystem;
namespace MonoDevelop.AssemblyBrowser
{
@@ -46,7 +50,9 @@ namespace MonoDevelop.AssemblyBrowser
get;
set;
}
-
+ public bool IsLocal { get; set; }
+ public bool IsLocalTarget { get; set; }
+
public ReferenceSegment (int offset, int length, object reference)
{
this.Reference = reference;
@@ -76,8 +82,26 @@ namespace MonoDevelop.AssemblyBrowser
return referenceSegment.Segment;
}
}
-
-
+
+ sealed class DefinitionLookup
+ {
+ internal Dictionary<object, int> definitions = new Dictionary<object, int> ();
+
+ public int GetDefinitionPosition (object definition)
+ {
+ if (!definitions.TryGetValue (definition, out int val))
+ val = -1;
+
+ return val;
+ }
+
+ public void AddDefinition (object definition, int offset)
+ {
+ definitions [definition] = offset;
+ }
+ }
+
+
class ColoredCSharpFormatter : ICSharpCode.Decompiler.ITextOutput
{
public StringBuilder sb = new StringBuilder();
@@ -86,7 +110,8 @@ namespace MonoDevelop.AssemblyBrowser
int indent;
public List<IFoldSegment> FoldSegments = new List<IFoldSegment>();
public List<ReferenceSegment> ReferencedSegments = new List<ReferenceSegment>();
-
+ internal readonly DefinitionLookup DefinitionLookup = new DefinitionLookup ();
+
public ColoredCSharpFormatter (TextEditor doc)
{
this.doc = doc;
@@ -128,9 +153,62 @@ namespace MonoDevelop.AssemblyBrowser
sb.Append (ch);
}
- void ITextOutput.Write (string text)
+ public void Write (string text)
+ {
+ WriteIndent ();
+ sb.Append (text);
+ }
+
+ public void WriteReference (OpCodeInfo opCode)
{
WriteIndent ();
+ ReferencedSegments.Add (new ReferenceSegment (sb.Length, opCode.Name.Length, opCode));
+ sb.Append (opCode.Name);
+ }
+
+ public void WriteReference (PEFile module, EntityHandle handle, string text, bool isDefinition = false)
+ {
+ WriteIndent ();
+ if (isDefinition) {
+ this.DefinitionLookup.AddDefinition ((module, handle), sb.Length);
+ }
+
+ ReferencedSegments.Add (new ReferenceSegment (sb.Length, text.Length, (module, handle)));
+ sb.Append (text);
+ }
+
+ public void WriteReference (IType type, string text, bool isDefinition = false)
+ {
+ WriteIndent ();
+ if (isDefinition) {
+ this.DefinitionLookup.AddDefinition (type, sb.Length);
+ }
+
+ ReferencedSegments.Add (new ReferenceSegment (sb.Length, text.Length, type));
+ sb.Append (text);
+ }
+
+ public void WriteReference (IMember member, string text, bool isDefinition = false)
+ {
+ WriteIndent ();
+ if (isDefinition) {
+ this.DefinitionLookup.AddDefinition (member, sb.Length);
+ }
+ ReferencedSegments.Add (new ReferenceSegment (sb.Length, text.Length, member));
+ sb.Append (text);
+ }
+
+ public void WriteLocalReference (string text, object reference, bool isDefinition)
+ {
+ WriteIndent ();
+
+ bool isLocalTarget = false;
+ if (isDefinition) {
+ this.DefinitionLookup.AddDefinition (reference, sb.Length);
+ isLocalTarget = true;
+ }
+
+ ReferencedSegments.Add (new ReferenceSegment (sb.Length, text.Length, reference) { IsLocal = true, IsLocalTarget = isLocalTarget });
sb.Append (text);
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/MetadataExtensions.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/MetadataExtensions.cs
new file mode 100644
index 0000000000..197fb93c08
--- /dev/null
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/MetadataExtensions.cs
@@ -0,0 +1,62 @@
+//
+// MetadataExtensions.cs
+//
+// Author:
+// Marius Ungureanu <maungu@microsoft.com>
+//
+// Copyright (c) 2019 Microsoft Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using ICSharpCode.Decompiler.TypeSystem;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+ static class MetadataExtensions
+ {
+ public static bool IsPrivate (this IEntity entity) =>
+ entity.Accessibility == Accessibility.Private ||
+ entity.Accessibility == Accessibility.Internal ||
+ entity.Accessibility == Accessibility.ProtectedAndInternal;
+
+ public static bool IsPublic (this IEntity entity) =>
+ entity.Accessibility == Accessibility.Protected ||
+ entity.Accessibility == Accessibility.ProtectedOrInternal ||
+ entity.Accessibility == Accessibility.Public;
+
+ public static string GetStockIcon (this Accessibility attributes)
+ {
+ switch (attributes) {
+ case Accessibility.Private:
+ return "private-";
+ case Accessibility.Public:
+ return "";
+ case Accessibility.Protected:
+ return "protected-";
+ case Accessibility.Internal:
+ return "internal-";
+ case Accessibility.ProtectedOrInternal:
+ case Accessibility.ProtectedAndInternal: // FIXME we have no icon here
+ return "ProtectedOrInternal-";
+ default:
+ return "";
+ }
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs
index a116fa5de3..acb09dfc83 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs
@@ -27,7 +27,6 @@
using MonoDevelop.Ide.Gui.Components;
using ICSharpCode.Decompiler.TypeSystem;
using System;
-using Mono.Cecil;
using ICSharpCode.Decompiler.TypeSystem.Implementation;
using MonoDevelop.Core;
using MonoDevelop.Projects;
@@ -60,8 +59,8 @@ namespace MonoDevelop.AssemblyBrowser
try {
if (thisNode == null || otherNode == null)
return -1;
- var e1 = thisNode.DataItem as IMemberDefinition;
- var e2 = otherNode.DataItem as IMemberDefinition;
+ var e1 = thisNode.DataItem as IMember;
+ var e2 = otherNode.DataItem as IMember;
if (e1 == null && e2 == null)
return 0;
@@ -77,7 +76,7 @@ namespace MonoDevelop.AssemblyBrowser
}
}
- public AssemblyBrowserTypeNodeBuilder (AssemblyBrowserWidget assemblyBrowserWidget)
+ protected AssemblyBrowserTypeNodeBuilder (AssemblyBrowserWidget assemblyBrowserWidget)
{
this.Widget = assemblyBrowserWidget;
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs
index 988df2ea2e..184e865ad9 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs
@@ -24,12 +24,13 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
-using Mono.Cecil;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide.Gui;
using System.IO;
+
+using ICSharpCode.Decompiler.Metadata;
namespace MonoDevelop.AssemblyBrowser
{
@@ -60,7 +61,7 @@ namespace MonoDevelop.AssemblyBrowser
var referenceFolder = (AssemblyReferenceFolder)dataObject;
var wrapper = (AssemblyLoader)ctx.GetParentDataItem (typeof (AssemblyLoader), false);
- foreach (AssemblyNameReference assemblyNameReference in referenceFolder.AssemblyReferences) {
+ foreach (var assemblyNameReference in referenceFolder.AssemblyReferences) {
try {
string assemblyFile = wrapper.LookupAssembly (assemblyNameReference.FullName);
if (assemblyFile != null && System.IO.File.Exists (assemblyFile)) {
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceNodeBuilder.cs
index 0e53fa2c13..0db6f14f66 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceNodeBuilder.cs
@@ -25,11 +25,11 @@
// THE SOFTWARE.
using System;
-using Mono.Cecil;
using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Core;
+using ICSharpCode.Decompiler.Metadata;
namespace MonoDevelop.AssemblyBrowser
{
@@ -41,7 +41,7 @@ namespace MonoDevelop.AssemblyBrowser
}
public override Type NodeDataType {
- get { return typeof(AssemblyNameReference); }
+ get { return typeof(AssemblyReference); }
}
public override Type CommandHandlerType {
@@ -56,13 +56,13 @@ namespace MonoDevelop.AssemblyBrowser
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- var reference = (AssemblyNameReference)dataObject;
+ var reference = (AssemblyReference)dataObject;
return reference.Name;
}
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- var reference = (AssemblyNameReference)dataObject;
+ var reference = (AssemblyReference)dataObject;
nodeInfo.Label = reference.Name;
nodeInfo.Icon = Context.GetIcon (Stock.Reference);
}
@@ -72,8 +72,8 @@ namespace MonoDevelop.AssemblyBrowser
try {
if (thisNode == null || otherNode == null)
return -1;
- var e1 = thisNode.DataItem as AssemblyNameReference;
- var e2 = otherNode.DataItem as AssemblyNameReference;
+ var e1 = thisNode.DataItem as AssemblyReference;
+ var e2 = otherNode.DataItem as AssemblyReference;
if (e1 == null && e2 == null)
return 0;
@@ -94,7 +94,7 @@ namespace MonoDevelop.AssemblyBrowser
{
public override void ActivateItem ()
{
- var reference = (AssemblyNameReference)CurrentNode.DataItem;
+ var reference = (AssemblyReference)CurrentNode.DataItem;
if (reference == null)
return;
var loader = (AssemblyLoader)CurrentNode.GetParentDataItem (typeof(AssemblyLoader), false);
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs
index e0eeb9f581..93b42c91aa 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs
@@ -28,9 +28,7 @@
using System;
using System.Collections.Generic;
-
-using Mono.Cecil;
-
+
using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.Gui.Pads;
using MonoDevelop.Ide.Gui.Components;
@@ -100,9 +98,9 @@ namespace MonoDevelop.AssemblyBrowser
public override void BuildChildNodes (ITreeBuilder builder, object dataObject)
{
var baseTypeFolder = (BaseTypeFolder)dataObject;
- builder.AddChild (baseTypeFolder.Type.BaseType);
- builder.AddChildren (baseTypeFolder.Type.Interfaces);
+ builder.AddChildren (baseTypeFolder.Type.DirectBaseTypes);
}
+
public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
{
return true;
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/AssemblyNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/AssemblyNodeBuilder.cs
index 78f1ee9934..a0404ce725 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/AssemblyNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/AssemblyNodeBuilder.cs
@@ -30,8 +30,6 @@ using System;
using System.Linq;
using System.Text;
-using Mono.Cecil;
-
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.Gui.Components;
@@ -39,6 +37,7 @@ using System.Collections.Generic;
using System.IO;
using MonoDevelop.Ide.Editor;
using ICSharpCode.Decompiler.TypeSystem;
+using ICSharpCode.Decompiler.Metadata;
namespace MonoDevelop.AssemblyBrowser
{
@@ -86,19 +85,19 @@ namespace MonoDevelop.AssemblyBrowser
var namespaces = new Dictionary<string, NamespaceData> ();
bool publicOnly = Widget.PublicApiOnly;
- foreach (var type in compilationUnit.ModuleDefinition.Types) {
+ foreach (var type in compilationUnit.DecompilerTypeSystem.MainModule.TypeDefinitions) {
string namespaceName = string.IsNullOrEmpty (type.Namespace) ? "" : type.Namespace;
if (!namespaces.ContainsKey (namespaceName))
namespaces [namespaceName] = new NamespaceData (namespaceName);
var ns = namespaces [namespaceName];
- ns.Types.Add ((type.IsPublic, type));
+ ns.Types.Add ((type.IsPublic (), type));
}
treeBuilder.AddChildren (namespaces.Where (ns => ns.Key != "" && (!publicOnly || ns.Value.Types.Any (t => t.isPublic))).Select (n => n.Value));
if (namespaces.ContainsKey ("")) {
foreach (var child in namespaces [""].Types) {
- if (((TypeDefinition)child.typeObject).Name == "<Module>")
+ if (((INamedElement)child.typeObject).Name == "<Module>")
continue;
treeBuilder.AddChild (child);
}
@@ -108,7 +107,7 @@ namespace MonoDevelop.AssemblyBrowser
public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
{
var compilationUnit = (AssemblyLoader)dataObject;
- return compilationUnit.Assembly?.MainModule.HasTypes == true || compilationUnit.Error != null;
+ return compilationUnit.DecompilerTypeSystem?.MainModule.TypeDefinitions.Any () == true || compilationUnit.Error != null;
}
public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
@@ -126,7 +125,7 @@ namespace MonoDevelop.AssemblyBrowser
if (e2 == null || e2.Assembly == null)
return -1;
- return string.Compare (e1.Assembly.Name.Name, e2.Assembly.Name.Name, StringComparison.Ordinal);
+ return string.Compare (e1.Assembly.Name, e2.Assembly.Name, StringComparison.Ordinal);
} catch (Exception e) {
LoggingService.LogError ("Exception in assembly browser sort function.", e);
return -1;
@@ -134,30 +133,17 @@ namespace MonoDevelop.AssemblyBrowser
}
#region IAssemblyBrowserNodeBuilder
- void PrintAssemblyHeader (StringBuilder result, AssemblyDefinition assemblyDefinition)
+ void PrintAssemblyHeader (StringBuilder result, PEFile assemblyDefinition)
{
result.Append ("<span style=\"comment\">");
result.Append ("// ");
result.Append (string.Format (GettextCatalog.GetString ("Assembly <b>{0}</b>, Version {1}"),
- assemblyDefinition.Name.Name,
- assemblyDefinition.Name.Version));
+ assemblyDefinition.Name,
+ assemblyDefinition.Metadata.MetadataVersion));
result.Append ("</span>");
result.AppendLine ();
}
- static string GetTypeString (ModuleKind kind)
- {
- switch (kind) {
- case ModuleKind.Console:
- return GettextCatalog.GetString ("Console application");
- case ModuleKind.Dll:
- return GettextCatalog.GetString ("Library");
- case ModuleKind.Windows:
- return GettextCatalog.GetString ("Application");
- }
- return GettextCatalog.GetString ("Unknown");
- }
-
public List<ReferenceSegment> Disassemble (TextEditor data, ITreeNavigator navigator)
{
var assemblyLoader = (AssemblyLoader)navigator.DataItem;
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/EventDefinitionNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/EventDefinitionNodeBuilder.cs
index 06e3eddf0a..422286936e 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/EventDefinitionNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/EventDefinitionNodeBuilder.cs
@@ -34,12 +34,10 @@ using MonoDevelop.Ide;
using ICSharpCode.Decompiler;
using System.Threading;
using System.Collections.Generic;
-using Mono.Cecil;
using MonoDevelop.Ide.TypeSystem;
using ICSharpCode.Decompiler.TypeSystem;
using MonoDevelop.Ide.Editor;
using ICSharpCode.Decompiler.CSharp;
-using ICSharpCode.ILSpy;
using MonoDevelop.Core;
namespace MonoDevelop.AssemblyBrowser
@@ -47,7 +45,7 @@ namespace MonoDevelop.AssemblyBrowser
class EventDefinitionNodeBuilder : AssemblyBrowserTypeNodeBuilder, IAssemblyBrowserNodeBuilder
{
public override Type NodeDataType {
- get { return typeof(EventDefinition); }
+ get { return typeof(IEvent); }
}
public EventDefinitionNodeBuilder (AssemblyBrowserWidget widget) : base (widget)
@@ -56,37 +54,39 @@ namespace MonoDevelop.AssemblyBrowser
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- var evt = (EventDefinition)dataObject;
+ var evt = (IEvent)dataObject;
return evt.Name;
}
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- var evt = (EventDefinition)dataObject;
- nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (evt.Name + " : " + CSharpLanguage.Instance.TypeToString (evt.EventType, false, evt));
- var accessor = evt.AddMethod ?? evt.RemoveMethod;
+ var evt = (IEvent)dataObject;
+ nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (evt.Name + " : ");
+ // TODO: Fix this.
+ //nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (evt.Name + " : " + CSharpLanguage.Instance.TypeToString (evt.ReturnType, false, evt));
+ var accessor = evt.AddAccessor ?? evt.RemoveAccessor;
- if (!accessor.IsPublic)
+ if (!accessor.IsPublic ())
nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate (nodeInfo.Label);
nodeInfo.Icon = Context.GetIcon (GetStockIcon (evt));
}
- public static IconId GetStockIcon (EventDefinition evt)
+ public static IconId GetStockIcon (IEvent evt)
{
- var accessor = evt.AddMethod ?? evt.RemoveMethod;
+ var accessor = evt.AddAccessor ?? evt.RemoveAccessor;
return MethodDefinitionNodeBuilder.GetStockIcon (accessor);
}
public override void BuildChildNodes (ITreeBuilder ctx, object dataObject)
{
- var evt = (EventDefinition)dataObject;
- if (evt.AddMethod != null)
- ctx.AddChild (evt.AddMethod);
- if (evt.RemoveMethod != null)
- ctx.AddChild (evt.RemoveMethod);
- if (evt.InvokeMethod != null)
- ctx.AddChild (evt.InvokeMethod);
+ var evt = (IEvent)dataObject;
+ if (evt.AddAccessor != null)
+ ctx.AddChild (evt.AddAccessor);
+ if (evt.RemoveAccessor != null)
+ ctx.AddChild (evt.RemoveAccessor);
+ if (evt.InvokeAccessor != null)
+ ctx.AddChild (evt.InvokeAccessor);
}
public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
@@ -99,18 +99,18 @@ namespace MonoDevelop.AssemblyBrowser
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var evt = (EventDefinition)navigator.DataItem;
- return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleEvent (evt));
+ var evt = (IEvent)navigator.DataItem;
+ return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleEvent (evt.ParentModule.PEFile, (System.Reflection.Metadata.EventDefinitionHandle)evt.MetadataToken));
}
List<ReferenceSegment> IAssemblyBrowserNodeBuilder.Decompile (TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var evt = navigator.DataItem as EventDefinition;
+ var evt = navigator.DataItem as IEvent;
if (evt == null)
return null;
- return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (evt), flags: flags);
+ return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (evt.MetadataToken), flags: flags);
}
#endregion
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/FieldDefinitionNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/FieldDefinitionNodeBuilder.cs
index 670bc298a4..c25e26e82c 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/FieldDefinitionNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/FieldDefinitionNodeBuilder.cs
@@ -28,8 +28,7 @@
using System;
using System.Collections.Generic;
-using ICSharpCode.ILSpy;
-using Mono.Cecil;
+using ICSharpCode.Decompiler.TypeSystem;
using MonoDevelop.Core;
using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.Gui.Components;
@@ -39,7 +38,7 @@ namespace MonoDevelop.AssemblyBrowser
class FieldDefinitionNodeBuilder : AssemblyBrowserTypeNodeBuilder, IAssemblyBrowserNodeBuilder
{
public override Type NodeDataType {
- get { return typeof(FieldDefinition); }
+ get { return typeof(IField); }
}
public FieldDefinitionNodeBuilder (AssemblyBrowserWidget widget) : base (widget)
@@ -49,45 +48,28 @@ namespace MonoDevelop.AssemblyBrowser
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- var field = (FieldDefinition)dataObject;
+ var field = (IField)dataObject;
return field.Name;
}
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- var field = (FieldDefinition)dataObject;
- nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (field.Name + " : " + CSharpLanguage.Instance.TypeToString (field.FieldType, false, field));
+ var field = (IField)dataObject;
+ // FIXME?
+ //nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (field.Name + " : " + CSharpLanguage.Instance.TypeToString (field.FieldType, false, field));
+ nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (field.Name + " : " + field.ReturnType.Name);
- if (!field.IsPublic)
+ if (!field.IsPublic ())
nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate (nodeInfo.Label);
nodeInfo.Icon = Context.GetIcon (GetStockIcon(field));
}
- public static IconId GetStockIcon (FieldDefinition field)
+ public static IconId GetStockIcon (IField field)
{
- var isStatic = (field.Attributes & FieldAttributes.Static) != 0;
- var source = field.HasConstant ? "literal" : "field";
- var global = field.HasConstant ? "" : (isStatic ? "static-" : "");
- return "md-" + GetAccess (field.Attributes) + global + source;
- }
-
- static string GetAccess (FieldAttributes attributes)
- {
- switch (attributes & FieldAttributes.FieldAccessMask) {
- case FieldAttributes.Private:
- return "private-";
- case FieldAttributes.Public:
- return "";
- case FieldAttributes.Family:
- return "protected-";
- case FieldAttributes.Assembly:
- return "internal-";
- case FieldAttributes.FamORAssem:
- case FieldAttributes.FamANDAssem:
- return "ProtectedOrInternal-";
- default:
- return "";
- }
+ var isStatic = field.IsStatic;
+ var source = field.IsConst ? "literal" : "field";
+ var global = field.IsConst ? "" : (isStatic ? "static-" : "");
+ return "md-" + field.Accessibility.GetStockIcon () + global + source;
}
#region IAssemblyBrowserNodeBuilder
@@ -96,20 +78,20 @@ namespace MonoDevelop.AssemblyBrowser
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var field = (FieldDefinition)navigator.DataItem;
+ var field = (IField)navigator.DataItem;
if (field == null)
return null;
- return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleField (field));
+ return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleField (field.ParentModule.PEFile, (System.Reflection.Metadata.FieldDefinitionHandle)field.MetadataToken));
}
List<ReferenceSegment> IAssemblyBrowserNodeBuilder.Decompile (TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var field = (FieldDefinition)navigator.DataItem;
+ var field = (IField)navigator.DataItem;
if (field == null)
return null;
- return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (field), flags: flags);
+ return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (field.MetadataToken), flags: flags);
}
#endregion
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/MethodDefinitionNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/MethodDefinitionNodeBuilder.cs
index cd3e7a89a3..bb0ea528a4 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/MethodDefinitionNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/MethodDefinitionNodeBuilder.cs
@@ -39,21 +39,18 @@ using ICSharpCode.Decompiler.CSharp.TypeSystem;
using ICSharpCode.Decompiler.Disassembler;
using ICSharpCode.Decompiler.TypeSystem;
using ICSharpCode.Decompiler.TypeSystem.Implementation;
-using Mono.Cecil;
-using Mono.Cecil.Cil;
using MonoDevelop.Core;
using MonoDevelop.Core.Text;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.Gui.Components;
-using ICSharpCode.ILSpy;
namespace MonoDevelop.AssemblyBrowser
{
class MethodDefinitionNodeBuilder : AssemblyBrowserTypeNodeBuilder, IAssemblyBrowserNodeBuilder
{
public override Type NodeDataType {
- get { return typeof(MethodDefinition); }
+ get { return typeof(IMethod); }
}
public MethodDefinitionNodeBuilder (AssemblyBrowserWidget widget) : base (widget)
@@ -62,7 +59,7 @@ namespace MonoDevelop.AssemblyBrowser
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- var method = (MethodDefinition)dataObject;
+ var method = (IMethod)dataObject;
if (method.IsConstructor)
return method.DeclaringType.Name;
return method.Name;
@@ -75,7 +72,7 @@ namespace MonoDevelop.AssemblyBrowser
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- var method = (MethodDefinition)dataObject;
+ var method = (IMethod)dataObject;
var ambience = new CSharpAmbience ();
try {
@@ -84,39 +81,19 @@ namespace MonoDevelop.AssemblyBrowser
nodeInfo.Label = method.Name;
}
- if (method.IsPrivate || method.IsAssembly)
+ if (method.IsPrivate ())
nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate (nodeInfo.Label);
nodeInfo.Icon = Context.GetIcon (GetStockIcon (method));
}
- public static IconId GetStockIcon (MethodDefinition method)
+ public static IconId GetStockIcon (IMethod method)
{
- var isStatic = (method.Attributes & MethodAttributes.Static) != 0;
- var global = isStatic ? "static-" : "";
- return "md-" + GetAccess (method.Attributes) + global + "method";
+ var global = method.IsStatic ? "static-" : "";
+ return "md-" + method.Accessibility.GetStockIcon () + global + "method";
}
- internal static string GetAccess (MethodAttributes attributes)
- {
- switch (attributes & MethodAttributes.MemberAccessMask) {
- case MethodAttributes.Private:
- return "private-";
- case MethodAttributes.Public:
- return "";
- case MethodAttributes.Family:
- return "protected-";
- case MethodAttributes.Assembly:
- return "internal-";
- case MethodAttributes.FamORAssem:
- case MethodAttributes.FamANDAssem:
- return "ProtectedOrInternal-";
- default:
- return "";
- }
- }
-
- public static string GetText (MethodDefinition method)
+ public static string GetText (IMethod method)
{
var b = StringBuilderCache.Allocate ();
try {
@@ -124,20 +101,25 @@ namespace MonoDevelop.AssemblyBrowser
for (int i = 0; i < method.Parameters.Count; i++) {
if (i > 0)
b.Append (", ");
- b.Append (CSharpLanguage.Instance.TypeToString (method.Parameters [i].ParameterType, false, method.Parameters [i]));
- }
- if (method.CallingConvention == MethodCallingConvention.VarArg) {
- if (method.HasParameters)
- b.Append (", ");
- b.Append ("...");
+ // TODO: Fix this.
+ //b.Append (CSharpLanguage.Instance.TypeToString (method.Parameters [i].ParameterType, false, method.Parameters [i]));
+ b.Append (method.Parameters [i].Type.Name);
}
+ //if (method.CallingConvention == MethodCallingConvention.VarArg) {
+ // if (method.HasParameters)
+ // b.Append (", ");
+ // b.Append ("...");
+ //}
if (method.IsConstructor) {
b.Append (')');
} else {
b.Append (") : ");
- b.Append (CSharpLanguage.Instance.TypeToString (method.ReturnType, false, method.MethodReturnType));
+ //b.Append (CSharpLanguage.Instance.TypeToString (method.ReturnType, false, method.MethodReturnType));
+ b.Append (method.ReturnType.Name);
}
- return CSharpLanguage.Instance.FormatMethodName (method) + b;
+
+ //return CSharpLanguage.Instance.FormatMethodName (method) + b;
+ return method.Name + b;
} finally {
StringBuilderCache.Free (b);
}
@@ -154,11 +136,6 @@ namespace MonoDevelop.AssemblyBrowser
result.AppendLine ();
}
- static string GetInstructionOffset (Instruction instruction)
- {
- return String.Format ("IL_{0:X4}", instruction.Offset);
- }
-
public static AssemblyLoader GetAssemblyLoader (ITreeNavigator navigator)
{
var nav = navigator.Clone ();
@@ -223,10 +200,10 @@ namespace MonoDevelop.AssemblyBrowser
{
if (HandleSourceCodeEntity (navigator, data))
return null;
- var cecilMethod = (MethodDefinition)navigator.DataItem;
+ var cecilMethod = (IMethod)navigator.DataItem;
if (cecilMethod == null)
return null;
- return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (cecilMethod), flags: flags);
+ return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (cecilMethod.MetadataToken), flags: flags);
}
static void AppendLink (StringBuilder sb, string link, string text)
@@ -265,10 +242,9 @@ namespace MonoDevelop.AssemblyBrowser
{
if (HandleSourceCodeEntity (navigator, data))
return null;
- var cecilMethod = (MethodDefinition)navigator.DataItem;
- if (cecilMethod == null)
+ if (!(navigator.DataItem is IMethod cecilMethod))
return null;
- return Disassemble (data, rd => rd.DisassembleMethod (cecilMethod));
+ return Disassemble (data, rd => rd.DisassembleMethod (cecilMethod.ParentModule.PEFile, (System.Reflection.Metadata.MethodDefinitionHandle)cecilMethod.MetadataToken));
}
#endregion
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/PropertyDefinitionNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/PropertyDefinitionNodeBuilder.cs
index 0e61a50423..d65dc169cb 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/PropertyDefinitionNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/PropertyDefinitionNodeBuilder.cs
@@ -35,11 +35,9 @@ using MonoDevelop.Projects.Text;
using ICSharpCode.Decompiler;
using System.Threading;
using System.Collections.Generic;
-using Mono.Cecil;
using ICSharpCode.Decompiler.TypeSystem;
using MonoDevelop.Ide.TypeSystem;
using MonoDevelop.Ide.Editor;
-using ICSharpCode.ILSpy;
using MonoDevelop.Core;
namespace MonoDevelop.AssemblyBrowser
@@ -47,7 +45,7 @@ namespace MonoDevelop.AssemblyBrowser
class PropertyDefinitionNodeBuilder : AssemblyBrowserTypeNodeBuilder, IAssemblyBrowserNodeBuilder
{
public override Type NodeDataType {
- get { return typeof(PropertyDefinition); }
+ get { return typeof(IProperty); }
}
public PropertyDefinitionNodeBuilder (AssemblyBrowserWidget widget) : base (widget)
@@ -57,54 +55,57 @@ namespace MonoDevelop.AssemblyBrowser
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- var property = (PropertyDefinition)dataObject;
+ var property = (IProperty)dataObject;
return property.Name;
}
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- var property = (PropertyDefinition)dataObject;
- nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (GetText (property, property.IsIndexer ()));
+ var property = (IProperty)dataObject;
+ nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (GetText (property, property.IsIndexer));
- var accessor = property.GetMethod ?? property.SetMethod;
+ var accessor = property.Getter ?? property.Setter;
- if (!accessor.IsPublic)
+ if (!accessor.IsPublic ())
nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate (nodeInfo.Label);
nodeInfo.Icon = Context.GetIcon (GetStockIcon (property));
}
- public static IconId GetStockIcon (PropertyDefinition property)
+ public static IconId GetStockIcon (IProperty property)
{
- var accessor = property.GetMethod ?? property.SetMethod;
- var isStatic = (accessor.Attributes & MethodAttributes.Static) != 0;
- var global = isStatic ? "static-" : "";
- return "md-" + MethodDefinitionNodeBuilder.GetAccess (accessor.Attributes) + global + "property";
+ var accessor = property.Getter ?? property.Setter;
+ var global = accessor.IsStatic ? "static-" : "";
+ return "md-" + accessor.Accessibility.GetStockIcon () + global + "property";
}
- static string GetText (PropertyDefinition property, bool? isIndexer = null)
+ static string GetText (IProperty property, bool? isIndexer = null)
{
- string name = CSharpLanguage.Instance.FormatPropertyName (property, isIndexer);
+ // TODO: fix this
+ string name = property.Name;// CSharpLanguage.Instance.FormatPropertyName (property, isIndexer);
var b = new System.Text.StringBuilder ();
- if (property.HasParameters) {
+ var parameters = property.Parameters;
+ if (parameters.Count != 0) {
b.Append ('(');
- for (int i = 0; i < property.Parameters.Count; i++) {
+ for (int i = 0; i < parameters.Count; i++) {
if (i > 0)
b.Append (", ");
- b.Append (CSharpLanguage.Instance.TypeToString (property.Parameters [i].ParameterType, false, property.Parameters [i]));
- }
- var method = property.GetMethod ?? property.SetMethod;
- if (method.CallingConvention == MethodCallingConvention.VarArg) {
- if (property.HasParameters)
- b.Append (", ");
- b.Append ("...");
+ //b.Append (CSharpLanguage.Instance.TypeToString (property.Parameters [i].ParameterType, false, property.Parameters [i]));
+ b.Append (parameters [i].Type.Name);
}
+ //var method = property.GetMethod ?? property.SetMethod;
+ //if (method.CallingConvention == MethodCallingConvention.VarArg) {
+ // if (property.HasParameters)
+ // b.Append (", ");
+ // b.Append ("...");
+ //}
b.Append (") : ");
} else {
b.Append (" : ");
}
- b.Append (CSharpLanguage.Instance.TypeToString (property.PropertyType, false, property));
+ //b.Append (CSharpLanguage.Instance.TypeToString (property.PropertyType, false, property));
+ b.Append (property.ReturnType.Name);
return name + b;
}
@@ -126,8 +127,8 @@ namespace MonoDevelop.AssemblyBrowser
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var property = (PropertyDefinition)navigator.DataItem;
- return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleProperty (property));
+ var property = (IProperty)navigator.DataItem;
+ return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleProperty (property.ParentModule.PEFile, (System.Reflection.Metadata.PropertyDefinitionHandle)property.MetadataToken));
}
static string GetBody (string text)
@@ -146,10 +147,9 @@ namespace MonoDevelop.AssemblyBrowser
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var property = navigator.DataItem as PropertyDefinition;
- if (property == null)
+ if (!(navigator.DataItem is IProperty property))
return null;
- return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (property), flags: flags);
+ return MethodDefinitionNodeBuilder.Decompile (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (property.MetadataToken), flags: flags);
}
#endregion
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/TypeDefinitionNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/TypeDefinitionNodeBuilder.cs
index 002611033a..b317218fea 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/TypeDefinitionNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Cecil/TypeDefinitionNodeBuilder.cs
@@ -29,7 +29,6 @@
using System;
using System.Text;
using System.Linq;
-using Mono.Cecil;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide;
@@ -42,14 +41,13 @@ using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.Editor.Highlighting;
using MonoDevelop.Ide.Gui.Content;
using ICSharpCode.Decompiler.CSharp.OutputVisitor;
-using ICSharpCode.ILSpy;
namespace MonoDevelop.AssemblyBrowser
{
class TypeDefinitionNodeBuilder : AssemblyBrowserTypeNodeBuilder, IAssemblyBrowserNodeBuilder
{
public override Type NodeDataType {
- get { return typeof(TypeDefinition); }
+ get { return typeof(ITypeDefinition); }
}
public override string ContextMenuAddinPath {
@@ -62,94 +60,76 @@ namespace MonoDevelop.AssemblyBrowser
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- var type = (TypeDefinition)dataObject;
+ var type = (ITypeDefinition)dataObject;
return type.Name;
}
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- var type = (TypeDefinition)dataObject;
- nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (CSharpLanguage.Instance.FormatTypeName (type));
- if (!type.IsPublic)
+ var type = (ITypeDefinition)dataObject;
+ // TODO: fix this
+ //nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (CSharpLanguage.Instance.FormatTypeName (type));
+ nodeInfo.Label = type.FullTypeName.Name;
+ if (!type.IsPublic ())
nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate (nodeInfo.Label);
nodeInfo.Icon = Context.GetIcon (GetStockIcon(type));
}
- public static IconId GetStockIcon (TypeDefinition type)
+ public static IconId GetStockIcon (ITypeDefinition type)
{
- return "md-" + GetAccess (type.Attributes) + GetSource (type);
+ return "md-" + type.Accessibility.GetStockIcon () + GetSource (type);
}
- static string GetSource (TypeDefinition type)
+ static string GetSource (ITypeDefinition type)
{
- if (type.IsInterface)
+ if (type.Kind == TypeKind.Interface)
return "interface";
- if (type.IsValueType)
+ if (type.Kind == TypeKind.Struct)
return "struct";
- if (type.IsEnum)
+ if (type.Kind == TypeKind.Enum)
return "enum";
- if (type.IsDelegate ())
+ if (type.Kind == TypeKind.Delegate)
return "delegate";
return "class";
}
- static string GetAccess (TypeAttributes attributes)
- {
- switch (attributes & TypeAttributes.VisibilityMask) {
- case TypeAttributes.NestedPrivate:
- return "private-";
- case TypeAttributes.Public:
- case TypeAttributes.NestedPublic:
- return "";
- case TypeAttributes.NestedFamily:
- return "protected-";
- case TypeAttributes.NestedAssembly:
- return "internal-";
- case TypeAttributes.NestedFamORAssem:
- case TypeAttributes.NestedFamANDAssem:
- return "ProtectedOrInternal-";
- default:
- return "";
- }
- }
-
public override void BuildChildNodes (ITreeBuilder builder, object dataObject)
{
- var type = (TypeDefinition)dataObject;
+ var type = (ITypeDefinition)dataObject;
var list = new System.Collections.ArrayList ();
- if (type.BaseType != null || type.HasInterfaces)
+ if (type.DirectBaseTypes.Any ())
list.Add (new BaseTypeFolder (type));
bool publicOnly = Widget.PublicApiOnly;
foreach (var nestedType in type.NestedTypes.OrderBy (m => m.Name, StringComparer.InvariantCulture)) {
- if (publicOnly && !nestedType.IsPublic)
+ if (publicOnly && !nestedType.IsPublic ())
continue;
builder.AddChild (nestedType);
}
foreach (var field in type.Fields.OrderBy (m => m.Name, StringComparer.InvariantCulture)) {
- if (publicOnly && !field.IsPublic)
+ if (publicOnly && !field.IsPublic ())
continue;
builder.AddChild (field);
}
foreach (var property in type.Properties.OrderBy (m => m.Name, StringComparer.InvariantCulture)) {
- var accessor = property.GetMethod ?? property.SetMethod;
- if (publicOnly && !accessor.IsPublic)
+ var accessor = property.Getter ?? property.Setter;
+ if (publicOnly && !accessor.IsPublic ())
continue;
builder.AddChild (property);
}
foreach (var evt in type.Events.OrderBy (m => m.Name, StringComparer.InvariantCulture)) {
- var accessor = evt.AddMethod ?? evt.RemoveMethod;
- if (publicOnly && !accessor.IsPublic)
+ var accessor = evt.AddAccessor ?? evt.RemoveAccessor;
+ if (publicOnly && !accessor.IsPublic ())
continue;
builder.AddChild (evt);
}
- var accessorMethods = type.GetAccessorMethods ();
+ var accessorMethods = type.GetAccessors ();
foreach (var method in type.Methods.OrderBy (m => m.Name, StringComparer.InvariantCulture)) {
- if (publicOnly && !method.IsPublic)
+ if (publicOnly && !method.IsPublic ())
continue;
if (!accessorMethods.Contains (method)) {
builder.AddChild (method);
@@ -165,13 +145,13 @@ namespace MonoDevelop.AssemblyBrowser
#region IAssemblyBrowserNodeBuilder
internal static void PrintAssembly (StringBuilder result, ITreeNavigator navigator)
{
- var assemblyDefinition = (AssemblyDefinition)navigator.GetParentDataItem (typeof (AssemblyDefinition), false);
+ var assemblyDefinition = (AssemblyLoader)navigator.GetParentDataItem (typeof (AssemblyLoader), false);
if (assemblyDefinition == null)
return;
-
+
result.Append (GettextCatalog.GetString ("<b>Assembly:</b>\t{0}, Version={1}",
- assemblyDefinition.Name.Name,
- assemblyDefinition.Name.Version));
+ assemblyDefinition.Assembly.Name,
+ assemblyDefinition.Assembly.Metadata.MetadataVersion));
result.AppendLine ();
}
@@ -195,11 +175,11 @@ namespace MonoDevelop.AssemblyBrowser
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var type = (TypeDefinition)navigator.DataItem;
+ var type = (ITypeDefinition)navigator.DataItem;
if (type == null)
return null;
-
- return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleType (type));
+
+ return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.DisassembleType (type.ParentModule.PEFile, (System.Reflection.Metadata.TypeDefinitionHandle)type.MetadataToken));
}
internal static DecompilerSettings CreateDecompilerSettings (bool publicOnly, MonoDevelop.CSharp.Formatting.CSharpFormattingPolicy codePolicy)
@@ -222,7 +202,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var type = (TypeDefinition)navigator.DataItem;
+ var type = (ITypeDefinition)navigator.DataItem;
if (type == null)
return null;
var settings = MethodDefinitionNodeBuilder.GetDecompilerSettings (data, flags.PublicOnly);
@@ -230,7 +210,7 @@ namespace MonoDevelop.AssemblyBrowser
return MethodDefinitionNodeBuilder.Decompile (
data,
MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator),
- builder => builder.DecompileType (type.GetFullTypeName ()), flags: flags);
+ builder => builder.DecompileType (type.FullTypeName), flags: flags);
}
#endregion
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ErrorNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ErrorNodeBuilder.cs
index ed9c4f4614..ec4c8567ad 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ErrorNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ErrorNodeBuilder.cs
@@ -29,8 +29,6 @@
using System;
using System.Collections.Generic;
-using Mono.Cecil;
-
using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.Gui.Pads;
using MonoDevelop.Ide.Gui.Components;
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ModuleReferenceNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ModuleReferenceNodeBuilder.cs
index be49f43061..80205e6c0a 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ModuleReferenceNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ModuleReferenceNodeBuilder.cs
@@ -27,29 +27,30 @@
//
using System;
-using Mono.Cecil;
using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Core;
+using System.Reflection.Metadata;
+using ICSharpCode.Decompiler.TypeSystem;
namespace MonoDevelop.AssemblyBrowser
{
class ModuleReferenceNodeBuilder : TypeNodeBuilder
{
public override Type NodeDataType {
- get { return typeof(ModuleReference); }
+ get { return typeof(IModule); }
}
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- var reference = (ModuleReference)dataObject;
+ var reference = (IModule)dataObject;
return reference.Name;
}
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- var reference = (ModuleReference)dataObject;
+ var reference = (IModule)dataObject;
nodeInfo.Label = reference.Name;
nodeInfo.Icon = Context.GetIcon (Stock.GenericFile);
}
@@ -59,8 +60,8 @@ namespace MonoDevelop.AssemblyBrowser
try {
if (thisNode == null || otherNode == null)
return -1;
- var e1 = thisNode.DataItem as ModuleReference;
- var e2 = otherNode.DataItem as ModuleReference;
+ var e1 = thisNode.DataItem as IModule;
+ var e2 = otherNode.DataItem as IModule;
if (e1 == null && e2 == null)
return 0;
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/NamespaceData.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/NamespaceData.cs
index 4fc5a5ecea..56950b7d79 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/NamespaceData.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/NamespaceData.cs
@@ -29,7 +29,6 @@
using System;
using System.Collections.Generic;
using ICSharpCode.Decompiler.TypeSystem;
-using Mono.Cecil;
namespace MonoDevelop.AssemblyBrowser
{
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ResourceNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ResourceNodeBuilder.cs
index a9b6fae962..b0727dbfa0 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ResourceNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/ResourceNodeBuilder.cs
@@ -27,28 +27,28 @@
//
using System;
-using Mono.Cecil;
using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide.Gui;
-
+using ICSharpCode.Decompiler.Metadata;
+
namespace MonoDevelop.AssemblyBrowser
{
class ResourceNodeBuilder : TypeNodeBuilder
{
public override Type NodeDataType {
- get { return typeof(Mono.Cecil.Resource); }
+ get { return typeof(Resource); }
}
public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
{
- Mono.Cecil.Resource resource = (Mono.Cecil.Resource)dataObject;
+ var resource = (Resource)dataObject;
return resource.Name;
}
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
{
- Mono.Cecil.Resource resource = (Mono.Cecil.Resource)dataObject;
+ var resource = (Resource)dataObject;
nodeInfo.Label = Ide.TypeSystem.Ambience.EscapeText (resource.Name);
nodeInfo.Icon = Context.GetIcon (Stock.ResourceFileIcon);
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Roslyn/ProjectNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Roslyn/ProjectNodeBuilder.cs
index 3615f5c8c6..e65bfd01da 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Roslyn/ProjectNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/Roslyn/ProjectNodeBuilder.cs
@@ -1,4 +1,4 @@
-//
+//
// ProjectNodeBuilder.cs
//
// Author:
@@ -27,6 +27,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Text;
+
using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Gui.Components;
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/Util/CSharpLanguage.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/Util/CSharpLanguage.cs
index d195042a85..b0077d2421 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/Util/CSharpLanguage.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/Util/CSharpLanguage.cs
@@ -1,395 +1,395 @@
-// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop Team
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this
-// software and associated documentation files (the "Software"), to deal in the Software
-// without restriction, including without limitation the rights to use, copy, modify, merge,
-// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or
-// substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
-// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
-// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Resources;
-
-using ICSharpCode.Decompiler;
-using Mono.Cecil;
-using ICSharpCode.Decompiler.CSharp;
-using ICSharpCode.Decompiler.CSharp.OutputVisitor;
-using ICSharpCode.Decompiler.CSharp.Syntax;
-using ICSharpCode.Decompiler.TypeSystem;
-using ICSharpCode.Decompiler.CSharp.Transforms;
-
-namespace ICSharpCode.ILSpy
-{
- /// <summary>
- /// C# decompiler integration into ILSpy.
- /// Note: if you're interested in using the decompiler without the ILSpy UI,
- /// please directly use the CSharpDecompiler class.
- /// </summary>
- class CSharpLanguage
- {
- public static readonly CSharpLanguage Instance = new CSharpLanguage ();
- string name = "C#";
- int transformCount = int.MaxValue;
-
-#if DEBUG
- internal static IEnumerable<CSharpLanguage> GetDebugLanguages ()
- {
- var decompiler = new CSharpDecompiler (ModuleDefinition.CreateModule ("Dummy", ModuleKind.Dll), new DecompilerSettings ());
- string lastTransformName = "no transforms";
- int transformCount = 0;
- foreach (var transform in decompiler.AstTransforms) {
- yield return new CSharpLanguage {
- transformCount = transformCount,
- name = "C# - " + lastTransformName,
- };
- lastTransformName = "after " + transform.GetType ().Name;
- transformCount++;
- }
- yield return new CSharpLanguage {
- name = "C# - " + lastTransformName,
- };
- }
-#endif
-
- public string Name {
- get { return name; }
- }
-
- public string FileExtension {
- get { return ".cs"; }
- }
-
- public string ProjectFileExtension {
- get { return ".csproj"; }
- }
-
-
- CSharpDecompiler CreateDecompiler (ModuleDefinition module, DecompilerSettings options)
- {
- CSharpDecompiler decompiler = new CSharpDecompiler (module, options);
- //decompiler.CancellationToken = options.CancellationToken;
- while (decompiler.AstTransforms.Count > transformCount)
- decompiler.AstTransforms.RemoveAt (decompiler.AstTransforms.Count - 1);
- return decompiler;
- }
-
- void WriteCode (ITextOutput output, DecompilerSettings settings, SyntaxTree syntaxTree, IDecompilerTypeSystem typeSystem)
- {
- syntaxTree.AcceptVisitor (new InsertParenthesesVisitor { InsertParenthesesForReadability = true });
- TokenWriter tokenWriter = new TextTokenWriter (output, settings, typeSystem) { FoldBraces = settings.FoldBraces, /*ExpandMemberDefinitions = settings.ExpandMemberDefinitions */};
- syntaxTree.AcceptVisitor (new CSharpOutputVisitor (tokenWriter, settings.CSharpFormattingOptions));
- }
-
- public void DecompileMethod (MethodDefinition method, ITextOutput output, DecompilerSettings options)
- {
- AddReferenceWarningMessage (method.Module.Assembly, output);
- WriteCommentLine (output, TypeToString (method.DeclaringType, includeNamespace: true));
- CSharpDecompiler decompiler = CreateDecompiler (method.Module, options);
- if (method.IsConstructor && !method.DeclaringType.IsValueType) {
- List<IMemberDefinition> members = CollectFieldsAndCtors (method.DeclaringType, method.IsStatic);
- decompiler.AstTransforms.Add (new SelectCtorTransform (decompiler.TypeSystem.Resolve (method)));
- WriteCode (output, options, decompiler.Decompile (members), decompiler.TypeSystem);
- } else {
- WriteCode (output, options, decompiler.Decompile (method), decompiler.TypeSystem);
- }
- }
-
- class SelectCtorTransform : IAstTransform
- {
- readonly IMethod ctor;
- readonly HashSet<ISymbol> removedSymbols = new HashSet<ISymbol> ();
-
- public SelectCtorTransform (IMethod ctor)
- {
- this.ctor = ctor;
- }
-
- public void Run (AstNode rootNode, TransformContext context)
- {
- ConstructorDeclaration ctorDecl = null;
- foreach (var node in rootNode.Children) {
- switch (node) {
- case ConstructorDeclaration ctor:
- if (ctor.GetSymbol () == this.ctor) {
- ctorDecl = ctor;
- } else {
- // remove other ctors
- ctor.Remove ();
- removedSymbols.Add (ctor.GetSymbol ());
- }
- break;
- case FieldDeclaration fd:
- // Remove any fields without initializers
- if (fd.Variables.All (v => v.Initializer.IsNull)) {
- fd.Remove ();
- removedSymbols.Add (fd.GetSymbol ());
- }
- break;
- }
- }
- if (ctorDecl?.Initializer.ConstructorInitializerType == ConstructorInitializerType.This) {
- // remove all fields
- foreach (var node in rootNode.Children) {
- switch (node) {
- case FieldDeclaration fd:
- fd.Remove ();
- removedSymbols.Add (fd.GetSymbol ());
- break;
- }
- }
- }
- foreach (var node in rootNode.Children) {
- if (node is Comment && removedSymbols.Contains (node.GetSymbol ()))
- node.Remove ();
- }
- }
- }
-
- public void DecompileProperty (PropertyDefinition property, ITextOutput output, DecompilerSettings options)
- {
- AddReferenceWarningMessage (property.Module.Assembly, output);
- WriteCommentLine (output, TypeToString (property.DeclaringType, includeNamespace: true));
- CSharpDecompiler decompiler = CreateDecompiler (property.Module, options);
- WriteCode (output, options, decompiler.Decompile (property), decompiler.TypeSystem);
- }
-
- public void DecompileField (FieldDefinition field, ITextOutput output, DecompilerSettings options)
- {
- AddReferenceWarningMessage (field.Module.Assembly, output);
- WriteCommentLine (output, TypeToString (field.DeclaringType, includeNamespace: true));
- CSharpDecompiler decompiler = CreateDecompiler (field.Module, options);
- if (field.IsLiteral) {
- WriteCode (output, options, decompiler.Decompile (field), decompiler.TypeSystem);
- } else {
- List<IMemberDefinition> members = CollectFieldsAndCtors (field.DeclaringType, field.IsStatic);
- decompiler.AstTransforms.Add (new SelectFieldTransform (decompiler.TypeSystem.Resolve (field)));
- WriteCode (output, options, decompiler.Decompile (members), decompiler.TypeSystem);
- }
- }
-
- private static List<IMemberDefinition> CollectFieldsAndCtors (TypeDefinition type, bool isStatic)
- {
- var members = new List<IMemberDefinition> ();
- foreach (var field in type.Fields) {
- if (field.IsStatic == isStatic)
- members.Add (field);
- }
- foreach (var ctor in type.Methods) {
- if (ctor.IsConstructor && ctor.IsStatic == isStatic)
- members.Add (ctor);
- }
-
- return members;
- }
-
- /// <summary>
- /// Removes all top-level members except for the specified fields.
- /// </summary>
- sealed class SelectFieldTransform : IAstTransform
- {
- readonly IField field;
-
- public SelectFieldTransform (IField field)
- {
- this.field = field;
- }
-
- public void Run (AstNode rootNode, TransformContext context)
- {
- foreach (var node in rootNode.Children) {
- switch (node) {
- case EntityDeclaration ed:
- if (node.GetSymbol () != field)
- node.Remove ();
- break;
- case Comment c:
- if (c.GetSymbol () != field)
- node.Remove ();
- break;
- }
- }
- }
- }
-
- public void DecompileEvent (EventDefinition ev, ITextOutput output, DecompilerSettings options)
- {
- AddReferenceWarningMessage (ev.Module.Assembly, output);
- WriteCommentLine (output, TypeToString (ev.DeclaringType, includeNamespace: true));
- CSharpDecompiler decompiler = CreateDecompiler (ev.Module, options);
- WriteCode (output, options, decompiler.Decompile (ev), decompiler.TypeSystem);
- }
-
- public void DecompileType (TypeDefinition type, ITextOutput output, DecompilerSettings options)
- {
- AddReferenceWarningMessage (type.Module.Assembly, output);
- WriteCommentLine (output, TypeToString (type, includeNamespace: true));
- CSharpDecompiler decompiler = CreateDecompiler (type.Module, options);
- WriteCode (output, options, decompiler.Decompile (type), decompiler.TypeSystem);
- }
-
- public static string GetPlatformDisplayName (ModuleDefinition module)
- {
- switch (module.Architecture) {
- case TargetArchitecture.I386:
- if ((module.Attributes & ModuleAttributes.Preferred32Bit) == ModuleAttributes.Preferred32Bit)
- return "AnyCPU (32-bit preferred)";
- else if ((module.Attributes & ModuleAttributes.Required32Bit) == ModuleAttributes.Required32Bit)
- return "x86";
- else
- return "AnyCPU (64-bit preferred)";
- case TargetArchitecture.AMD64:
- return "x64";
- case TargetArchitecture.IA64:
- return "Itanium";
- default:
- return module.Architecture.ToString ();
- }
- }
-
- public static string GetRuntimeDisplayName (ModuleDefinition module)
- {
- switch (module.Runtime) {
- case TargetRuntime.Net_1_0:
- return ".NET 1.0";
- case TargetRuntime.Net_1_1:
- return ".NET 1.1";
- case TargetRuntime.Net_2_0:
- return ".NET 2.0";
- case TargetRuntime.Net_4_0:
- return ".NET 4.0";
- }
- return null;
- }
-
- void AddReferenceWarningMessage (AssemblyDefinition assembly, ITextOutput output)
- {
- /*var loadedAssembly = MainWindow.Instance.CurrentAssemblyList.GetAssemblies ().FirstOrDefault (la => la.GetAssemblyDefinitionOrNull () == assembly);
- if (loadedAssembly == null || !loadedAssembly.LoadedAssemblyReferencesInfo.HasErrors)
- return;
- const string line1 = "Warning: Some assembly references could not be loaded. This might lead to incorrect decompilation of some parts,";
- const string line2 = "for ex. property getter/setter access. To get optimal decompilation results, please manually add the references to the list of loaded assemblies.";
- if (output is ISmartTextOutput fancyOutput) {
- fancyOutput.AddUIElement (() => new StackPanel {
- Margin = new Thickness (5),
- Orientation = Orientation.Horizontal,
- Children = {
- new Image {
- Width = 32,
- Height = 32,
- Source = Images.LoadImage(this, "Images/Warning.png")
- },
- new TextBlock {
- Margin = new Thickness(5, 0, 0, 0),
- Text = line1 + Environment.NewLine + line2
- }
- }
- });
- fancyOutput.WriteLine ();
- fancyOutput.AddButton (Images.ViewCode, "Show assembly load log", delegate {
- MainWindow.Instance.SelectNode (MainWindow.Instance.FindTreeNode (assembly).Children.OfType<ReferenceFolderTreeNode> ().First ());
- });
- fancyOutput.WriteLine ();
- } else {
- WriteCommentLine (output, line1);
- WriteCommentLine (output, line2);
- }*/
- }
+//// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop Team
+////
+//// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+//// software and associated documentation files (the "Software"), to deal in the Software
+//// without restriction, including without limitation the rights to use, copy, modify, merge,
+//// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+//// to whom the Software is furnished to do so, subject to the following conditions:
+////
+//// The above copyright notice and this permission notice shall be included in all copies or
+//// substantial portions of the Software.
+////
+//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+//// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+//// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+//// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+//// DEALINGS IN THE SOFTWARE.
+
+//using System;
+//using System.Collections;
+//using System.Collections.Generic;
+//using System.IO;
+//using System.Linq;
+//using System.Resources;
+
+//using ICSharpCode.Decompiler;
+//using Mono.Cecil;
+//using ICSharpCode.Decompiler.CSharp;
+//using ICSharpCode.Decompiler.CSharp.OutputVisitor;
+//using ICSharpCode.Decompiler.CSharp.Syntax;
+//using ICSharpCode.Decompiler.TypeSystem;
+//using ICSharpCode.Decompiler.CSharp.Transforms;
+
+//namespace ICSharpCode.ILSpy
+//{
+// /// <summary>
+// /// C# decompiler integration into ILSpy.
+// /// Note: if you're interested in using the decompiler without the ILSpy UI,
+// /// please directly use the CSharpDecompiler class.
+// /// </summary>
+// class CSharpLanguage
+// {
+// public static readonly CSharpLanguage Instance = new CSharpLanguage ();
+// string name = "C#";
+// int transformCount = int.MaxValue;
+
+//#if DEBUG
+// internal static IEnumerable<CSharpLanguage> GetDebugLanguages ()
+// {
+// var decompiler = new CSharpDecompiler (ModuleDefinition.CreateModule ("Dummy", ModuleKind.Dll), new DecompilerSettings ());
+// string lastTransformName = "no transforms";
+// int transformCount = 0;
+// foreach (var transform in decompiler.AstTransforms) {
+// yield return new CSharpLanguage {
+// transformCount = transformCount,
+// name = "C# - " + lastTransformName,
+// };
+// lastTransformName = "after " + transform.GetType ().Name;
+// transformCount++;
+// }
+// yield return new CSharpLanguage {
+// name = "C# - " + lastTransformName,
+// };
+// }
+//#endif
+
+// public string Name {
+// get { return name; }
+// }
+
+// public string FileExtension {
+// get { return ".cs"; }
+// }
+
+// public string ProjectFileExtension {
+// get { return ".csproj"; }
+// }
+
+
+// CSharpDecompiler CreateDecompiler (ModuleDefinition module, DecompilerSettings options)
+// {
+// CSharpDecompiler decompiler = new CSharpDecompiler (module, options);
+// //decompiler.CancellationToken = options.CancellationToken;
+// while (decompiler.AstTransforms.Count > transformCount)
+// decompiler.AstTransforms.RemoveAt (decompiler.AstTransforms.Count - 1);
+// return decompiler;
+// }
+
+// void WriteCode (ITextOutput output, DecompilerSettings settings, SyntaxTree syntaxTree, IDecompilerTypeSystem typeSystem)
+// {
+// syntaxTree.AcceptVisitor (new InsertParenthesesVisitor { InsertParenthesesForReadability = true });
+// TokenWriter tokenWriter = new TextTokenWriter (output, settings, typeSystem) { FoldBraces = settings.FoldBraces, /*ExpandMemberDefinitions = settings.ExpandMemberDefinitions */};
+// syntaxTree.AcceptVisitor (new CSharpOutputVisitor (tokenWriter, settings.CSharpFormattingOptions));
+// }
+
+// public void DecompileMethod (MethodDefinition method, ITextOutput output, DecompilerSettings options)
+// {
+// AddReferenceWarningMessage (method.Module.Assembly, output);
+// WriteCommentLine (output, TypeToString (method.DeclaringType, includeNamespace: true));
+// CSharpDecompiler decompiler = CreateDecompiler (method.Module, options);
+// if (method.IsConstructor && !method.DeclaringType.IsValueType) {
+// List<IMemberDefinition> members = CollectFieldsAndCtors (method.DeclaringType, method.IsStatic);
+// decompiler.AstTransforms.Add (new SelectCtorTransform (decompiler.TypeSystem.Resolve (method)));
+// WriteCode (output, options, decompiler.Decompile (members), decompiler.TypeSystem);
+// } else {
+// WriteCode (output, options, decompiler.Decompile (method), decompiler.TypeSystem);
+// }
+// }
+
+// class SelectCtorTransform : IAstTransform
+// {
+// readonly IMethod ctor;
+// readonly HashSet<ISymbol> removedSymbols = new HashSet<ISymbol> ();
+
+// public SelectCtorTransform (IMethod ctor)
+// {
+// this.ctor = ctor;
+// }
+
+// public void Run (AstNode rootNode, TransformContext context)
+// {
+// ConstructorDeclaration ctorDecl = null;
+// foreach (var node in rootNode.Children) {
+// switch (node) {
+// case ConstructorDeclaration ctor:
+// if (ctor.GetSymbol () == this.ctor) {
+// ctorDecl = ctor;
+// } else {
+// // remove other ctors
+// ctor.Remove ();
+// removedSymbols.Add (ctor.GetSymbol ());
+// }
+// break;
+// case FieldDeclaration fd:
+// // Remove any fields without initializers
+// if (fd.Variables.All (v => v.Initializer.IsNull)) {
+// fd.Remove ();
+// removedSymbols.Add (fd.GetSymbol ());
+// }
+// break;
+// }
+// }
+// if (ctorDecl?.Initializer.ConstructorInitializerType == ConstructorInitializerType.This) {
+// // remove all fields
+// foreach (var node in rootNode.Children) {
+// switch (node) {
+// case FieldDeclaration fd:
+// fd.Remove ();
+// removedSymbols.Add (fd.GetSymbol ());
+// break;
+// }
+// }
+// }
+// foreach (var node in rootNode.Children) {
+// if (node is Comment && removedSymbols.Contains (node.GetSymbol ()))
+// node.Remove ();
+// }
+// }
+// }
+
+// public void DecompileProperty (PropertyDefinition property, ITextOutput output, DecompilerSettings options)
+// {
+// AddReferenceWarningMessage (property.Module.Assembly, output);
+// WriteCommentLine (output, TypeToString (property.DeclaringType, includeNamespace: true));
+// CSharpDecompiler decompiler = CreateDecompiler (property.Module, options);
+// WriteCode (output, options, decompiler.Decompile (property), decompiler.TypeSystem);
+// }
+
+// public void DecompileField (FieldDefinition field, ITextOutput output, DecompilerSettings options)
+// {
+// AddReferenceWarningMessage (field.Module.Assembly, output);
+// WriteCommentLine (output, TypeToString (field.DeclaringType, includeNamespace: true));
+// CSharpDecompiler decompiler = CreateDecompiler (field.Module, options);
+// if (field.IsLiteral) {
+// WriteCode (output, options, decompiler.Decompile (field), decompiler.TypeSystem);
+// } else {
+// List<IMemberDefinition> members = CollectFieldsAndCtors (field.DeclaringType, field.IsStatic);
+// decompiler.AstTransforms.Add (new SelectFieldTransform (decompiler.TypeSystem.Resolve (field)));
+// WriteCode (output, options, decompiler.Decompile (members), decompiler.TypeSystem);
+// }
+// }
+
+// private static List<IMemberDefinition> CollectFieldsAndCtors (TypeDefinition type, bool isStatic)
+// {
+// var members = new List<IMemberDefinition> ();
+// foreach (var field in type.Fields) {
+// if (field.IsStatic == isStatic)
+// members.Add (field);
+// }
+// foreach (var ctor in type.Methods) {
+// if (ctor.IsConstructor && ctor.IsStatic == isStatic)
+// members.Add (ctor);
+// }
+
+// return members;
+// }
+
+// /// <summary>
+// /// Removes all top-level members except for the specified fields.
+// /// </summary>
+// sealed class SelectFieldTransform : IAstTransform
+// {
+// readonly IField field;
+
+// public SelectFieldTransform (IField field)
+// {
+// this.field = field;
+// }
+
+// public void Run (AstNode rootNode, TransformContext context)
+// {
+// foreach (var node in rootNode.Children) {
+// switch (node) {
+// case EntityDeclaration ed:
+// if (node.GetSymbol () != field)
+// node.Remove ();
+// break;
+// case Comment c:
+// if (c.GetSymbol () != field)
+// node.Remove ();
+// break;
+// }
+// }
+// }
+// }
+
+// public void DecompileEvent (EventDefinition ev, ITextOutput output, DecompilerSettings options)
+// {
+// AddReferenceWarningMessage (ev.Module.Assembly, output);
+// WriteCommentLine (output, TypeToString (ev.DeclaringType, includeNamespace: true));
+// CSharpDecompiler decompiler = CreateDecompiler (ev.Module, options);
+// WriteCode (output, options, decompiler.Decompile (ev), decompiler.TypeSystem);
+// }
+
+// public void DecompileType (TypeDefinition type, ITextOutput output, DecompilerSettings options)
+// {
+// AddReferenceWarningMessage (type.Module.Assembly, output);
+// WriteCommentLine (output, TypeToString (type, includeNamespace: true));
+// CSharpDecompiler decompiler = CreateDecompiler (type.Module, options);
+// WriteCode (output, options, decompiler.Decompile (type), decompiler.TypeSystem);
+// }
+
+// public static string GetPlatformDisplayName (ModuleDefinition module)
+// {
+// switch (module.Architecture) {
+// case TargetArchitecture.I386:
+// if ((module.Attributes & ModuleAttributes.Preferred32Bit) == ModuleAttributes.Preferred32Bit)
+// return "AnyCPU (32-bit preferred)";
+// else if ((module.Attributes & ModuleAttributes.Required32Bit) == ModuleAttributes.Required32Bit)
+// return "x86";
+// else
+// return "AnyCPU (64-bit preferred)";
+// case TargetArchitecture.AMD64:
+// return "x64";
+// case TargetArchitecture.IA64:
+// return "Itanium";
+// default:
+// return module.Architecture.ToString ();
+// }
+// }
+
+// public static string GetRuntimeDisplayName (ModuleDefinition module)
+// {
+// switch (module.Runtime) {
+// case TargetRuntime.Net_1_0:
+// return ".NET 1.0";
+// case TargetRuntime.Net_1_1:
+// return ".NET 1.1";
+// case TargetRuntime.Net_2_0:
+// return ".NET 2.0";
+// case TargetRuntime.Net_4_0:
+// return ".NET 4.0";
+// }
+// return null;
+// }
+
+// void AddReferenceWarningMessage (AssemblyDefinition assembly, ITextOutput output)
+// {
+// /*var loadedAssembly = MainWindow.Instance.CurrentAssemblyList.GetAssemblies ().FirstOrDefault (la => la.GetAssemblyDefinitionOrNull () == assembly);
+// if (loadedAssembly == null || !loadedAssembly.LoadedAssemblyReferencesInfo.HasErrors)
+// return;
+// const string line1 = "Warning: Some assembly references could not be loaded. This might lead to incorrect decompilation of some parts,";
+// const string line2 = "for ex. property getter/setter access. To get optimal decompilation results, please manually add the references to the list of loaded assemblies.";
+// if (output is ISmartTextOutput fancyOutput) {
+// fancyOutput.AddUIElement (() => new StackPanel {
+// Margin = new Thickness (5),
+// Orientation = Orientation.Horizontal,
+// Children = {
+// new Image {
+// Width = 32,
+// Height = 32,
+// Source = Images.LoadImage(this, "Images/Warning.png")
+// },
+// new TextBlock {
+// Margin = new Thickness(5, 0, 0, 0),
+// Text = line1 + Environment.NewLine + line2
+// }
+// }
+// });
+// fancyOutput.WriteLine ();
+// fancyOutput.AddButton (Images.ViewCode, "Show assembly load log", delegate {
+// MainWindow.Instance.SelectNode (MainWindow.Instance.FindTreeNode (assembly).Children.OfType<ReferenceFolderTreeNode> ().First ());
+// });
+// fancyOutput.WriteLine ();
+// } else {
+// WriteCommentLine (output, line1);
+// WriteCommentLine (output, line2);
+// }*/
+// }
- public string TypeToString (TypeReference type, bool includeNamespace, ICustomAttributeProvider typeAttributes = null)
- {
- ConvertTypeOptions options = ConvertTypeOptions.IncludeTypeParameterDefinitions;
- if (includeNamespace)
- options |= ConvertTypeOptions.IncludeNamespace;
-
- return TypeToString (options, type, typeAttributes);
- }
-
- string TypeToString (ConvertTypeOptions options, TypeReference type, ICustomAttributeProvider typeAttributes = null)
- {
- AstType astType = CSharpDecompiler.ConvertType (type, typeAttributes, options);
-
- StringWriter w = new StringWriter ();
- if (type.IsByReference) {
- ParameterDefinition pd = typeAttributes as ParameterDefinition;
- if (pd != null && (!pd.IsIn && pd.IsOut))
- w.Write ("out ");
- else
- w.Write ("ref ");
-
- if (astType is ComposedType && ((ComposedType)astType).PointerRank > 0)
- ((ComposedType)astType).PointerRank--;
- }
-
- astType.AcceptVisitor (new CSharpOutputVisitor (w, TypeToStringFormattingOptions));
- return w.ToString ();
- }
-
- static readonly CSharpFormattingOptions TypeToStringFormattingOptions = FormattingOptionsFactory.CreateEmpty ();
-
- public string FormatPropertyName (PropertyDefinition property, bool? isIndexer)
- {
- if (property == null)
- throw new ArgumentNullException (nameof (property));
-
- if (!isIndexer.HasValue) {
- isIndexer = property.IsIndexer ();
- }
- if (isIndexer.Value) {
- var buffer = new System.Text.StringBuilder ();
- var accessor = property.GetMethod ?? property.SetMethod;
- if (accessor.HasOverrides) {
- var declaringType = accessor.Overrides [0].DeclaringType;
- buffer.Append (TypeToString (declaringType, includeNamespace: true));
- buffer.Append (@".");
- }
- buffer.Append (@"this[");
- bool addSeparator = false;
- foreach (var p in property.Parameters) {
- if (addSeparator)
- buffer.Append (@", ");
- else
- addSeparator = true;
- buffer.Append (TypeToString (p.ParameterType, includeNamespace: true));
- }
- buffer.Append (@"]");
- return buffer.ToString ();
- } else
- return property.Name;
- }
-
- public string FormatMethodName (MethodDefinition method)
- {
- if (method == null)
- throw new ArgumentNullException ("method");
-
- return (method.IsConstructor) ? FormatTypeName (method.DeclaringType) : method.Name;
- }
-
- public string FormatTypeName (TypeDefinition type)
- {
- if (type == null)
- throw new ArgumentNullException ("type");
-
- return TypeToString (ConvertTypeOptions.DoNotUsePrimitiveTypeNames | ConvertTypeOptions.IncludeTypeParameterDefinitions, type);
- }
-
- public void WriteCommentLine (ITextOutput output, string comment)
- {
- output.WriteLine ("// " + comment);
- }
- }
-}
+// public string TypeToString (TypeReference type, bool includeNamespace, ICustomAttributeProvider typeAttributes = null)
+// {
+// ConvertTypeOptions options = ConvertTypeOptions.IncludeTypeParameterDefinitions;
+// if (includeNamespace)
+// options |= ConvertTypeOptions.IncludeNamespace;
+
+// return TypeToString (options, type, typeAttributes);
+// }
+
+// string TypeToString (ConvertTypeOptions options, TypeReference type, ICustomAttributeProvider typeAttributes = null)
+// {
+// AstType astType = CSharpDecompiler.ConvertType (type, typeAttributes, options);
+
+// StringWriter w = new StringWriter ();
+// if (type.IsByReference) {
+// ParameterDefinition pd = typeAttributes as ParameterDefinition;
+// if (pd != null && (!pd.IsIn && pd.IsOut))
+// w.Write ("out ");
+// else
+// w.Write ("ref ");
+
+// if (astType is ComposedType && ((ComposedType)astType).PointerRank > 0)
+// ((ComposedType)astType).PointerRank--;
+// }
+
+// astType.AcceptVisitor (new CSharpOutputVisitor (w, TypeToStringFormattingOptions));
+// return w.ToString ();
+// }
+
+// static readonly CSharpFormattingOptions TypeToStringFormattingOptions = FormattingOptionsFactory.CreateEmpty ();
+
+// public string FormatPropertyName (PropertyDefinition property, bool? isIndexer)
+// {
+// if (property == null)
+// throw new ArgumentNullException (nameof (property));
+
+// if (!isIndexer.HasValue) {
+// isIndexer = property.IsIndexer ();
+// }
+// if (isIndexer.Value) {
+// var buffer = new System.Text.StringBuilder ();
+// var accessor = property.GetMethod ?? property.SetMethod;
+// if (accessor.HasOverrides) {
+// var declaringType = accessor.Overrides [0].DeclaringType;
+// buffer.Append (TypeToString (declaringType, includeNamespace: true));
+// buffer.Append (@".");
+// }
+// buffer.Append (@"this[");
+// bool addSeparator = false;
+// foreach (var p in property.Parameters) {
+// if (addSeparator)
+// buffer.Append (@", ");
+// else
+// addSeparator = true;
+// buffer.Append (TypeToString (p.ParameterType, includeNamespace: true));
+// }
+// buffer.Append (@"]");
+// return buffer.ToString ();
+// } else
+// return property.Name;
+// }
+
+// public string FormatMethodName (MethodDefinition method)
+// {
+// if (method == null)
+// throw new ArgumentNullException ("method");
+
+// return (method.IsConstructor) ? FormatTypeName (method.DeclaringType) : method.Name;
+// }
+
+// public string FormatTypeName (TypeDefinition type)
+// {
+// if (type == null)
+// throw new ArgumentNullException ("type");
+
+// return TypeToString (ConvertTypeOptions.DoNotUsePrimitiveTypeNames | ConvertTypeOptions.IncludeTypeParameterDefinitions, type);
+// }
+
+// public void WriteCommentLine (ITextOutput output, string comment)
+// {
+// output.WriteLine ("// " + comment);
+// }
+// }
+//}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/XmlDocIdLib/XmlDocIdGenerator.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/XmlDocIdLib/XmlDocIdGenerator.cs
index 2bc932d588..c67eb02862 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/XmlDocIdLib/XmlDocIdGenerator.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/XmlDocIdLib/XmlDocIdGenerator.cs
@@ -1,651 +1,651 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using Mono.Cecil;
-
-namespace XmlDocIdLib
-{
- #region XmlDocIdGenerator
- class XmlDocIdGenerator
- {
- #region Constructors
- public XmlDocIdGenerator()
- {
- this.m_compat = CompatibilityType.Net35;
- }
- #endregion
-
- #region Public methods
- public string GetXmlDocPath(
- MemberReference Member)
- {
- if (Member == null)
- throw new ArgumentNullException("Member");
-
- StringBuilder stbBuilder = new StringBuilder();
- List<string> Path = new List<string>();
-
- // get path
- GetXmlDocPathRecursive(Member, Path);
-
- // generate string
- if (Path.Count == 0)
- return string.Empty;
-
- foreach (string strTemp in Path)
- stbBuilder.Append(strTemp);
-
- return stbBuilder.ToString();
- }
-
- public void SetCompatibilityType(
- CompatibilityType Compatibility)
- {
- if (Compatibility == CompatibilityType.None)
- throw new ArgumentException("Invalid parameter value.");
-
- this.m_compat = Compatibility;
- }
-
- public CompatibilityType GetCompatibilityType()
- {
- return this.m_compat;
- }
- #endregion
-
- #region Private methods
- private string GetXmlDocExplicitIfaceImplPath(
- MemberReference Member)
- {
- TypeReference declaringTypeRef = null;
- TypeDefinition declaringTypeDef = null;
- string strPath = string.Empty;
-
- if (Member.DeclaringType is GenericInstanceType)
- declaringTypeRef = (Member.DeclaringType as GenericInstanceType).ElementType;
- else
- declaringTypeRef = Member.DeclaringType;
-
- // lookup TypeDefinition for TypeReference
- declaringTypeDef = TryLookUpTypeDefinition(declaringTypeRef);
-
- if (declaringTypeDef == null || declaringTypeDef.IsInterface)
- return string.Empty;
-
- foreach (InterfaceImplementation tempIface in declaringTypeDef.Interfaces)
- {
- var tempIfaceRef = tempIface.InterfaceType;
- // check whether this member name begins with interface name (plus generic arguments)
- if (Member.Name.StartsWith(this.StripInterfaceName(tempIfaceRef.FullName)))
- {
- // element begins with interface name, this is explicit interface implementation,
- // get explicit interface implementation path
-
- // add member's name to path, at this point
- // name contains interface name (with generic arguments) plus member name
- strPath = Member.Name;
-
- // remove text between "<" and ">" and put interface parameters
- // (in explicit mode of course)
- int LeftBrace = strPath.IndexOf("<");
- int RightBrace = strPath.LastIndexOf(">");
-
- if (LeftBrace != -1 && RightBrace != -1)
- {
- bool firstAppend = true;
- GenericInstanceType tempGenericIfaceDef = null;
- StringBuilder stbParameters = new StringBuilder();
-
- // convert to definition
- tempGenericIfaceDef = tempIfaceRef as GenericInstanceType;
-
- if (tempGenericIfaceDef == null)
- break;
-
- strPath = strPath.Remove(LeftBrace, (RightBrace - LeftBrace) + 1);
- stbParameters.Append("{");
- foreach (TypeReference tempParam in tempGenericIfaceDef.GenericArguments)
- {
- // in "explicit" mode "@" is used as a separator instead of ","
- // in "normal" mode
- if (!firstAppend)
- stbParameters.Append(CanAppendSpecialExplicitChar() ? "@" : ",");
-
- GetXmlDocParameterPathRecursive(tempParam, true, stbParameters);
- firstAppend = false;
- }
- stbParameters.Append("}");
-
- // insert
- strPath = strPath.Insert(LeftBrace, stbParameters.ToString());
- }
-
- // replace "." with "#"
- if (CanAppendSpecialExplicitChar())
- strPath = strPath.Replace(".", "#");
-
- return strPath;
- }
- }
-
- return string.Empty;
- }
-
- private TypeDefinition TryLookUpTypeDefinition(
- TypeReference Reference)
- {
- // try find in the current assembly
- foreach (TypeDefinition tempTypeDef in Reference.Module.Types)
- if (tempTypeDef.ToString() == Reference.ToString())
- return tempTypeDef;
-
- return null;
- }
-
- private string StripInterfaceName(
- string OrginalName)
- {
- StringBuilder builderStrippedName = new StringBuilder();
-
- // split name
- string[] strSlices = OrginalName.Split(new char[] { '`' });
-
- // remove numbers at the begining of each string to "<" charter
- if (strSlices.Length > 1)
- for (int i = 0; i < strSlices.Length; i++)
- if (strSlices[i].Contains("<"))
- strSlices[i] = strSlices[i].Remove(0, strSlices[i].IndexOf("<"));
-
- // build string
- foreach (string tempString in strSlices)
- builderStrippedName.Append(tempString);
-
- return builderStrippedName.ToString();
- }
-
- private void GetXmlDocPathRecursive(
- MemberReference Member,
- List<string> CurrPath)
- {
- /*
- * determine type of the current member, if current path is empty
- * we have also to insert to path element type:
- * - "N:" - for namespace (not used here)
- * - "T:" - for a type (class, structure, delegate)
- * - "M:" - for a method (or constructor)
- * - "F:" - for a field
- * - "P:" - for a property or indexer
- * - "E:" - for an event
- */
-
- StringBuilder stbTempPath = new StringBuilder();
- string strExplicitPath = string.Empty;
-
- if (Member is TypeReference)
- {
- TypeReference thisTypeRef = null;
- GenericInstanceType thisGenericTypeDef = null;
- GenericParameter thisGenericParam = null;
- string strTempTypeName = string.Empty;
-
- if (Member is GenericInstanceType)
- {
- thisGenericTypeDef = Member as GenericInstanceType;
- thisTypeRef = thisGenericTypeDef.ElementType;
- }
- else if (Member is GenericParameter)
- {
- thisGenericParam = Member as GenericParameter;
- CurrPath.Add("`" + thisGenericParam.Position.ToString());
-
- // return immediatelly, because there is nothing to do.
- return;
- }
- else
- {
- // cast to TypeReference
- thisTypeRef = Member as TypeReference;
- }
-
- // if nested, scan enclosing type
- if (this.IsNested(thisTypeRef))
- GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
-
- // determine namespace
- string strNamespace = string.Empty;
- if ((thisTypeRef.Namespace != null && thisTypeRef.Namespace.Length > 0) || thisTypeRef.DeclaringType != null)
- strNamespace = thisTypeRef.Namespace + ".";
-
- // remove "`" char or not
- string strTempShortTypeName = thisTypeRef.Name;
- if (thisTypeRef.Name.Contains("`") && thisGenericTypeDef != null)
- strTempShortTypeName = thisTypeRef.Name.Remove(thisTypeRef.Name.IndexOf("`"));
-
- // class, interface, structure or delegate
- if (CurrPath.Count == 0)
- strTempTypeName = "T:" + strNamespace + strTempShortTypeName;
- else if (CurrPath.Count > 0 && !this.IsNested(thisTypeRef))
- strTempTypeName = strNamespace + strTempShortTypeName;
- else
- strTempTypeName = "." + strTempShortTypeName;
-
- CurrPath.Add(strTempTypeName);
-
- // add generic _arguments_ (not parameters !)
- if (thisTypeRef.Name.Contains("`") && thisGenericTypeDef != null)
- {
- bool firstAppend = true;
-
- // open bracket
- CurrPath.Add("{");
-
- foreach (TypeReference tempGenArgument in thisGenericTypeDef.GenericArguments)
- {
- // add comma
- if (!firstAppend)
- CurrPath.Add(",");
-
- // add argument's xmlDocPath
- GetXmlDocPathRecursive(tempGenArgument as MemberReference, CurrPath);
-
- // first append done
- firstAppend = false;
- }
-
- // close bracket
- CurrPath.Add("}");
- }
- }
- else if (Member is MethodReference)
- {
- var thisMethodDef = Member as MethodReference;
-
- // method, get type's path firstAppend
- CurrPath.Add("M:");
- if (Member.DeclaringType != null)
- GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
-
- // method's path
- // check whether this is constructor method, or explicitly implemented method
- strExplicitPath = GetXmlDocExplicitIfaceImplPath(Member);
+//using System;
+//using System.Collections.Generic;
+//using System.Text;
+
+//using Mono.Cecil;
+
+//namespace XmlDocIdLib
+//{
+// #region XmlDocIdGenerator
+// class XmlDocIdGenerator
+// {
+// #region Constructors
+// public XmlDocIdGenerator()
+// {
+// this.m_compat = CompatibilityType.Net35;
+// }
+// #endregion
+
+// #region Public methods
+// public string GetXmlDocPath(
+// MemberReference Member)
+// {
+// if (Member == null)
+// throw new ArgumentNullException("Member");
+
+// StringBuilder stbBuilder = new StringBuilder();
+// List<string> Path = new List<string>();
+
+// // get path
+// GetXmlDocPathRecursive(Member, Path);
+
+// // generate string
+// if (Path.Count == 0)
+// return string.Empty;
+
+// foreach (string strTemp in Path)
+// stbBuilder.Append(strTemp);
+
+// return stbBuilder.ToString();
+// }
+
+// public void SetCompatibilityType(
+// CompatibilityType Compatibility)
+// {
+// if (Compatibility == CompatibilityType.None)
+// throw new ArgumentException("Invalid parameter value.");
+
+// this.m_compat = Compatibility;
+// }
+
+// public CompatibilityType GetCompatibilityType()
+// {
+// return this.m_compat;
+// }
+// #endregion
+
+// #region Private methods
+// private string GetXmlDocExplicitIfaceImplPath(
+// MemberReference Member)
+// {
+// TypeReference declaringTypeRef = null;
+// TypeDefinition declaringTypeDef = null;
+// string strPath = string.Empty;
+
+// if (Member.DeclaringType is GenericInstanceType)
+// declaringTypeRef = (Member.DeclaringType as GenericInstanceType).ElementType;
+// else
+// declaringTypeRef = Member.DeclaringType;
+
+// // lookup TypeDefinition for TypeReference
+// declaringTypeDef = TryLookUpTypeDefinition(declaringTypeRef);
+
+// if (declaringTypeDef == null || declaringTypeDef.IsInterface)
+// return string.Empty;
+
+// foreach (InterfaceImplementation tempIface in declaringTypeDef.Interfaces)
+// {
+// var tempIfaceRef = tempIface.InterfaceType;
+// // check whether this member name begins with interface name (plus generic arguments)
+// if (Member.Name.StartsWith(this.StripInterfaceName(tempIfaceRef.FullName)))
+// {
+// // element begins with interface name, this is explicit interface implementation,
+// // get explicit interface implementation path
+
+// // add member's name to path, at this point
+// // name contains interface name (with generic arguments) plus member name
+// strPath = Member.Name;
+
+// // remove text between "<" and ">" and put interface parameters
+// // (in explicit mode of course)
+// int LeftBrace = strPath.IndexOf("<");
+// int RightBrace = strPath.LastIndexOf(">");
+
+// if (LeftBrace != -1 && RightBrace != -1)
+// {
+// bool firstAppend = true;
+// GenericInstanceType tempGenericIfaceDef = null;
+// StringBuilder stbParameters = new StringBuilder();
+
+// // convert to definition
+// tempGenericIfaceDef = tempIfaceRef as GenericInstanceType;
+
+// if (tempGenericIfaceDef == null)
+// break;
+
+// strPath = strPath.Remove(LeftBrace, (RightBrace - LeftBrace) + 1);
+// stbParameters.Append("{");
+// foreach (TypeReference tempParam in tempGenericIfaceDef.GenericArguments)
+// {
+// // in "explicit" mode "@" is used as a separator instead of ","
+// // in "normal" mode
+// if (!firstAppend)
+// stbParameters.Append(CanAppendSpecialExplicitChar() ? "@" : ",");
+
+// GetXmlDocParameterPathRecursive(tempParam, true, stbParameters);
+// firstAppend = false;
+// }
+// stbParameters.Append("}");
+
+// // insert
+// strPath = strPath.Insert(LeftBrace, stbParameters.ToString());
+// }
+
+// // replace "." with "#"
+// if (CanAppendSpecialExplicitChar())
+// strPath = strPath.Replace(".", "#");
+
+// return strPath;
+// }
+// }
+
+// return string.Empty;
+// }
+
+// private TypeDefinition TryLookUpTypeDefinition(
+// TypeReference Reference)
+// {
+// // try find in the current assembly
+// foreach (TypeDefinition tempTypeDef in Reference.Module.Types)
+// if (tempTypeDef.ToString() == Reference.ToString())
+// return tempTypeDef;
+
+// return null;
+// }
+
+// private string StripInterfaceName(
+// string OrginalName)
+// {
+// StringBuilder builderStrippedName = new StringBuilder();
+
+// // split name
+// string[] strSlices = OrginalName.Split(new char[] { '`' });
+
+// // remove numbers at the begining of each string to "<" charter
+// if (strSlices.Length > 1)
+// for (int i = 0; i < strSlices.Length; i++)
+// if (strSlices[i].Contains("<"))
+// strSlices[i] = strSlices[i].Remove(0, strSlices[i].IndexOf("<"));
+
+// // build string
+// foreach (string tempString in strSlices)
+// builderStrippedName.Append(tempString);
+
+// return builderStrippedName.ToString();
+// }
+
+// private void GetXmlDocPathRecursive(
+// MemberReference Member,
+// List<string> CurrPath)
+// {
+// /*
+// * determine type of the current member, if current path is empty
+// * we have also to insert to path element type:
+// * - "N:" - for namespace (not used here)
+// * - "T:" - for a type (class, structure, delegate)
+// * - "M:" - for a method (or constructor)
+// * - "F:" - for a field
+// * - "P:" - for a property or indexer
+// * - "E:" - for an event
+// */
+
+// StringBuilder stbTempPath = new StringBuilder();
+// string strExplicitPath = string.Empty;
+
+// if (Member is TypeReference)
+// {
+// TypeReference thisTypeRef = null;
+// GenericInstanceType thisGenericTypeDef = null;
+// GenericParameter thisGenericParam = null;
+// string strTempTypeName = string.Empty;
+
+// if (Member is GenericInstanceType)
+// {
+// thisGenericTypeDef = Member as GenericInstanceType;
+// thisTypeRef = thisGenericTypeDef.ElementType;
+// }
+// else if (Member is GenericParameter)
+// {
+// thisGenericParam = Member as GenericParameter;
+// CurrPath.Add("`" + thisGenericParam.Position.ToString());
+
+// // return immediatelly, because there is nothing to do.
+// return;
+// }
+// else
+// {
+// // cast to TypeReference
+// thisTypeRef = Member as TypeReference;
+// }
+
+// // if nested, scan enclosing type
+// if (this.IsNested(thisTypeRef))
+// GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
+
+// // determine namespace
+// string strNamespace = string.Empty;
+// if ((thisTypeRef.Namespace != null && thisTypeRef.Namespace.Length > 0) || thisTypeRef.DeclaringType != null)
+// strNamespace = thisTypeRef.Namespace + ".";
+
+// // remove "`" char or not
+// string strTempShortTypeName = thisTypeRef.Name;
+// if (thisTypeRef.Name.Contains("`") && thisGenericTypeDef != null)
+// strTempShortTypeName = thisTypeRef.Name.Remove(thisTypeRef.Name.IndexOf("`"));
+
+// // class, interface, structure or delegate
+// if (CurrPath.Count == 0)
+// strTempTypeName = "T:" + strNamespace + strTempShortTypeName;
+// else if (CurrPath.Count > 0 && !this.IsNested(thisTypeRef))
+// strTempTypeName = strNamespace + strTempShortTypeName;
+// else
+// strTempTypeName = "." + strTempShortTypeName;
+
+// CurrPath.Add(strTempTypeName);
+
+// // add generic _arguments_ (not parameters !)
+// if (thisTypeRef.Name.Contains("`") && thisGenericTypeDef != null)
+// {
+// bool firstAppend = true;
+
+// // open bracket
+// CurrPath.Add("{");
+
+// foreach (TypeReference tempGenArgument in thisGenericTypeDef.GenericArguments)
+// {
+// // add comma
+// if (!firstAppend)
+// CurrPath.Add(",");
+
+// // add argument's xmlDocPath
+// GetXmlDocPathRecursive(tempGenArgument as MemberReference, CurrPath);
+
+// // first append done
+// firstAppend = false;
+// }
+
+// // close bracket
+// CurrPath.Add("}");
+// }
+// }
+// else if (Member is MethodReference)
+// {
+// var thisMethodDef = Member as MethodReference;
+
+// // method, get type's path firstAppend
+// CurrPath.Add("M:");
+// if (Member.DeclaringType != null)
+// GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
+
+// // method's path
+// // check whether this is constructor method, or explicitly implemented method
+// strExplicitPath = GetXmlDocExplicitIfaceImplPath(Member);
- //if (thisMethodDef.IsStatic && thisMethodDef.IsConstructor)
- // stbTempPath.Append(".#cctor");
- //if (!thisMethodDef.IsStatic && thisMethodDef.IsConstructor)
- // stbTempPath.Append(".#ctor");
- stbTempPath.Append (".");
- if (strExplicitPath.Length > 0)
- stbTempPath.Append (strExplicitPath);
- else
- stbTempPath.Append (thisMethodDef.Name);
-
- // check whether this method is generic
- if (thisMethodDef.GenericParameters.Count > 0)
- stbTempPath.Append("``").Append (thisMethodDef.GenericParameters.Count);
-
- if (thisMethodDef.Parameters.Count > 0)
- stbTempPath.Append("(");
- bool firstAppend = true;
- foreach (ParameterDefinition TempParam in thisMethodDef.Parameters)
- {
- if (!firstAppend)
- stbTempPath.Append(",");
-
- stbTempPath.Append(GetXmlDocParameterPath(TempParam.ParameterType, false));
- firstAppend = false;
- }
-
- if (thisMethodDef.Parameters.Count > 0)
- stbTempPath.Append(")");
-
- // check whether this is a conversion operator (implicit or explicit)
- // if so, we have to read return type and add "~" char.
- //if (IsOperator(thisMethodDef))
- //{
- // OperatorType OpType = GetOperatorType(thisMethodDef);
-
- // if (OpType == OperatorType.op_Implicit || OpType == OperatorType.op_Explicit)
- // {
- // // add return type parameter path
- // stbTempPath.Append("~");
- // stbTempPath.Append(GetXmlDocParameterPath(thisMethodDef.ReturnType, false));
- // }
- //}
-
- // add to path
- CurrPath.Add(stbTempPath.ToString());
- }
- else if (Member is FieldReference)
- {
- // field, get type's path name
- CurrPath.Add("F:");
- if (Member.DeclaringType != null)
- GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
-
- // field's path
- CurrPath.Add("." + Member.Name);
- }
- else if (Member is PropertyReference)
- {
- // property or indexer, get declaring type's path
- CurrPath.Add("P:");
- if (Member.DeclaringType != null)
- GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
-
- // property's path
- // check whether this is explicitly implemented property
- strExplicitPath = GetXmlDocExplicitIfaceImplPath(Member);
- stbTempPath.Append (".");
- if (strExplicitPath.Length > 0)
- stbTempPath.Append (strExplicitPath);
- else
- stbTempPath.Append (Member.Name);
-
- // is it an indexer ?
- bool firstAppend = true;
- PropertyDefinition piProperty = Member as PropertyDefinition;
- if (piProperty.Parameters.Count > 0)
- stbTempPath.Append("(");
-
- foreach (ParameterDefinition TempParam in piProperty.Parameters)
- {
- if (!firstAppend)
- stbTempPath.Append(",");
-
- stbTempPath.Append(GetXmlDocParameterPath(TempParam.ParameterType, false));
- firstAppend = false;
- }
-
- if (piProperty.Parameters.Count > 0)
- stbTempPath.Append(")");
-
- CurrPath.Add(stbTempPath.ToString());
- }
- else if (Member is EventReference)
- {
- // event, get type's path firstAppend
- CurrPath.Add("E:");
- if (Member.DeclaringType != null)
- GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
-
- // event's path
- CurrPath.Add("." + Member.Name);
- }
- }
-
- private string GetXmlDocParameterPath(
- TypeReference Type,
- bool ExplicitMode)
- {
- StringBuilder stbCurrPath = new StringBuilder();
-
- GetXmlDocParameterPathRecursive(Type, ExplicitMode, stbCurrPath);
-
- return stbCurrPath.ToString();
- }
-
- private void GetXmlDocParameterPathRecursive(
- TypeReference tpType,
- bool ExplicitMode,
- StringBuilder CurrPath)
- {
- if (tpType == null)
- return;
-
- if (tpType.GenericParameters.Count > 0)
- {
- CurrPath.Append(tpType.Namespace)
- .Append ((CanAppendSpecialExplicitChar () && ExplicitMode) ? "#" : ".")
- .Append(StripGenericName(tpType.Name));
-
- // list parameters or types
- bool firstAppend = true;
- CurrPath.Append("{");
- foreach (GenericParameter TempType in tpType.GenericParameters)
- {
- if (!firstAppend)
- CurrPath.Append(",");
-
- CurrPath.Append(GetXmlDocParameterPath(TempType, ExplicitMode));
- firstAppend = false;
- }
- CurrPath.Append("}");
- }
- else if (tpType is GenericInstanceType)
- {
- GenericInstanceType thisGenericType = tpType as GenericInstanceType;
-
- // if nested, scan enclosing type
- if (tpType.DeclaringType != null)
- CurrPath.Append(GetXmlDocParameterPath(tpType.DeclaringType, ExplicitMode));
-
- // determine namespace
- string strNamespace = string.Empty;
- if ((tpType.Namespace != null && tpType.Namespace.Length > 0) || tpType.DeclaringType != null)
- {
- strNamespace = tpType.Namespace +
- ((CanAppendSpecialExplicitChar() && ExplicitMode) ? "#" : ".");
- }
-
- CurrPath.Append(strNamespace).Append (StripGenericName(thisGenericType.Name));
-
- // list parameters or types
- bool firstAppend = true;
- CurrPath.Append("{");
- foreach (TypeReference tempTypeRef in thisGenericType.GenericArguments)
- {
- if (!firstAppend)
- CurrPath.Append(",");
-
- CurrPath.Append(GetXmlDocParameterPath(tempTypeRef, ExplicitMode));
- firstAppend = false;
- }
- CurrPath.Append("}");
- }
- else if (tpType is GenericParameter)
- {
- GenericParameter thisGenParam = tpType as GenericParameter;
-
- if (ExplicitMode)
- {
- // in explicit mode we print parameter name
- CurrPath.Append(thisGenParam.Name);
- }
- else
- {
- // in non-explicit mode we print parameter order
- int paramOrder = 0;
-
- // find
- for (int i = 0; i < thisGenParam.Owner.GenericParameters.Count; i++)
- {
- if (thisGenParam.Owner.GenericParameters[i].Name == tpType.Name)
- {
- paramOrder = i;
- break;
- }
- }
- if (thisGenParam.Owner is MethodReference)
- CurrPath.Append("``").Append (paramOrder);
- else
- CurrPath.Append("`").Append (paramOrder);
- }
- }
- else if (tpType is PointerType)
- {
- // parameter is pointer type
- CurrPath.Append(GetXmlDocParameterPath((tpType as PointerType).ElementType, ExplicitMode));
- CurrPath.Append("*");
- }
- else if (tpType is ArrayType)
- {
- ArrayType thisArrayType = tpType as ArrayType;
- if (thisArrayType.ElementType != null)
- CurrPath.Append(GetXmlDocParameterPath(thisArrayType.ElementType, ExplicitMode));
-
- int iRank = thisArrayType.Rank;
- if (iRank == 1)
- {
- CurrPath.Append("[]");
- }
- else
- {
- bool firstAppend = true;
- CurrPath.Append("[");
-
- for (int i = 0; i < (ExplicitMode ? iRank - 1 : iRank); i++)
- {
- // in explicit mode for .NET3.5/VS2008,
- // there is no separator char "," used for multi-dimensional array,
- // so there are three cases when comma shall be added:
- // firstAppend = false; ExplicitMode = false; CanAppendSpecialExplicitChar() = true;
- // firstAppend = false; ExplicitMode = false; CanAppendSpecialExplicitChar() = false;
- // firstAppend = false; ExplicitMode = true; CanAppendSpecialExplicitChar() = false;
- // below this is stored in decent manner
- if (!firstAppend && (!ExplicitMode || !CanAppendSpecialExplicitChar()))
- CurrPath.Append(",");
-
- CurrPath.Append(((CanAppendSpecialExplicitChar() && ExplicitMode) ? "@" : "0:"));
- if (thisArrayType.Dimensions[i].UpperBound > 0)
- CurrPath.Append(thisArrayType.Dimensions[i].UpperBound.ToString());
- firstAppend = false;
- }
-
- CurrPath.Append("]");
- }
- }
-// else if (!tpType.IsValueType)
+// //if (thisMethodDef.IsStatic && thisMethodDef.IsConstructor)
+// // stbTempPath.Append(".#cctor");
+// //if (!thisMethodDef.IsStatic && thisMethodDef.IsConstructor)
+// // stbTempPath.Append(".#ctor");
+// stbTempPath.Append (".");
+// if (strExplicitPath.Length > 0)
+// stbTempPath.Append (strExplicitPath);
+// else
+// stbTempPath.Append (thisMethodDef.Name);
+
+// // check whether this method is generic
+// if (thisMethodDef.GenericParameters.Count > 0)
+// stbTempPath.Append("``").Append (thisMethodDef.GenericParameters.Count);
+
+// if (thisMethodDef.Parameters.Count > 0)
+// stbTempPath.Append("(");
+// bool firstAppend = true;
+// foreach (ParameterDefinition TempParam in thisMethodDef.Parameters)
+// {
+// if (!firstAppend)
+// stbTempPath.Append(",");
+
+// stbTempPath.Append(GetXmlDocParameterPath(TempParam.ParameterType, false));
+// firstAppend = false;
+// }
+
+// if (thisMethodDef.Parameters.Count > 0)
+// stbTempPath.Append(")");
+
+// // check whether this is a conversion operator (implicit or explicit)
+// // if so, we have to read return type and add "~" char.
+// //if (IsOperator(thisMethodDef))
+// //{
+// // OperatorType OpType = GetOperatorType(thisMethodDef);
+
+// // if (OpType == OperatorType.op_Implicit || OpType == OperatorType.op_Explicit)
+// // {
+// // // add return type parameter path
+// // stbTempPath.Append("~");
+// // stbTempPath.Append(GetXmlDocParameterPath(thisMethodDef.ReturnType, false));
+// // }
+// //}
+
+// // add to path
+// CurrPath.Add(stbTempPath.ToString());
+// }
+// else if (Member is FieldReference)
// {
-// // parameter is passed by reference
-// CurrPath.Append(GetXmlDocParameterPath((tpType as ReferenceType).ElementType, false));
-// CurrPath.Append("@");
+// // field, get type's path name
+// CurrPath.Add("F:");
+// if (Member.DeclaringType != null)
+// GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
+
+// // field's path
+// CurrPath.Add("." + Member.Name);
// }
-// else if (tpType is ModifierOptional)
+// else if (Member is PropertyReference)
+// {
+// // property or indexer, get declaring type's path
+// CurrPath.Add("P:");
+// if (Member.DeclaringType != null)
+// GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
+
+// // property's path
+// // check whether this is explicitly implemented property
+// strExplicitPath = GetXmlDocExplicitIfaceImplPath(Member);
+// stbTempPath.Append (".");
+// if (strExplicitPath.Length > 0)
+// stbTempPath.Append (strExplicitPath);
+// else
+// stbTempPath.Append (Member.Name);
+
+// // is it an indexer ?
+// bool firstAppend = true;
+// PropertyDefinition piProperty = Member as PropertyDefinition;
+// if (piProperty.Parameters.Count > 0)
+// stbTempPath.Append("(");
+
+// foreach (ParameterDefinition TempParam in piProperty.Parameters)
+// {
+// if (!firstAppend)
+// stbTempPath.Append(",");
+
+// stbTempPath.Append(GetXmlDocParameterPath(TempParam.ParameterType, false));
+// firstAppend = false;
+// }
+
+// if (piProperty.Parameters.Count > 0)
+// stbTempPath.Append(")");
+
+// CurrPath.Add(stbTempPath.ToString());
+// }
+// else if (Member is EventReference)
+// {
+// // event, get type's path firstAppend
+// CurrPath.Add("E:");
+// if (Member.DeclaringType != null)
+// GetXmlDocPathRecursive(Member.DeclaringType, CurrPath);
+
+// // event's path
+// CurrPath.Add("." + Member.Name);
+// }
+// }
+
+// private string GetXmlDocParameterPath(
+// TypeReference Type,
+// bool ExplicitMode)
+// {
+// StringBuilder stbCurrPath = new StringBuilder();
+
+// GetXmlDocParameterPathRecursive(Type, ExplicitMode, stbCurrPath);
+
+// return stbCurrPath.ToString();
+// }
+
+// private void GetXmlDocParameterPathRecursive(
+// TypeReference tpType,
+// bool ExplicitMode,
+// StringBuilder CurrPath)
+// {
+// if (tpType == null)
+// return;
+
+// if (tpType.GenericParameters.Count > 0)
+// {
+// CurrPath.Append(tpType.Namespace)
+// .Append ((CanAppendSpecialExplicitChar () && ExplicitMode) ? "#" : ".")
+// .Append(StripGenericName(tpType.Name));
+
+// // list parameters or types
+// bool firstAppend = true;
+// CurrPath.Append("{");
+// foreach (GenericParameter TempType in tpType.GenericParameters)
+// {
+// if (!firstAppend)
+// CurrPath.Append(",");
+
+// CurrPath.Append(GetXmlDocParameterPath(TempType, ExplicitMode));
+// firstAppend = false;
+// }
+// CurrPath.Append("}");
+// }
+// else if (tpType is GenericInstanceType)
+// {
+// GenericInstanceType thisGenericType = tpType as GenericInstanceType;
+
+// // if nested, scan enclosing type
+// if (tpType.DeclaringType != null)
+// CurrPath.Append(GetXmlDocParameterPath(tpType.DeclaringType, ExplicitMode));
+
+// // determine namespace
+// string strNamespace = string.Empty;
+// if ((tpType.Namespace != null && tpType.Namespace.Length > 0) || tpType.DeclaringType != null)
+// {
+// strNamespace = tpType.Namespace +
+// ((CanAppendSpecialExplicitChar() && ExplicitMode) ? "#" : ".");
+// }
+
+// CurrPath.Append(strNamespace).Append (StripGenericName(thisGenericType.Name));
+
+// // list parameters or types
+// bool firstAppend = true;
+// CurrPath.Append("{");
+// foreach (TypeReference tempTypeRef in thisGenericType.GenericArguments)
+// {
+// if (!firstAppend)
+// CurrPath.Append(",");
+
+// CurrPath.Append(GetXmlDocParameterPath(tempTypeRef, ExplicitMode));
+// firstAppend = false;
+// }
+// CurrPath.Append("}");
+// }
+// else if (tpType is GenericParameter)
+// {
+// GenericParameter thisGenParam = tpType as GenericParameter;
+
+// if (ExplicitMode)
+// {
+// // in explicit mode we print parameter name
+// CurrPath.Append(thisGenParam.Name);
+// }
+// else
+// {
+// // in non-explicit mode we print parameter order
+// int paramOrder = 0;
+
+// // find
+// for (int i = 0; i < thisGenParam.Owner.GenericParameters.Count; i++)
+// {
+// if (thisGenParam.Owner.GenericParameters[i].Name == tpType.Name)
+// {
+// paramOrder = i;
+// break;
+// }
+// }
+// if (thisGenParam.Owner is MethodReference)
+// CurrPath.Append("``").Append (paramOrder);
+// else
+// CurrPath.Append("`").Append (paramOrder);
+// }
+// }
+// else if (tpType is PointerType)
+// {
+// // parameter is pointer type
+// CurrPath.Append(GetXmlDocParameterPath((tpType as PointerType).ElementType, ExplicitMode));
+// CurrPath.Append("*");
+// }
+// else if (tpType is ArrayType)
+// {
+// ArrayType thisArrayType = tpType as ArrayType;
+// if (thisArrayType.ElementType != null)
+// CurrPath.Append(GetXmlDocParameterPath(thisArrayType.ElementType, ExplicitMode));
+
+// int iRank = thisArrayType.Rank;
+// if (iRank == 1)
+// {
+// CurrPath.Append("[]");
+// }
+// else
+// {
+// bool firstAppend = true;
+// CurrPath.Append("[");
+
+// for (int i = 0; i < (ExplicitMode ? iRank - 1 : iRank); i++)
+// {
+// // in explicit mode for .NET3.5/VS2008,
+// // there is no separator char "," used for multi-dimensional array,
+// // so there are three cases when comma shall be added:
+// // firstAppend = false; ExplicitMode = false; CanAppendSpecialExplicitChar() = true;
+// // firstAppend = false; ExplicitMode = false; CanAppendSpecialExplicitChar() = false;
+// // firstAppend = false; ExplicitMode = true; CanAppendSpecialExplicitChar() = false;
+// // below this is stored in decent manner
+// if (!firstAppend && (!ExplicitMode || !CanAppendSpecialExplicitChar()))
+// CurrPath.Append(",");
+
+// CurrPath.Append(((CanAppendSpecialExplicitChar() && ExplicitMode) ? "@" : "0:"));
+// if (thisArrayType.Dimensions[i].UpperBound > 0)
+// CurrPath.Append(thisArrayType.Dimensions[i].UpperBound.ToString());
+// firstAppend = false;
+// }
+
+// CurrPath.Append("]");
+// }
+// }
+//// else if (!tpType.IsValueType)
+//// {
+//// // parameter is passed by reference
+//// CurrPath.Append(GetXmlDocParameterPath((tpType as ReferenceType).ElementType, false));
+//// CurrPath.Append("@");
+//// }
+//// else if (tpType is ModifierOptional)
+//// {
+//// // parameter has optional modifier
+//// ModifierOptional thisModOpt = tpType as ModifierOptional;
+////
+//// CurrPath.Append(GetXmlDocParameterPath(thisModOpt.ElementType, ExplicitMode));
+//// CurrPath.Append("!");
+//// CurrPath.Append(GetXmlDocParameterPath(thisModOpt.ModifierType, ExplicitMode));
+//// }
+//// else if (tpType is ModifierRequired)
+//// {
+//// // parameter has required modifier
+//// ModifierRequired thisModReq = tpType as ModifierRequired;
+////
+//// CurrPath.Append(GetXmlDocParameterPath(thisModReq.ElementType, ExplicitMode));
+//// CurrPath.Append("|");
+//// CurrPath.Append(GetXmlDocParameterPath(thisModReq.ModifierType, ExplicitMode));
+//// }
+// else if (tpType is FunctionPointerType)
+// {
+// // type is function pointer
+// FunctionPointerType thisFuncPtr = tpType as FunctionPointerType;
+//// string tempString = string.Empty;
+
+// // return type
+// CurrPath.Append("=FUNC:");
+// CurrPath.Append(GetXmlDocParameterPath(thisFuncPtr.ReturnType, ExplicitMode));
+
+// // method's parameters
+// if (thisFuncPtr.Parameters.Count > 0)
+// {
+// bool firstAppend = true;
+// CurrPath.Append("(");
+
+// foreach (ParameterDefinition tempParam in thisFuncPtr.Parameters)
+// {
+// if (!firstAppend)
+// CurrPath.Append(",");
+
+// CurrPath.Append(GetXmlDocParameterPath(tempParam.ParameterType, ExplicitMode));
+// firstAppend = false;
+// }
+
+// CurrPath.Append(")");
+// }
+// else
+// {
+// CurrPath.Append("(System.Void)");
+// }
+// }
+// else if (tpType is PinnedType)
+// {
+// // type is pinned type
+// CurrPath.Append(GetXmlDocParameterPath((tpType as PinnedType).ElementType, ExplicitMode));
+// CurrPath.Append("^");
+// }
+// else if (tpType is TypeReference)
+// {
+// // if nested, scan enclosing type
+// if (tpType.DeclaringType != null)
+// CurrPath.Append(GetXmlDocParameterPath(tpType.DeclaringType, ExplicitMode));
+
+// // determine namespace
+// string strNamespace = string.Empty;
+// if ((tpType.Namespace != null && tpType.Namespace.Length > 0) || tpType.DeclaringType != null)
+// {
+// strNamespace = tpType.Namespace +
+// ((CanAppendSpecialExplicitChar() && ExplicitMode) ? "#" : ".");
+// }
+
+// // concrete type
+// CurrPath.Append(strNamespace).Append (
+// ((CanAppendSpecialExplicitChar() && ExplicitMode) ? tpType.Name.Replace(".", "#") : tpType.Name));
+// }
+// }
+
+// private OperatorType GetOperatorType(MethodDefinition OperatorMethod)
+// {
+// try
// {
-// // parameter has optional modifier
-// ModifierOptional thisModOpt = tpType as ModifierOptional;
-//
-// CurrPath.Append(GetXmlDocParameterPath(thisModOpt.ElementType, ExplicitMode));
-// CurrPath.Append("!");
-// CurrPath.Append(GetXmlDocParameterPath(thisModOpt.ModifierType, ExplicitMode));
+// return (OperatorType)Enum.Parse(typeof(OperatorType), OperatorMethod.Name.Trim());
// }
-// else if (tpType is ModifierRequired)
+// catch
// {
-// // parameter has required modifier
-// ModifierRequired thisModReq = tpType as ModifierRequired;
-//
-// CurrPath.Append(GetXmlDocParameterPath(thisModReq.ElementType, ExplicitMode));
-// CurrPath.Append("|");
-// CurrPath.Append(GetXmlDocParameterPath(thisModReq.ModifierType, ExplicitMode));
+// return OperatorType.None;
// }
- else if (tpType is FunctionPointerType)
- {
- // type is function pointer
- FunctionPointerType thisFuncPtr = tpType as FunctionPointerType;
-// string tempString = string.Empty;
-
- // return type
- CurrPath.Append("=FUNC:");
- CurrPath.Append(GetXmlDocParameterPath(thisFuncPtr.ReturnType, ExplicitMode));
-
- // method's parameters
- if (thisFuncPtr.Parameters.Count > 0)
- {
- bool firstAppend = true;
- CurrPath.Append("(");
-
- foreach (ParameterDefinition tempParam in thisFuncPtr.Parameters)
- {
- if (!firstAppend)
- CurrPath.Append(",");
-
- CurrPath.Append(GetXmlDocParameterPath(tempParam.ParameterType, ExplicitMode));
- firstAppend = false;
- }
-
- CurrPath.Append(")");
- }
- else
- {
- CurrPath.Append("(System.Void)");
- }
- }
- else if (tpType is PinnedType)
- {
- // type is pinned type
- CurrPath.Append(GetXmlDocParameterPath((tpType as PinnedType).ElementType, ExplicitMode));
- CurrPath.Append("^");
- }
- else if (tpType is TypeReference)
- {
- // if nested, scan enclosing type
- if (tpType.DeclaringType != null)
- CurrPath.Append(GetXmlDocParameterPath(tpType.DeclaringType, ExplicitMode));
-
- // determine namespace
- string strNamespace = string.Empty;
- if ((tpType.Namespace != null && tpType.Namespace.Length > 0) || tpType.DeclaringType != null)
- {
- strNamespace = tpType.Namespace +
- ((CanAppendSpecialExplicitChar() && ExplicitMode) ? "#" : ".");
- }
-
- // concrete type
- CurrPath.Append(strNamespace).Append (
- ((CanAppendSpecialExplicitChar() && ExplicitMode) ? tpType.Name.Replace(".", "#") : tpType.Name));
- }
- }
-
- private OperatorType GetOperatorType(MethodDefinition OperatorMethod)
- {
- try
- {
- return (OperatorType)Enum.Parse(typeof(OperatorType), OperatorMethod.Name.Trim());
- }
- catch
- {
- return OperatorType.None;
- }
- }
-
- public bool IsNested(
- TypeReference Type)
- {
- if (Type.IsNested)
- return true;
-
- return false;
- }
-
- private bool IsOperator(MethodDefinition Method)
- {
- if (Method.IsSpecialName && Method.Name.StartsWith("op_"))
- return true;
-
- return false;
- }
-
- private bool CanAppendSpecialExplicitChar()
- {
- if (m_compat == CompatibilityType.Net35)
- return true;
-
- return false;
- }
-
- private string StripGenericName(string OrginalClassName)
- {
- if (OrginalClassName.IndexOf("`") != -1)
- return OrginalClassName.Remove(OrginalClassName.IndexOf("`"));
- else
- return OrginalClassName;
- }
- #endregion
-
- #region Private members
- private CompatibilityType m_compat;
- #endregion
- }
- #endregion
-}
+// }
+
+// public bool IsNested(
+// TypeReference Type)
+// {
+// if (Type.IsNested)
+// return true;
+
+// return false;
+// }
+
+// private bool IsOperator(MethodDefinition Method)
+// {
+// if (Method.IsSpecialName && Method.Name.StartsWith("op_"))
+// return true;
+
+// return false;
+// }
+
+// private bool CanAppendSpecialExplicitChar()
+// {
+// if (m_compat == CompatibilityType.Net35)
+// return true;
+
+// return false;
+// }
+
+// private string StripGenericName(string OrginalClassName)
+// {
+// if (OrginalClassName.IndexOf("`") != -1)
+// return OrginalClassName.Remove(OrginalClassName.IndexOf("`"));
+// else
+// return OrginalClassName;
+// }
+// #endregion
+
+// #region Private members
+// private CompatibilityType m_compat;
+// #endregion
+// }
+// #endregion
+//}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/packages.config b/main/src/addins/MonoDevelop.AssemblyBrowser/packages.config
deleted file mode 100644
index 66c14c17d2..0000000000
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="Mono.Cecil" version="0.10.0-beta6" targetFramework="net45" />
-</packages> \ No newline at end of file