Browse Source

Provide a WholeProjectDecompiler constructor with no default parameter values

pull/3903/head
ds5678 2 months ago
parent
commit
616dc1d702
  1. 4
      ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs
  2. 2
      ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectInfoProvider.cs
  3. 12
      ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs
  4. 8
      ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs
  5. 2
      ICSharpCode.ILSpyCmd/BamlAwareWholeProjectDecompiler.cs
  6. 2
      ILSpy/Languages/CSharpLanguage.cs

4
ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs

@ -290,8 +290,8 @@ namespace ICSharpCode.Decompiler.Roundtrip @@ -290,8 +290,8 @@ namespace ICSharpCode.Decompiler.Roundtrip
class TestProjectDecompiler : WholeProjectDecompiler
{
public TestProjectDecompiler(Guid projectGuid, IAssemblyResolver resolver, AssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings)
: base(settings, projectGuid, resolver, null, assemblyReferenceClassifier, debugInfoProvider: null)
public TestProjectDecompiler(Guid projectGuid, IAssemblyResolver resolver, IAssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings)
: base(settings, projectGuid, resolver, IProjectFileWriter.FromSettings(settings), assemblyReferenceClassifier, debugInfoProvider: null)
{
}
}

2
ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectInfoProvider.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler @@ -32,7 +32,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
/// </summary>
IAssemblyResolver AssemblyResolver { get; }
AssemblyReferenceClassifier AssemblyReferenceClassifier { get; }
IAssemblyReferenceClassifier AssemblyReferenceClassifier { get; }
/// <summary>
/// Gets the C# language version of the project.

12
ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs

@ -73,7 +73,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler @@ -73,7 +73,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
public IAssemblyResolver AssemblyResolver { get; }
public AssemblyReferenceClassifier AssemblyReferenceClassifier { get; }
public IAssemblyReferenceClassifier AssemblyReferenceClassifier { get; }
public IDebugInfoProvider DebugInfoProvider { get; }
@ -111,9 +111,9 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler @@ -111,9 +111,9 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
DecompilerSettings settings,
IAssemblyResolver assemblyResolver,
IProjectFileWriter projectWriter,
AssemblyReferenceClassifier assemblyReferenceClassifier,
IAssemblyReferenceClassifier assemblyReferenceClassifier,
IDebugInfoProvider debugInfoProvider)
: this(settings, Guid.NewGuid(), assemblyResolver, projectWriter, assemblyReferenceClassifier, debugInfoProvider)
: this(settings, Guid.NewGuid(), assemblyResolver, projectWriter ?? IProjectFileWriter.FromSettings(settings), assemblyReferenceClassifier ?? new AssemblyReferenceClassifier(), debugInfoProvider)
{
}
@ -122,15 +122,15 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler @@ -122,15 +122,15 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
Guid projectGuid,
IAssemblyResolver assemblyResolver,
IProjectFileWriter projectWriter,
AssemblyReferenceClassifier assemblyReferenceClassifier,
IAssemblyReferenceClassifier assemblyReferenceClassifier,
IDebugInfoProvider debugInfoProvider)
{
Settings = settings ?? throw new ArgumentNullException(nameof(settings));
ProjectGuid = projectGuid;
AssemblyResolver = assemblyResolver ?? throw new ArgumentNullException(nameof(assemblyResolver));
AssemblyReferenceClassifier = assemblyReferenceClassifier ?? new AssemblyReferenceClassifier();
AssemblyReferenceClassifier = assemblyReferenceClassifier ?? throw new ArgumentNullException(nameof(assemblyReferenceClassifier));
DebugInfoProvider = debugInfoProvider;
this.projectWriter = projectWriter ?? IProjectFileWriter.FromSettings(settings);
this.projectWriter = projectWriter ?? throw new ArgumentNullException(nameof(projectWriter));
}
// per-run members

8
ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs

@ -67,7 +67,13 @@ namespace ICSharpCode.Decompiler.Metadata @@ -67,7 +67,13 @@ namespace ICSharpCode.Decompiler.Metadata
#endif
}
public class AssemblyReferenceClassifier
public interface IAssemblyReferenceClassifier
{
bool IsGacAssembly(IAssemblyReference reference);
bool IsSharedAssembly(IAssemblyReference reference, [NotNullWhen(true)] out string? runtimePack);
}
public class AssemblyReferenceClassifier : IAssemblyReferenceClassifier
{
/// <summary>
/// For GAC assembly references, the WholeProjectDecompiler will omit the HintPath in the

2
ICSharpCode.ILSpyCmd/BamlAwareWholeProjectDecompiler.cs

@ -37,7 +37,7 @@ namespace ICSharpCode.ILSpyCmd @@ -37,7 +37,7 @@ namespace ICSharpCode.ILSpyCmd
public BamlAwareWholeProjectDecompiler(
DecompilerSettings settings,
IAssemblyResolver assemblyResolver,
AssemblyReferenceClassifier assemblyReferenceClassifier,
IAssemblyReferenceClassifier assemblyReferenceClassifier,
IDebugInfoProvider debugInfoProvider,
BamlDecompilerTypeSystem bamlTypeSystem,
BamlDecompilerSettings bamlSettings)

2
ILSpy/Languages/CSharpLanguage.cs

@ -581,7 +581,7 @@ namespace ICSharpCode.ILSpy.Languages @@ -581,7 +581,7 @@ namespace ICSharpCode.ILSpy.Languages
DecompilerSettings settings,
IAssemblyResolver resolver,
IProjectFileWriter? projectWriter,
AssemblyReferenceClassifier? assemblyReferenceClassifier,
IAssemblyReferenceClassifier? assemblyReferenceClassifier,
ICSharpCode.Decompiler.DebugInfo.IDebugInfoProvider? debugInfoProvider)
: base(settings, resolver, projectWriter!, assemblyReferenceClassifier!, debugInfoProvider!)
{

Loading…
Cancel
Save