mirror of
https://github.com/CommunityToolkit/dotnet.git
synced 2026-10-27 02:30:03 +08:00
Fix AddSource operations on Roslyn 4.0.1
This commit is contained in:
+1
@@ -55,6 +55,7 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Extensions\IncrementalGeneratorInitializationContextExtensions.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Extensions\IncrementalValuesProviderExtensions.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Extensions\ISymbolExtensions.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Extensions\SourceProductionContextExtensions.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Extensions\ITypeSymbolExtensions.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Extensions\MemberDeclarationSyntaxExtensions.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Extensions\SyntaxNodeExtensions.cs" />
|
||||
|
||||
+3
-4
@@ -4,7 +4,6 @@
|
||||
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.ComponentModel.Models;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Extensions;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Helpers;
|
||||
@@ -75,7 +74,7 @@ public sealed partial class ObservablePropertyGenerator : IIncrementalGenerator
|
||||
// Insert all members into the same partial type declaration
|
||||
CompilationUnitSyntax compilationUnit = item.Hierarchy.GetCompilationUnit(memberDeclarations);
|
||||
|
||||
context.AddSource($"{item.Hierarchy.FilenameHint}.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource($"{item.Hierarchy.FilenameHint}.g.cs", compilationUnit);
|
||||
});
|
||||
|
||||
// Gather all property changing names
|
||||
@@ -92,7 +91,7 @@ public sealed partial class ObservablePropertyGenerator : IIncrementalGenerator
|
||||
|
||||
if (compilationUnit is not null)
|
||||
{
|
||||
context.AddSource("__KnownINotifyPropertyChangingArgs.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource("__KnownINotifyPropertyChangingArgs.g.cs", compilationUnit);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -110,7 +109,7 @@ public sealed partial class ObservablePropertyGenerator : IIncrementalGenerator
|
||||
|
||||
if (compilationUnit is not null)
|
||||
{
|
||||
context.AddSource("__KnownINotifyPropertyChangedArgs.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource("__KnownINotifyPropertyChangedArgs.g.cs", compilationUnit);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+2
-3
@@ -3,7 +3,6 @@
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.ComponentModel.Models;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Extensions;
|
||||
using Microsoft.CodeAnalysis;
|
||||
@@ -79,7 +78,7 @@ public sealed partial class ObservableValidatorValidateAllPropertiesGenerator :
|
||||
{
|
||||
CompilationUnitSyntax compilationUnit = Execute.GetSyntax(item);
|
||||
|
||||
context.AddSource("__ObservableValidatorExtensions.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource("__ObservableValidatorExtensions.g.cs", compilationUnit);
|
||||
});
|
||||
|
||||
// Generate the class with all validation methods
|
||||
@@ -87,7 +86,7 @@ public sealed partial class ObservableValidatorValidateAllPropertiesGenerator :
|
||||
{
|
||||
CompilationUnitSyntax compilationUnit = Execute.GetSyntax(item);
|
||||
|
||||
context.AddSource($"{item.FilenameHint}.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource($"{item.FilenameHint}.g.cs", compilationUnit);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -5,7 +5,6 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Extensions;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Models;
|
||||
using Microsoft.CodeAnalysis;
|
||||
@@ -108,7 +107,7 @@ public abstract partial class TransitiveMembersGenerator<TInfo> : IIncrementalGe
|
||||
ImmutableArray<MemberDeclarationSyntax> updatedMemberDeclarations = Execute.AdjustMemberDeclarationNullabilityAnnotations(filteredMemberDeclarations, item.MetadataInfo.IsNullabilitySupported);
|
||||
CompilationUnitSyntax compilationUnit = item.Hierarchy.GetCompilationUnit(updatedMemberDeclarations, this.classDeclaration.BaseList);
|
||||
|
||||
context.AddSource($"{item.Hierarchy.FilenameHint}.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource($"{item.Hierarchy.FilenameHint}.g.cs", compilationUnit);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Text;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||
|
||||
namespace CommunityToolkit.Mvvm.SourceGenerators.Extensions;
|
||||
|
||||
/// <summary>
|
||||
/// Extension methods for the <see cref="SourceProductionContext"/> type.
|
||||
/// </summary>
|
||||
internal static class SourceProductionContextExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds a new source file to a target <see cref="SourceProductionContext"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="context">The input <see cref="SourceProductionContext"/> instance to use.</param>
|
||||
/// <param name="name">The name of the source file to add.</param>
|
||||
/// <param name="compilationUnit">The <see cref="CompilationUnitSyntax"/> instance representing the syntax tree to add.</param>
|
||||
public static void AddSource(this SourceProductionContext context, string name, CompilationUnitSyntax compilationUnit)
|
||||
{
|
||||
#if !ROSLYN_4_3_1_OR_GREATER
|
||||
// We're fine with the extra allocation in the few cases where adjusting the filename is necessary.
|
||||
// This will only ever be done when code generation is executed again anyway, which is a slow path.
|
||||
name = name.Replace('+', '_').Replace('`', '_');
|
||||
#endif
|
||||
|
||||
// Add the UTF8 text for the input compilation unit
|
||||
context.AddSource(name, compilationUnit.GetText(Encoding.UTF8));
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Extensions;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Input.Models;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Models;
|
||||
@@ -61,7 +60,7 @@ public sealed partial class RelayCommandGenerator : IIncrementalGenerator
|
||||
ImmutableArray<MemberDeclarationSyntax> memberDeclarations = Execute.GetSyntax(item.Info.Value);
|
||||
CompilationUnitSyntax compilationUnit = item.Hierarchy.GetCompilationUnit(memberDeclarations);
|
||||
|
||||
context.AddSource($"{item.Hierarchy.FilenameHint}.{item.Info.Value.MethodName}.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource($"{item.Hierarchy.FilenameHint}.{item.Info.Value.MethodName}.g.cs", compilationUnit);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -4,7 +4,6 @@
|
||||
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Extensions;
|
||||
using CommunityToolkit.Mvvm.SourceGenerators.Messaging.Models;
|
||||
using Microsoft.CodeAnalysis;
|
||||
@@ -84,7 +83,7 @@ public sealed partial class IMessengerRegisterAllGenerator : IIncrementalGenerat
|
||||
{
|
||||
CompilationUnitSyntax compilationUnit = Execute.GetSyntax(item);
|
||||
|
||||
context.AddSource("__IMessengerExtensions.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource("__IMessengerExtensions.g.cs", compilationUnit);
|
||||
});
|
||||
|
||||
// Generate the class with all registration methods
|
||||
@@ -92,7 +91,7 @@ public sealed partial class IMessengerRegisterAllGenerator : IIncrementalGenerat
|
||||
{
|
||||
CompilationUnitSyntax compilationUnit = Execute.GetSyntax(item);
|
||||
|
||||
context.AddSource($"{item.FilenameHint}.g.cs", compilationUnit.GetText(Encoding.UTF8));
|
||||
context.AddSource($"{item.FilenameHint}.g.cs", compilationUnit);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user