@@ -17,20 +17,22 @@ namespace ICSharpCode.CodeConverter.Shared
1717{
1818 public class ProjectConversion
1919 {
20+ private readonly IProjectContentsConverter _projectContentsConverter ;
2021 private readonly IReadOnlyCollection < Document > _documentsToConvert ;
22+ private readonly IReadOnlyCollection < TextDocument > _additionalDocumentsToConvert ;
2123 private readonly ILanguageConversion _languageConversion ;
2224 private readonly bool _showCompilationErrors ;
2325 private readonly bool _returnSelectedNode ;
2426 private static readonly string [ ] BannedPaths = new [ ] { ".AssemblyAttributes." , "\\ bin\\ " , "\\ obj\\ " } ;
25- private readonly IProjectContentsConverter _projectContentsConverter ;
2627 private readonly CancellationToken _cancellationToken ;
2728
28- private ProjectConversion ( IProjectContentsConverter projectContentsConverter , IEnumerable < Document > documentsToConvert ,
29+ private ProjectConversion ( IProjectContentsConverter projectContentsConverter , IEnumerable < Document > documentsToConvert , IEnumerable < TextDocument > additionalDocumentsToConvert ,
2930 ILanguageConversion languageConversion , CancellationToken cancellationToken , bool showCompilationErrors , bool returnSelectedNode = false )
3031 {
3132 _projectContentsConverter = projectContentsConverter ;
3233 _languageConversion = languageConversion ;
3334 _documentsToConvert = documentsToConvert . ToList ( ) ;
35+ _additionalDocumentsToConvert = additionalDocumentsToConvert . ToList ( ) ;
3436 _showCompilationErrors = showCompilationErrors ;
3537 _returnSelectedNode = returnSelectedNode ;
3638 _cancellationToken = cancellationToken ;
@@ -65,7 +67,7 @@ private ProjectConversion(IProjectContentsConverter projectContentsConverter, IE
6567
6668 document = projectContentsConverter . Project . GetDocument ( document . Id ) ;
6769
68- var conversion = new ProjectConversion ( projectContentsConverter , new [ ] { document } , languageConversion , cancellationToken , conversionOptions . ShowCompilationErrors , returnSelectedNode ) ;
70+ var conversion = new ProjectConversion ( projectContentsConverter , new [ ] { document } , Enumerable . Empty < TextDocument > ( ) , languageConversion , cancellationToken , conversionOptions . ShowCompilationErrors , returnSelectedNode ) ;
6971 var conversionResults = await conversion . Convert ( progress ) . ToArrayAsync ( ) ;
7072 var codeResult = conversionResults . SingleOrDefault ( x => ! string . IsNullOrWhiteSpace ( x . ConvertedCode ) )
7173 ?? conversionResults . First ( ) ;
@@ -163,7 +165,7 @@ private static async IAsyncEnumerable<ConversionResult> ConvertProjectContents(
163165 //Perf heuristic: Decrease memory pressure on the simplification phase by converting large files first https://github.com/icsharpcode/CodeConverter/issues/524#issuecomment-590301594
164166 var documentsToConvert = documentsWithLengths . OrderByDescending ( d => d . Length ) . Select ( d => d . Doc ) ;
165167
166- var projectConversion = new ProjectConversion ( projectContentsConverter , documentsToConvert , languageConversion , cancellationToken , false ) ;
168+ var projectConversion = new ProjectConversion ( projectContentsConverter , documentsToConvert , projectContentsConverter . Project . AdditionalDocuments , languageConversion , cancellationToken , false ) ;
167169
168170 var results = projectConversion . Convert ( progress ) ;
169171 await foreach ( var result in results ) yield return result ;
@@ -187,7 +189,7 @@ private async IAsyncEnumerable<ConversionResult> Convert(IProgress<ConversionPro
187189 await foreach ( var result in secondPassResults . Select ( CreateConversionResult ) ) {
188190 yield return result ;
189191 }
190- await foreach ( var result in _projectContentsConverter . GetAdditionalConversionResults ( _cancellationToken ) ) {
192+ await foreach ( var result in _projectContentsConverter . GetAdditionalConversionResults ( _additionalDocumentsToConvert , _cancellationToken ) ) {
191193 yield return result ;
192194 }
193195 }
0 commit comments