Skip to content

Commit

Permalink
fix: adding null check for failing to resolve assembly
Browse files Browse the repository at this point in the history
will give compiler warning instead of fail. It should be fine to fail some references.

It will just means Extension methods wont be found in them, but if reference isn't found it is unlikely to be a dll part of the same project (eg it could be system dll that couldn't be found)
  • Loading branch information
James-Frowen committed Dec 10, 2022
1 parent 830c9ac commit 13ce8a9
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
11 changes: 9 additions & 2 deletions Assets/Mirage/Weaver/Processors/ReaderWriterProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ internal static void Log(string msg)

private readonly HashSet<TypeReference> messages = new HashSet<TypeReference>(new TypeReferenceComparer());

private readonly IWeaverLogger logger;
private readonly ModuleDefinition module;
private readonly Readers readers;
private readonly Writers writers;
Expand All @@ -32,7 +33,7 @@ internal static void Log(string msg)
/// Mirage's main module used to find built in extension methods and messages
/// </summary>

public ReaderWriterProcessor(ModuleDefinition module, Readers readers, Writers writers)
public ReaderWriterProcessor(ModuleDefinition module, Readers readers, Writers writers, IWeaverLogger logger)
{
this.module = module;
this.readers = readers;
Expand Down Expand Up @@ -71,6 +72,12 @@ private bool FindAllExtensionMethods()
foreach (var reference in module.AssemblyReferences)
{
var assembly = module.AssemblyResolver.Resolve(reference);
if (assembly == null)
{
logger.Warning($"Failed to resolve assembly reference: {reference}");
continue;
}

references.Add(assembly);
}

Expand Down Expand Up @@ -215,7 +222,7 @@ private void GenerateReadersWriters(FieldReference field, SequencePoint sequence
{
var type = field.DeclaringType;

if (type.Is(typeof(Writer<>)) || type.Is(typeof(Reader<>)) && type.IsGenericInstance)
if (type.Is(typeof(Writer<>)) || (type.Is(typeof(Reader<>)) && type.IsGenericInstance))
{
var typeGenericInstance = (GenericInstanceType)type;

Expand Down
2 changes: 1 addition & 1 deletion Assets/Mirage/Weaver/Weaver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public AssemblyDefinition Weave(ICompiledAssembly compiledAssembly)
readers = new Readers(module, logger);
writers = new Writers(module, logger);
propertySiteProcessor = new PropertySiteProcessor();
var rwProcessor = new ReaderWriterProcessor(module, readers, writers);
var rwProcessor = new ReaderWriterProcessor(module, readers, writers, logger);

var modified = false;
using (timer.Sample("ReaderWriterProcessor"))
Expand Down

0 comments on commit 13ce8a9

Please sign in to comment.