Browse Source

Move AddXmlDocumentationTransform to Decompiler

pull/850/head
Siegfried Pammer 8 years ago
parent
commit
7d6e4a11c4
  1. 1
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs
  2. 32
      ICSharpCode.Decompiler/CSharp/Transforms/AddXmlDocumentationTransform.cs
  3. 2
      ICSharpCode.Decompiler/Documentation/XmlDocKeyProvider.cs
  4. 2
      ICSharpCode.Decompiler/Documentation/XmlDocLoader.cs
  5. 3
      ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj
  6. 5
      ILSpy/ILSpy.csproj
  7. 2
      ILSpy/MainWindow.xaml.cs
  8. 1
      ILSpy/TextView/DecompilerTextView.cs
  9. 2
      ILSpy/TextView/XmlDocRenderer.cs

1
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -137,6 +137,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -137,6 +137,7 @@ namespace ICSharpCode.Decompiler.CSharp
//new CombineQueryExpressions(context),
//new FlattenSwitchBlocks(),
new FixNameCollisions(),
new AddXmlDocumentationTransform(),
};
public CancellationToken CancellationToken { get; set; }

32
ILSpy/XmlDoc/AddXmlDocTransform.cs → ICSharpCode.Decompiler/CSharp/Transforms/AddXmlDocumentationTransform.cs

