Skip to content

Commit 9f4f5cd

Browse files
Only convert additional documents in whole project conversion
1 parent ab57b55 commit 9f4f5cd

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

CodeConverter/CSharp/VBToCSProjectContentsConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,10 @@ private static string GetPathRelativeToProject(string projDirPath, string p)
7676
return p.Replace(projDirPath, "").TrimStart(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
7777
}
7878

79-
public async IAsyncEnumerable<ConversionResult> GetAdditionalConversionResults([EnumeratorCancellation] CancellationToken cancellationToken)
79+
public async IAsyncEnumerable<ConversionResult> GetAdditionalConversionResults(IReadOnlyCollection<TextDocument> additionalDocumentsToConvert, [EnumeratorCancellation] CancellationToken cancellationToken)
8080
{
8181
string projDirPath = Project.GetDirectoryPath();
82-
foreach (var doc in Project.AdditionalDocuments) {
82+
foreach (var doc in additionalDocumentsToConvert) {
8383
string newPath = Path.Combine(projDirPath, Path.GetFileName(doc.FilePath));
8484
if (newPath != doc.FilePath) {
8585
string newText = RebaseResxPaths(projDirPath, Path.GetDirectoryName(doc.FilePath), (await doc.GetTextAsync(cancellationToken)).ToString());

CodeConverter/Shared/IProjectContentsConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ public interface IProjectContentsConverter
1414
Project Project { get; }
1515
Task<SyntaxNode> SingleFirstPass(Document document);
1616
Task<(Project project, List<WipFileConversion<DocumentId>> firstPassDocIds)> GetConvertedProject(WipFileConversion<SyntaxNode>[] firstPassResults);
17-
public IAsyncEnumerable<ConversionResult> GetAdditionalConversionResults(CancellationToken cancellationToken);
17+
public IAsyncEnumerable<ConversionResult> GetAdditionalConversionResults(IReadOnlyCollection<TextDocument> additionalDocumentsToConvert, CancellationToken cancellationToken);
1818
}
1919
}

CodeConverter/Shared/ProjectConversion.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

CodeConverter/VB/CSToVBProjectContentsConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public async Task<SyntaxNode> SingleFirstPass(Document document)
7171
return _convertedVbProject.WithDocuments(firstPassResults);
7272
}
7373

74-
public async IAsyncEnumerable<ConversionResult> GetAdditionalConversionResults([EnumeratorCancellation] CancellationToken cancellationToken)
74+
public async IAsyncEnumerable<ConversionResult> GetAdditionalConversionResults(IReadOnlyCollection<TextDocument> additionalDocumentsToConvert, [EnumeratorCancellation] CancellationToken cancellationToken)
7575
{
7676
yield break;
7777
}

0 commit comments

Comments
 (0)