Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Address feedback
  • Loading branch information
Youssef1313 committed Aug 21, 2022
commit ed095d146f4cdc61e041fe90c97e22d8f66dc959
2 changes: 1 addition & 1 deletion eng/targets/Imports.targets
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@
</ItemGroup>
</Target>

<!-- TODO: Remove once we consume an SDK with the fix from https://github.com/dotnet/wpf/pull/6799 -->
<!-- Workaround for https://github.com/dotnet/wpf/issues/6792 -->
<Target Name="RemoveDuplicateAnalyzers" BeforeTargets="CoreCompile" Condition="'$(UseWpf)' == 'true'">
<ItemGroup>
<FilteredAnalyzer Include="@(Analyzer->Distinct())" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -510,17 +510,20 @@ internal void ResolveAnalyzersFromArguments(
}
};

var resolvedReferences = PooledHashSet<AnalyzerFileReference>.GetInstance();
var resolvedReferencesSet = PooledHashSet<AnalyzerFileReference>.GetInstance();
var resolvedReferencesList = ArrayBuilder<AnalyzerFileReference>.GetInstance();
foreach (var reference in AnalyzerReferences)
{
var resolvedReference = ResolveAnalyzerReference(reference, analyzerLoader);
if (resolvedReference != null)
{
var isAdded = resolvedReferences.Add(resolvedReference);
var isAdded = resolvedReferencesSet.Add(resolvedReference);
if (isAdded)
{
// register the reference to the analyzer loader:
analyzerLoader.AddDependencyLocation(resolvedReference.FullPath);

resolvedReferencesList.Add(resolvedReference);
}
else
{
Expand All @@ -534,15 +537,16 @@ internal void ResolveAnalyzersFromArguments(
}

// All analyzer references are registered now, we can start loading them.
foreach (var resolvedReference in resolvedReferences)
foreach (var resolvedReference in resolvedReferencesList)
{
resolvedReference.AnalyzerLoadFailed += errorHandler;
resolvedReference.AddAnalyzers(analyzerBuilder, language, shouldIncludeAnalyzer);
resolvedReference.AddGenerators(generatorBuilder, language);
resolvedReference.AnalyzerLoadFailed -= errorHandler;
}

resolvedReferences.Free();
resolvedReferencesList.Free();
resolvedReferencesSet.Free();

generators = generatorBuilder.ToImmutable();
analyzers = analyzerBuilder.ToImmutable();
Expand Down