@ -18,34 +18,44 @@ @@ -18,34 +18,44 @@
using System;
using System.IO;
using System.Linq;
using ICSharpCode.Decompiler.CSharp.Syntax;
using Mono.Cecil;
using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.ILSpy.XmlDoc
namespace ICSharpCode.Decompiler.CSharp.Transforms
{
/// <summary>
/// Adds XML documentation for member definitions.
/// </summary>
static class AddXmlDocTransform
public class AddXmlDocumentationTransform : IAstTransform
{
public static void Run(AstNode node)
public void Run(AstNode rootNode, TransformContext context)
{
if (node is EntityDeclaration) {
MemberReference mr = node.Annotation<MemberReference>();
if (!context.Settings.ShowXmlDocumentation)
return;
foreach (var entity in rootNode.DescendantsAndSelf.OfType<EntityDeclaration>()) {
var symbol = entity.GetSymbol();
Mono.Cecil.MemberReference mr;
switch (symbol) {
case IMember member:
mr = context.TypeSystem.GetCecil(member);
break;
case IType type:
mr = context.TypeSystem.GetCecil(type.GetDefinition());
break;
default:
continue;
}
if (mr != null && mr.Module != null) {
var xmldoc = XmlDocLoader.LoadDocumentation(mr.Module);
if (xmldoc != null) {
string doc = xmldoc.GetDocumentation(XmlDocKeyProvider.GetKey(mr));
if (doc != null) {
InsertXmlDocumentation(node, new StringReader(doc));
InsertXmlDocumentation(entity, new StringReader(doc));
}
}
}
if (!(node is TypeDeclaration))
return; // don't recurse into attributed nodes, except for type definitions
}
foreach (AstNode child in node.Children)
Run(child);
}
static void InsertXmlDocumentation(AstNode node, StringReader r)

2
ILSpy/XmlDoc/XmlDocKeyProvider.cs → ICSharpCode.Decompiler/Documentation/XmlDocKeyProvider.cs

@ -27,7 +27,7 @@ using ArrayType = Mono.Cecil.ArrayType; @@ -27,7 +27,7 @@ using ArrayType = Mono.Cecil.ArrayType;
using ByReferenceType = Mono.Cecil.ByReferenceType;
using PointerType = Mono.Cecil.PointerType;
namespace ICSharpCode.ILSpy.XmlDoc
namespace ICSharpCode.Decompiler.Documentation
{
/// <summary>
/// Provides XML documentation tags.

2
ILSpy/XmlDoc/XmlDocLoader.cs → ICSharpCode.Decompiler/Documentation/XmlDocLoader.cs

@ -23,7 +23,7 @@ using System.Runtime.CompilerServices; @@ -23,7 +23,7 @@ using System.Runtime.CompilerServices;
using ICSharpCode.Decompiler.Documentation;
using Mono.Cecil;
namespace ICSharpCode.ILSpy.XmlDoc
namespace ICSharpCode.Decompiler.Documentation
{
/// <summary>
/// Helps finding and loading .xml documentation.

3
ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj

@ -253,9 +253,12 @@ @@ -253,9 +253,12 @@
<Compile Include="CSharp\Transforms\IntroduceUnsafeModifier.cs" />
<Compile Include="CSharp\Transforms\ReplaceMethodCallsWithOperators.cs" />
<Compile Include="CSharp\WholeProjectDecompiler.cs" />
<Compile Include="Documentation\AddXmlDocumentationTransform.cs" />
<Compile Include="Documentation\GetPotentiallyNestedClassTypeReference.cs" />
<Compile Include="Documentation\IdStringMemberReference.cs" />
<Compile Include="Documentation\IdStringProvider.cs" />
<Compile Include="Documentation\XmlDocKeyProvider.cs" />
<Compile Include="Documentation\XmlDocLoader.cs" />
<Compile Include="Documentation\XmlDocumentationProvider.cs" />
<Compile Include="IL\ControlFlow\AsyncAwaitDecompiler.cs" />
<Compile Include="IL\ControlFlow\ControlFlowGraph.cs" />

5
ILSpy/ILSpy.csproj

@ -167,6 +167,7 @@ @@ -167,6 +167,7 @@
<Compile Include="TaskHelper.cs" />
<Compile Include="TextView\EditorCommands.cs" />
<Compile Include="TextView\FoldingCommands.cs" />
<Compile Include="TextView\XmlDocRenderer.cs" />
<Compile Include="TreeNodes\Analyzer\AnalyzeContextMenuEntry.cs" />
<Compile Include="TreeNodes\Analyzer\AnalyzedAssemblyTreeNode.cs" />
<Compile Include="TreeNodes\Analyzer\AnalyzedAttributeAppliedToTreeNode.cs" />
@ -204,10 +205,6 @@ @@ -204,10 +205,6 @@
<Compile Include="TreeNodes\Analyzer\AnalyzedPropertyOverridesTreeNode.cs" />
<Compile Include="TreeNodes\Analyzer\AnalyzedPropertyTreeNode.cs" />
<Compile Include="TreeNodes\SearchMsdnContextMenuEntry.cs" />
<Compile Include="XmlDoc\AddXmlDocTransform.cs" />
<Compile Include="XmlDoc\XmlDocKeyProvider.cs" />
<Compile Include="XmlDoc\XmlDocLoader.cs" />
<Compile Include="XmlDoc\XmlDocRenderer.cs" />
<EmbeddedResource Include="..\README.txt">
<Link>README.txt</Link>
</EmbeddedResource>

2
ILSpy/MainWindow.xaml.cs

@ -32,9 +32,9 @@ using System.Windows.Interop; @@ -32,9 +32,9 @@ using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using ICSharpCode.Decompiler;
using ICSharpCode.Decompiler.Documentation;
using ICSharpCode.ILSpy.TextView;
using ICSharpCode.ILSpy.TreeNodes;
using ICSharpCode.ILSpy.XmlDoc;
using ICSharpCode.TreeView;
using Microsoft.Win32;
using Mono.Cecil;

1
ILSpy/TextView/DecompilerTextView.cs

@ -47,7 +47,6 @@ using ICSharpCode.Decompiler.Documentation; @@ -47,7 +47,6 @@ using ICSharpCode.Decompiler.Documentation;
using ICSharpCode.ILSpy.AvalonEdit;
using ICSharpCode.ILSpy.Options;
using ICSharpCode.ILSpy.TreeNodes;
using ICSharpCode.ILSpy.XmlDoc;
using Microsoft.Win32;
using Mono.Cecil;

2
ILSpy/XmlDoc/XmlDocRenderer.cs → ILSpy/TextView/XmlDocRenderer.cs

@ -24,7 +24,7 @@ using System.Text.RegularExpressions; @@ -24,7 +24,7 @@ using System.Text.RegularExpressions;
using System.Windows.Controls;
using System.Xml;
namespace ICSharpCode.ILSpy.XmlDoc
namespace ICSharpCode.ILSpy.TextView
{
/// <summary>
/// Renders XML documentation into a WPF <see cref="TextBlock"/>.
Loading…
Cancel
Save