Skip to content

Commit ea363a0

Browse files
authored
Enable output compilation validation in binder gen unit tests (#91565)
1 parent 718ebc1 commit ea363a0

31 files changed

+245
-177
lines changed

src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public static async Task AssertNoDiagnostic(this Project proj, params string[] i
9191
}
9292
}
9393

94-
private static Project WithDocuments(this Project project, IEnumerable<string> sources, IEnumerable<string>? sourceNames = null)
94+
public static Project WithDocuments(this Project project, IEnumerable<string> sources, IEnumerable<string>? sourceNames = null)
9595
{
9696
int count = 0;
9797
Project result = project;

src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Helpers/Emitter/Helpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ private void EmitInterceptsLocationAnnotations(List<InterceptorLocationInfo> inf
142142
{
143143
foreach (InterceptorLocationInfo info in infoList)
144144
{
145-
_writer.WriteLine($@"[{Identifier.InterceptsLocation}Attribute(@""{info.FilePath}"", {info.LineNumber}, {info.CharacterNumber})]");
145+
_writer.WriteLine($@"[{Identifier.InterceptsLocation}(@""{info.FilePath}"", {info.LineNumber}, {info.CharacterNumber})]");
146146
}
147147
}
148148

src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Helpers/Parser/OptionsConfigurationServiceCollectionExtensions.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,12 @@ @params[1].Type.SpecialType is SpecialType.System_String &&
8585

8686
private void RegisterTypeForMethodGen(MethodsToGen_Extensions_ServiceCollection overload, TypeSpec typeSpec)
8787
{
88+
RegisterTypeForBindCoreMainGen(typeSpec);
89+
8890
_sourceGenSpec.MethodsToGen_ServiceCollectionExt |= overload;
8991
_sourceGenSpec.Namespaces.Add("Microsoft.Extensions.DependencyInjection");
90-
RegisterTypeForBindCoreMainGen(typeSpec);
92+
// Emitting refs to IOptionsChangeTokenSource, ConfigurationChangeTokenSource, IConfigureOptions<>, ConfigureNamedOptions<>.
93+
_sourceGenSpec.Namespaces.Add("Microsoft.Extensions.Options");
9194
}
9295
}
9396
}

