Skip to content

Commit 7902ca3

Browse files
committed
decompile base & derived types in place
1 parent 582e847 commit 7902ca3

File tree

4 files changed

+13
-4
lines changed

4 files changed

+13
-4
lines changed

ILSpy/TreeNodes/BaseTypesEntryNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ internal static bool ActivateItem(SharpTreeNode node, ITypeDefinition def)
5959

6060
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
6161
{
62-
language.WriteCommentLine(output, language.TypeToString(type, includeNamespace: true));
62+
language.DecompileType(type, output, options);
6363
}
6464

6565
IEntity IMemberTreeNode.Member => type;

ILSpy/TreeNodes/BaseTypesTreeNode.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ public override void Decompile(Language language, ITextOutput output, Decompilat
7171
App.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(EnsureLazyChildren));
7272
foreach (ILSpyTreeNode child in this.Children)
7373
{
74-
child.Decompile(language, output, options);
74+
if (child is IMemberTreeNode { Member: ITypeDefinition childType })
75+
language.WriteCommentLine(output, language.TypeToString(childType, includeNamespace: true));
7576
}
7677
}
7778
}

ILSpy/TreeNodes/DerivedTypesEntryNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public override void ActivateItem(IPlatformRoutedEventArgs e)
9696

9797
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
9898
{
99-
language.WriteCommentLine(output, language.TypeToString(type, includeNamespace: true));
99+
language.DecompileType(type, output, options);
100100
}
101101

102102
IEntity IMemberTreeNode.Member => type;

ILSpy/TreeNodes/DerivedTypesTreeNode.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1717
// DEALINGS IN THE SOFTWARE.
1818

19+
using System;
1920
using System.Collections.Generic;
2021
using System.Threading;
22+
using System.Windows.Threading;
2123

2224
using ICSharpCode.Decompiler;
2325
using ICSharpCode.Decompiler.TypeSystem;
@@ -104,7 +106,13 @@ static bool IsSameType(SRM.MetadataReader referenceMetadata, SRM.EntityHandle ty
104106

105107
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
106108
{
107-
threading.Decompile(language, output, options, EnsureLazyChildren);
109+
App.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(EnsureLazyChildren));
110+
for (int i = 0; i < Children.Count; i++)
111+
{
112+
// LazyChildren are async and will not be ready on first call, avoid foreach.
113+
if (Children[i] is IMemberTreeNode { Member: ITypeDefinition childType })
114+
language.WriteCommentLine(output, language.TypeToString(childType, includeNamespace: true));
115+
}
108116
}
109117
}
110118
}

0 commit comments

Comments
 (0)