Skip to content

Commit 282e144

Browse files
fix: use HashSet<string> for assembly deduplication in ArchLoader
Replace List<AssemblyNameReference> with HashSet<string> keyed by FullName for tracking processed assemblies. The previous approach used List.Contains with reference equality on AssemblyNameReference objects, which could fail to detect duplicates when different reference instances point to the same assembly. Signed-off-by: Alexander Linne <alexander.linne@tngtech.com>
1 parent 69b7c13 commit 282e144

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

ArchUnitNET/Loader/ArchLoader.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ private void LoadModule(
125125
fileName,
126126
new ReaderParameters { AssemblyResolver = _assemblyResolver }
127127
);
128-
var processedAssemblies = new List<AssemblyNameReference> { module.Assembly.Name };
128+
var processedAssemblies = new HashSet<string> { module.Assembly.Name.FullName };
129129
var resolvedModules = new List<ModuleDefinition>();
130130
_assemblyResolver.AddLib(module.Assembly);
131131
_archBuilder.AddAssembly(module.Assembly, false);
@@ -144,7 +144,7 @@ private void LoadModule(
144144
{
145145
try
146146
{
147-
processedAssemblies.Add(assemblyReference);
147+
processedAssemblies.Add(assemblyReference.FullName);
148148
_assemblyResolver.AddLib(assemblyReference);
149149
if (includeDependencies)
150150
{
@@ -176,17 +176,17 @@ private void LoadModule(
176176

177177
private void AddReferencedAssembliesRecursively(
178178
AssemblyNameReference currentAssemblyReference,
179-
ICollection<AssemblyNameReference> processedAssemblies,
179+
ICollection<string> processedAssemblies,
180180
List<ModuleDefinition> resolvedModules,
181181
FilterFunc filterFunc
182182
)
183183
{
184-
if (processedAssemblies.Contains(currentAssemblyReference))
184+
if (processedAssemblies.Contains(currentAssemblyReference.FullName))
185185
{
186186
return;
187187
}
188188

189-
processedAssemblies.Add(currentAssemblyReference);
189+
processedAssemblies.Add(currentAssemblyReference.FullName);
190190
try
191191
{
192192
_assemblyResolver.AddLib(currentAssemblyReference);

0 commit comments

Comments
 (0)