Browse Source

Fix #2550: Menu "Save Code" enable issue on changing C# version

pull/2554/head
Siegfried Pammer 4 years ago
parent
commit
2527a0b36e
  1. 6
      ILSpy/MainWindow.xaml.cs
  2. 2
      ILSpy/TreeNodes/AssemblyTreeNode.cs
  3. 14
      ILSpy/TreeNodes/EventTreeNode.cs
  4. 14
      ILSpy/TreeNodes/FieldTreeNode.cs
  5. 14
      ILSpy/TreeNodes/MethodTreeNode.cs
  6. 17
      ILSpy/TreeNodes/PropertyTreeNode.cs
  7. 14
      ILSpy/TreeNodes/TypeTreeNode.cs

6
ILSpy/MainWindow.xaml.cs

@ -824,7 +824,6 @@ namespace ICSharpCode.ILSpy
void filterSettings_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
RefreshTreeView();
RefreshTreeViewFilter();
if (e.PropertyName == "Language" || e.PropertyName == "LanguageVersion")
{
@ -1173,11 +1172,6 @@ namespace ICSharpCode.ILSpy
}
void RefreshCommandExecuted(object sender, ExecutedRoutedEventArgs e)
{
RefreshTreeView();
}
void RefreshTreeView()
{
try
{

2
ILSpy/TreeNodes/AssemblyTreeNode.cs

@ -200,7 +200,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
void LoadChildrenForPEFile(PEFile module)
{
typeSystem = LoadedAssembly.GetTypeSystemOrNull(DecompilerTypeSystem.GetOptions(new DecompilationOptions().DecompilerSettings));
typeSystem = LoadedAssembly.GetTypeSystemOrNull();
var assembly = (MetadataModule)typeSystem.MainModule;
this.Children.Add(new Metadata.MetadataTreeNode(module, this));
Decompiler.DebugInfo.IDebugInfoProvider debugInfo = LoadedAssembly.GetDebugInfoOrNull();

14
ILSpy/TreeNodes/EventTreeNode.cs

@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Reflection.Metadata;
using System.Windows.Media;
using ICSharpCode.Decompiler;
@ -45,14 +46,21 @@ namespace ICSharpCode.ILSpy.TreeNodes
public IEvent EventDefinition { get; }
public override object Text => GetText(EventDefinition, this.Language) + EventDefinition.MetadataToken.ToSuffixString();
public override object Text => GetText(GetEventDefinition(), this.Language) + EventDefinition.MetadataToken.ToSuffixString();
private IEvent GetEventDefinition()
{
return ((MetadataModule)EventDefinition.ParentModule.PEFile
?.GetTypeSystemWithCurrentOptionsOrNull()
?.MainModule)?.GetDefinition((EventDefinitionHandle)EventDefinition.MetadataToken) ?? EventDefinition;
}
public static object GetText(IEvent ev, Language language)
{
return language.EventToString(ev, false, false, false);
}
public override object Icon => GetIcon(EventDefinition);
public override object Icon => GetIcon(GetEventDefinition());
public static ImageSource GetIcon(IEvent @event)
{
@ -76,7 +84,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool IsPublicAPI {
get {
switch (EventDefinition.Accessibility)
switch (GetEventDefinition().Accessibility)
{
case Accessibility.Public:
case Accessibility.ProtectedOrInternal:

14
ILSpy/TreeNodes/FieldTreeNode.cs

@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Reflection.Metadata;
using System.Windows.Media;
using ICSharpCode.Decompiler;
@ -37,14 +38,21 @@ namespace ICSharpCode.ILSpy.TreeNodes
this.FieldDefinition = field ?? throw new ArgumentNullException(nameof(field));
}
public override object Text => GetText(FieldDefinition, Language) + FieldDefinition.MetadataToken.ToSuffixString();
public override object Text => GetText(GetFieldDefinition(), Language) + FieldDefinition.MetadataToken.ToSuffixString();
private IField GetFieldDefinition()
{
return ((MetadataModule)FieldDefinition.ParentModule.PEFile
?.GetTypeSystemWithCurrentOptionsOrNull()
?.MainModule)?.GetDefinition((FieldDefinitionHandle)FieldDefinition.MetadataToken) ?? FieldDefinition;
}
public static object GetText(IField field, Language language)
{
return language.FieldToString(field, includeDeclaringTypeName: false, includeNamespace: false, includeNamespaceOfDeclaringTypeName: false);
}
public override object Icon => GetIcon(FieldDefinition);
public override object Icon => GetIcon(GetFieldDefinition());
public static ImageSource GetIcon(IField field)
{
@ -77,7 +85,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool IsPublicAPI {
get {
switch (FieldDefinition.Accessibility)
switch (GetFieldDefinition().Accessibility)
{
case Accessibility.Public:
case Accessibility.Protected:

14
ILSpy/TreeNodes/MethodTreeNode.cs

@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Reflection.Metadata;
using System.Windows.Media;
using ICSharpCode.Decompiler;
@ -37,14 +38,21 @@ namespace ICSharpCode.ILSpy.TreeNodes
this.MethodDefinition = method ?? throw new ArgumentNullException(nameof(method));
}
public override object Text => GetText(MethodDefinition, Language) + MethodDefinition.MetadataToken.ToSuffixString();
public override object Text => GetText(GetMethodDefinition(), Language) + MethodDefinition.MetadataToken.ToSuffixString();
private IMethod GetMethodDefinition()
{
return ((MetadataModule)MethodDefinition.ParentModule.PEFile
?.GetTypeSystemWithCurrentOptionsOrNull()
?.MainModule)?.GetDefinition((MethodDefinitionHandle)MethodDefinition.MetadataToken) ?? MethodDefinition;
}
public static object GetText(IMethod method, Language language)
{
return language.MethodToString(method, false, false, false);
}
public override object Icon => GetIcon(MethodDefinition);
public override object Icon => GetIcon(GetMethodDefinition());
public static ImageSource GetIcon(IMethod method)
{
@ -102,7 +110,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool IsPublicAPI {
get {
switch (MethodDefinition.Accessibility)
switch (GetMethodDefinition().Accessibility)
{
case Accessibility.Public:
case Accessibility.Protected:

17
ILSpy/TreeNodes/PropertyTreeNode.cs

@ -17,14 +17,10 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Reflection;
using System.Reflection.Metadata;
using System.Windows.Media;
using ICSharpCode.Decompiler;
using ICSharpCode.Decompiler.Metadata;
using SRM = System.Reflection.Metadata;
namespace ICSharpCode.ILSpy.TreeNodes
{
@ -52,14 +48,21 @@ namespace ICSharpCode.ILSpy.TreeNodes
public IProperty PropertyDefinition { get; }
public override object Text => GetText(PropertyDefinition, Language) + PropertyDefinition.MetadataToken.ToSuffixString();
public override object Text => GetText(GetPropertyDefinition(), Language) + PropertyDefinition.MetadataToken.ToSuffixString();
private IProperty GetPropertyDefinition()
{
return ((MetadataModule)PropertyDefinition.ParentModule.PEFile
?.GetTypeSystemWithCurrentOptionsOrNull()
?.MainModule)?.GetDefinition((PropertyDefinitionHandle)PropertyDefinition.MetadataToken) ?? PropertyDefinition;
}
public static object GetText(IProperty property, Language language)
{
return language.PropertyToString(property, false, false, false);
}
public override object Icon => GetIcon(PropertyDefinition);
public override object Icon => GetIcon(GetPropertyDefinition());
public static ImageSource GetIcon(IProperty property)
{
@ -84,7 +87,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool IsPublicAPI {
get {
switch (PropertyDefinition.Accessibility)
switch (GetPropertyDefinition().Accessibility)
{
case Accessibility.Public:
case Accessibility.ProtectedOrInternal:

14
ILSpy/TreeNodes/TypeTreeNode.cs

@ -41,12 +41,20 @@ namespace ICSharpCode.ILSpy.TreeNodes
public AssemblyTreeNode ParentAssemblyNode { get; }
public override object Text => this.Language.TypeToString(TypeDefinition, includeNamespace: false)
public override object Text => this.Language.TypeToString(GetTypeDefinition(), includeNamespace: false)
+ TypeDefinition.MetadataToken.ToSuffixString();
private ITypeDefinition GetTypeDefinition()
{
return ((MetadataModule)ParentAssemblyNode.LoadedAssembly
.GetPEFileOrNull()
?.GetTypeSystemWithCurrentOptionsOrNull()
?.MainModule).GetDefinition((SRM.TypeDefinitionHandle)TypeDefinition.MetadataToken);
}
public override bool IsPublicAPI {
get {
switch (TypeDefinition.Accessibility)
switch (GetTypeDefinition().Accessibility)
{
case Accessibility.Public:
case Accessibility.Protected:
@ -120,7 +128,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
{
language.DecompileType(TypeDefinition, output, options);
language.DecompileType(GetTypeDefinition(), output, options);
}
public override object Icon => GetIcon(TypeDefinition);

Loading…
Cancel
Save