src/libraries/Microsoft.Extensions.Configuration.Binder/tests/SourceGenerationTests/Baselines/Collections.generated.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
3232
{
3333
#region IConfiguration extensions.
3434
/// <summary>Attempts to bind the configuration instance to a new instance of type T.</summary>
35-
[InterceptsLocationAttribute(@"src-0.cs", 12, 17)]
35+
[InterceptsLocation(@"src-0.cs", 12, 17)]
3636
public static T? Get<T>(this IConfiguration configuration) => (T?)(GetCore(configuration, typeof(T), configureOptions: null) ?? default(T));
3737
#endregion IConfiguration extensions.
3838

src/libraries/Microsoft.Extensions.Configuration.Binder/tests/SourceGenerationTests/Baselines/ConfigurationBinder/Bind.generated.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
3131
{
3232
#region IConfiguration extensions.
3333
/// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
34-
[InterceptsLocationAttribute(@"src-0.cs", 13, 18)]
34+
[InterceptsLocation(@"src-0.cs", 12, 14)]
3535
public static void Bind_ProgramMyClass(this IConfiguration configuration, object? instance)
3636
{
3737
if (configuration is null)
@@ -49,7 +49,7 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
4949
}
5050

5151
/// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
52-
[InterceptsLocationAttribute(@"src-0.cs", 14, 24)]
52+
[InterceptsLocation(@"src-0.cs", 13, 20)]
5353
public static void Bind_ProgramMyClass(this IConfiguration configuration, object? instance, Action<BinderOptions>? configureOptions)
5454
{
5555
if (configuration is null)
@@ -67,7 +67,7 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
6767
}
6868

6969
/// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
70-
[InterceptsLocationAttribute(@"src-0.cs", 15, 24)]
70+
[InterceptsLocation(@"src-0.cs", 14, 20)]
7171
public static void Bind_ProgramMyClass(this IConfiguration configuration, string key, object? instance)
7272
{
7373
if (configuration is null)

src/libraries/Microsoft.Extensions.Configuration.Binder/tests/SourceGenerationTests/Baselines/ConfigurationBinder/Bind_Instance.generated.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
3131
{
3232
#region IConfiguration extensions.
3333
/// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
34-
[InterceptsLocationAttribute(@"src-0.cs", 12, 20)]
34+
[InterceptsLocation(@"src-0.cs", 12, 20)]
3535
public static void Bind_ProgramMyClass(this IConfiguration configuration, object? instance)
3636
{
3737
if (configuration is null)

src/libraries/Microsoft.Extensions.Configuration.Binder/tests/SourceGenerationTests/Baselines/ConfigurationBinder/Bind_Instance_BinderOptions.generated.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
3131
{
3232
#region IConfiguration extensions.
3333
/// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
34-
[InterceptsLocationAttribute(@"src-0.cs", 12, 20)]
34+
[InterceptsLocation(@"src-0.cs", 12, 20)]
3535
public static void Bind_ProgramMyClass(this IConfiguration configuration, object? instance, Action<BinderOptions>? configureOptions)
3636
{
3737
if (configuration is null)

src/libraries/Microsoft.Extensions.Configuration.Binder/tests/SourceGenerationTests/Baselines/ConfigurationBinder/Bind_Key_Instance.generated.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
3131
{
3232
#region IConfiguration extensions.
3333
/// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
34-
[InterceptsLocationAttribute(@"src-0.cs", 12, 20)]
34+
[InterceptsLocation(@"src-0.cs", 12, 20)]
3535
public static void Bind_ProgramMyClass(this IConfiguration configuration, string key, object? instance)
3636
{
3737
if (configuration is null)

src/libraries/Microsoft.Extensions.Configuration.Binder/tests/SourceGenerationTests/Baselines/ConfigurationBinder/Get.generated.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
3131
{
3232
#region IConfiguration extensions.
3333
/// <summary>Attempts to bind the configuration instance to a new instance of type T.</summary>
34-
[InterceptsLocationAttribute(@"src-0.cs", 12, 38)]
34+
[InterceptsLocation(@"src-0.cs", 12, 38)]
3535
public static T? Get<T>(this IConfiguration configuration) => (T?)(GetCore(configuration, typeof(T), configureOptions: null) ?? default(T));
3636

3737
/// <summary>Attempts to bind the configuration instance to a new instance of type T.</summary>
38-
[InterceptsLocationAttribute(@"src-0.cs", 14, 36)]
38+
[InterceptsLocation(@"src-0.cs", 14, 36)]
3939
public static T? Get<T>(this IConfiguration configuration, Action<BinderOptions>? configureOptions) => (T?)(GetCore(configuration, typeof(T), configureOptions) ?? default(T));
4040

4141
/// <summary>Attempts to bind the configuration instance to a new instance of type T.</summary>
42-
[InterceptsLocationAttribute(@"src-0.cs", 13, 36)]
42+
[InterceptsLocation(@"src-0.cs", 13, 56)]
4343
public static object? Get(this IConfiguration configuration, Type type) => GetCore(configuration, type, configureOptions: null);
4444

4545
/// <summary>Attempts to bind the configuration instance to a new instance of type T.</summary>
46-
[InterceptsLocationAttribute(@"src-0.cs", 15, 36)]
46+
[InterceptsLocation(@"src-0.cs", 15, 47)]
4747
public static object? Get(this IConfiguration configuration, Type type, Action<BinderOptions>? configureOptions) => GetCore(configuration, type, configureOptions);
4848
#endregion IConfiguration extensions.
4949

src/libraries/Microsoft.Extensions.Configuration.Binder/tests/SourceGenerationTests/Baselines/ConfigurationBinder/GetValue.generated.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,19 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
3030
{
3131
#region IConfiguration extensions.
3232
/// <summary>Extracts the value with the specified key and converts it to the specified type.</summary>
33-
[InterceptsLocationAttribute(@"src-0.cs", 13, 18)]
33+
[InterceptsLocation(@"src-0.cs", 13, 18)]
3434
public static T? GetValue<T>(this IConfiguration configuration, string key) => (T?)(BindingExtensions.GetValueCore(configuration, typeof(T), key) ?? default(T));
3535

3636
/// <summary>Extracts the value with the specified key and converts it to the specified type.</summary>
37-
[InterceptsLocationAttribute(@"src-0.cs", 16, 24)]
37+
[InterceptsLocation(@"src-0.cs", 16, 24)]
3838
public static T? GetValue<T>(this IConfiguration configuration, string key, T defaultValue) => (T?)(BindingExtensions.GetValueCore(configuration, typeof(T), key) ?? defaultValue);
3939

4040
/// <summary>Extracts the value with the specified key and converts it to the specified type.</summary>
41-
[InterceptsLocationAttribute(@"src-0.cs", 14, 24)]
41+
[InterceptsLocation(@"src-0.cs", 14, 24)]
4242
public static object? GetValue(this IConfiguration configuration, Type type, string key) => BindingExtensions.GetValueCore(configuration, type, key);
4343

4444
/// <summary>Extracts the value with the specified key and converts it to the specified type.</summary>
45-
[InterceptsLocationAttribute(@"src-0.cs", 17, 24)]
45+
[InterceptsLocation(@"src-0.cs", 17, 24)]
4646
public static object? GetValue(this IConfiguration configuration, Type type, string key, object? defaultValue) => BindingExtensions.GetValueCore(configuration, type, key) ?? defaultValue;
4747
#endregion IConfiguration extensions.
4848

0 commit comments

Comments
 (0)