Skip to content

Commit 21e5d0f

Browse files
Merge pull request icsharpcode#3302 from tom-englert/dev/WpfRefactoring
Move active code from LanguageSettings to LanguageService
2 parents 8c440f4 + 7643991 commit 21e5d0f

30 files changed

+237
-175
lines changed

.editorconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,5 @@ dotnet_naming_rule.private_fields_rule.symbols = private_fields_symbols
147147

148148
# MEF006: No importing constructor
149149
dotnet_diagnostic.MEF006.severity = silent
150+
# MEF002: Import attributes, to be removed after final DI migration
151+
dotnet_diagnostic.MEF002.severity = silent

ILSpy.ReadyToRun/ReadyToRunLanguage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public override void DecompileMethod(IMethod method, ITextOutput output, Decompi
218218

219219
public override RichText GetRichTextTooltip(IEntity entity)
220220
{
221-
return Languages.ILLanguage.GetRichTextTooltip(entity);
221+
return LanguageService.Instance.ILLanguage.GetRichTextTooltip(entity);
222222
}
223223

224224
private ReadyToRunReaderCacheEntry GetReader(LoadedAssembly assembly, MetadataFile file)

ILSpy.Tests/Analyzers/MemberImplementsInterfaceAnalyzerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public void VerifyReturnsOnlyInterfaceMembers()
145145
var analyzer = new MemberImplementsInterfaceAnalyzer();
146146

147147
// Act
148-
var results = analyzer.Analyze(symbol, new AnalyzerContext() { AssemblyList = new ILSpyX.AssemblyList(), Language = new CSharpLanguage() });
148+
var results = analyzer.Analyze(symbol, new AnalyzerContext() { AssemblyList = new ILSpyX.AssemblyList(), Language = new CSharpLanguage([]) });
149149

150150
// Assert
151151
Assert.That(results, Is.Not.Null);

ILSpy.Tests/Analyzers/MethodUsesAnalyzerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void Setup()
3030
testAssembly = assemblyList.OpenAssembly(typeof(MethodUsesAnalyzerTests).Assembly.Location);
3131
assemblyList.OpenAssembly(typeof(void).Assembly.Location);
3232
testAssemblyTypeSystem = testAssembly.GetTypeSystemOrNull();
33-
language = new CSharpLanguage();
33+
language = new CSharpLanguage([]);
3434
typeDefinition = testAssemblyTypeSystem.FindType(typeof(TestCases.Main.MainAssembly)).GetDefinition();
3535
}
3636

ILSpy.Tests/Analyzers/TypeUsedByAnalyzerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public void Setup()
4141
assemblyList = new AssemblyList();
4242
testAssembly = assemblyList.OpenAssembly(typeof(MethodUsesAnalyzerTests).Assembly.Location);
4343
testAssemblyTypeSystem = new DecompilerTypeSystem(testAssembly.GetMetadataFileOrNull(), testAssembly.GetAssemblyResolver());
44-
language = new CSharpLanguage();
44+
language = new CSharpLanguage([]);
4545
}
4646

4747
[Test]

ILSpy/Analyzers/AnalyzerTreeNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace ICSharpCode.ILSpy.Analyzers
2525
{
2626
public abstract class AnalyzerTreeNode : SharpTreeNode
2727
{
28-
public Language Language => SettingsService.Instance.SessionSettings.LanguageSettings.Language;
28+
public Language Language => LanguageService.Instance.Language;
2929

3030
public override bool CanDelete()
3131
{

ILSpy/AssemblyTree/AssemblyTreeModel.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ private void Settings_PropertyChanged(object? sender, PropertyChangedEventArgs e
108108
{
109109
switch (e.PropertyName)
110110
{
111-
case nameof(LanguageSettings.Language) or nameof(LanguageSettings.LanguageVersion):
111+
case nameof(LanguageSettings.LanguageId) or nameof(LanguageSettings.LanguageVersionId):
112112
RefreshDecompiledView();
113113
break;
114114
default:
@@ -152,7 +152,7 @@ private bool HandleCommandLineArguments(CommandLineArguments args)
152152
{
153153
LoadAssemblies(args.AssembliesToLoad, commandLineLoadedAssemblies, focusNode: false);
154154
if (args.Language != null)
155-
SettingsService.Instance.SessionSettings.LanguageSettings.Language = Languages.GetLanguage(args.Language);
155+
LanguageService.Instance.Language = LanguageService.Instance.GetLanguage(args.Language);
156156
return true;
157157
}
158158

@@ -787,7 +787,7 @@ public void DecompileSelectedNodes(DecompilerTextViewState? newState = null)
787787
return;
788788
}
789789

790-
var options = SettingsService.Instance.CreateDecompilationOptions(activeTabPage);
790+
var options = LanguageService.Instance.CreateDecompilationOptions(activeTabPage);
791791
options.TextViewState = newState;
792792
activeTabPage.ShowTextViewAsync(textView => textView.DecompileAsync(this.CurrentLanguage, this.SelectedNodes, options));
793793
}
@@ -797,9 +797,9 @@ public void RefreshDecompiledView()
797797
DecompileSelectedNodes(DockWorkspace.Instance.ActiveTabPage.GetState() as DecompilerTextViewState);
798798
}
799799

800-
public Language CurrentLanguage => SettingsService.Instance.SessionSettings.LanguageSettings.Language;
800+
public Language CurrentLanguage => LanguageService.Instance.Language;
801801

802-
public LanguageVersion CurrentLanguageVersion => SettingsService.Instance.SessionSettings.LanguageSettings.LanguageVersion;
802+
public LanguageVersion? CurrentLanguageVersion => LanguageService.Instance.LanguageVersion;
803803

804804
public IEnumerable<ILSpyTreeNode> SelectedNodes {
805805
get {

ILSpy/Commands/DecompileAllCommand.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
using System;
2222
using System.Collections.Concurrent;
23+
using System.Collections.Generic;
2324
using System.ComponentModel.Composition;
2425
using System.Diagnostics;
2526
using System.Linq;
@@ -31,14 +32,20 @@
3132
using ICSharpCode.ILSpy.TextView;
3233
using ICSharpCode.ILSpyX;
3334

34-
using TomsToolbox.Essentials;
35-
3635
namespace ICSharpCode.ILSpy
3736
{
3837
[ExportMainMenuCommand(ParentMenuID = nameof(Resources._File), Header = nameof(Resources.DEBUGDecompile), MenuCategory = nameof(Resources.Open), MenuOrder = 2.5)]
3938
[PartCreationPolicy(CreationPolicy.Shared)]
4039
sealed class DecompileAllCommand : SimpleCommand
4140
{
41+
private readonly IReadOnlyCollection<IResourceFileHandler> resourceFileHandlers;
42+
43+
[ImportingConstructor]
44+
public DecompileAllCommand([ImportMany] IEnumerable<IResourceFileHandler> resourceFileHandlers)
45+
{
46+
this.resourceFileHandlers = resourceFileHandlers.ToArray();
47+
}
48+
4249
public override bool CanExecute(object parameter)
4350
{
4451
return System.IO.Directory.Exists("c:\\temp\\decompiled");
@@ -60,10 +67,10 @@ public override void Execute(object parameter)
6067
{
6168
try
6269
{
63-
var options = SettingsService.Instance.CreateDecompilationOptions(DockWorkspace.Instance.ActiveTabPage);
70+
var options = LanguageService.Instance.CreateDecompilationOptions(DockWorkspace.Instance.ActiveTabPage);
6471
options.CancellationToken = ct;
6572
options.FullDecompilation = true;
66-
new CSharpLanguage().DecompileAssembly(asm, new PlainTextOutput(writer), options);
73+
new CSharpLanguage(resourceFileHandlers).DecompileAssembly(asm, new PlainTextOutput(writer), options);
6774
}
6875
catch (Exception ex)
6976
{
@@ -95,10 +102,10 @@ sealed class Decompile100TimesCommand : SimpleCommand
95102
public override void Execute(object parameter)
96103
{
97104
const int numRuns = 100;
98-
var language = SettingsService.Instance.SessionSettings.LanguageSettings.Language;
105+
var language = LanguageService.Instance.Language;
99106
var nodes = MainWindow.Instance.AssemblyTreeModel.SelectedNodes.ToArray();
100107
DockWorkspace dockWorkspace = DockWorkspace.Instance;
101-
var options = SettingsService.Instance.CreateDecompilationOptions(dockWorkspace.ActiveTabPage);
108+
var options = LanguageService.Instance.CreateDecompilationOptions(dockWorkspace.ActiveTabPage);
102109
dockWorkspace.RunWithCancellation(ct => Task<AvalonEditTextOutput>.Factory.StartNew(() => {
103110
options.CancellationToken = ct;
104111
Stopwatch w = Stopwatch.StartNew();

ILSpy/Commands/DisassembleAllCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public override void Execute(object parameter)
5656
{
5757
try
5858
{
59-
var options = SettingsService.Instance.CreateDecompilationOptions(dockWorkspace.ActiveTabPage);
59+
var options = LanguageService.Instance.CreateDecompilationOptions(dockWorkspace.ActiveTabPage);
6060
options.FullDecompilation = true;
6161
options.CancellationToken = ct;
6262
new ILLanguage().DecompileAssembly(asm, new Decompiler.PlainTextOutput(writer), options);

ILSpy/Commands/GeneratePdbContextMenuEntry.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ internal static void GeneratePdbForAssembly(LoadedAssembly assembly)
7575
if (dlg.ShowDialog() != true)
7676
return;
7777
DockWorkspace dockWorkspace = DockWorkspace.Instance;
78-
DecompilationOptions options = SettingsService.Instance.CreateDecompilationOptions(dockWorkspace.ActiveTabPage);
78+
DecompilationOptions options = LanguageService.Instance.CreateDecompilationOptions(dockWorkspace.ActiveTabPage);
7979
string fileName = dlg.FileName;
8080
dockWorkspace.RunWithCancellation(ct => Task<AvalonEditTextOutput>.Factory.StartNew(() => {
8181
AvalonEditTextOutput output = new AvalonEditTextOutput();

0 commit comments

Comments
 (0)