diff --git a/README.md b/README.md index 8017ed446..435553dd4 100644 --- a/README.md +++ b/README.md @@ -1617,36 +1617,21 @@ partial class MyResolver This partial class, combined with at least one `[MessagePackObject]`-annotated type, will result in some members being added to your resolver class. These members will _not_ be in your own source file, but they will be emitted during the compilation. Visual Studio allows you to see these source generated files through a variety of means. -These members include the following properties `Instance` and `InstanceWithStandardAotResolver`. -You can use these members to serialize your object graph. +These members include the property `Instance`. +You can use this property to access the resolver for your specific types' formatters, +but you'll almost certainly need to combine this resolver with the standard resolver to get a fully functional serializer. +In fact the *default* resolver in this library will automatically discover this resolver in your assembly, +so you should only need to interact with this resolver directly for advanced scenarios. -Leveraging this resolver at runtime requires that you opt-in, which typically looks like this: - -```cs -/// Options to use MessagePack with AOT-generated formatters. -private static readonly MessagePackSerializerOptions SerializerOptions = MessagePackSerializerOptions.Standard - .WithResolver(MyResolver.InstanceWithStandardAotResolver); - -// Serialize and deserialize using the AOT option. -byte[] serialized = MessagePackSerializer.Serialize(value, SerializerOptions); -T after = MessagePackSerializer.Deserialize(serialized, SerializerOptions); -``` - -Alternatively if you run in a highly-focused process, you can set the default options, and then use the simpler overloads to serialize. -Do NOT do this if you're in a shared process where other code may be using MessagePack with their own options. - -```cs -MessagePackSerializer.DefaultOptions = SerializerOptions; // WARNING: mutates a static shared by all MessagePack users in the process -byte[] serialized = MessagePackSerializer.Serialize(value); -T after = MessagePackSerializer.Deserialize(serialized); -``` +Leveraging this resolver at runtime happens automatically by default, +since the `StandardResolver` includes the `SourceGeneratedFormatterResolver` +which discovers and your source generated resolver. ### Customizations You can customize the generated source through properties on the `GeneratedMessagePackResolverAttribute`. When exposing the generated resolver publicly, consumers outside the library should aggregate the resolver using its `Instance` property, which contains *only* the generated formatters. -The `InstanceWithStandardAotResolver` property is a convenience for callers that will not be aggregating the resolver with those from other libraries, since it aggregates built-in AOT friendly resolvers from the MessagePack library itself. Two assembly-level attributes exist to help with mixing in your own custom formatters with the automatically generated ones: - `MessagePackKnownFormatterAttribute` diff --git a/src/MessagePack.SourceGenerator/CodeAnalysis/TypeCollector.cs b/src/MessagePack.SourceGenerator/CodeAnalysis/TypeCollector.cs index 4205020a3..5c2375108 100644 --- a/src/MessagePack.SourceGenerator/CodeAnalysis/TypeCollector.cs +++ b/src/MessagePack.SourceGenerator/CodeAnalysis/TypeCollector.cs @@ -1076,6 +1076,13 @@ private bool CheckValidMessagePackFormatterAttribute(AttributeData formatterAttr return null; } + // Do not source generate the formatter for this type if the attribute opted out. + if (contractAttr.NamedArguments.FirstOrDefault(kvp => kvp.Key == Constants.SuppressSourceGenerationPropertyName).Value.Value is true) + { + // Skip any source generation + return null; + } + ObjectSerializationInfo info = new(isClass, isOpenGenericType, isOpenGenericType ? type.TypeParameters.Select(ToGenericTypeParameterInfo).ToArray() : Array.Empty(), constructorParameters.ToArray(), isIntKey, isIntKey ? intMembers.Values.ToArray() : stringMembers.Values.ToArray(), isOpenGenericType ? GetGenericFormatterClassName(type) : GetMinimallyQualifiedClassName(type), type.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat), type.ContainingNamespace.IsGlobalNamespace ? null : type.ContainingNamespace.ToDisplayString(), hasSerializationConstructor, needsCastOnAfter, needsCastOnBefore) { }; diff --git a/src/MessagePack.SourceGenerator/MessagePackGenerator.cs b/src/MessagePack.SourceGenerator/MessagePackGenerator.cs index 8b736f803..5fbecab6d 100644 --- a/src/MessagePack.SourceGenerator/MessagePackGenerator.cs +++ b/src/MessagePack.SourceGenerator/MessagePackGenerator.cs @@ -33,7 +33,7 @@ public void Initialize(IncrementalGeneratorInitializationContext context) var options = resolverOptions.Combine(customFormattedTypes).Combine(customFormatters).Select(static (input, ct) => { - AnalyzerOptions? options = input.Left.Left ?? new(); + AnalyzerOptions? options = input.Left.Left ?? new() { IsGeneratingSource = true }; var formattableTypes = input.Left.Right; var formatterTypes = input.Right.Aggregate( @@ -48,12 +48,12 @@ public void Initialize(IncrementalGeneratorInitializationContext context) var messagePackObjectTypes = context.SyntaxProvider.ForAttributeWithMetadataName( $"{AttributeNamespace}.{MessagePackObjectAttributeName}", predicate: static (node, _) => node is TypeDeclarationSyntax, - transform: static (context, _) => (TypeDeclarationSyntax)context.TargetNode); + transform: static (context, _) => (ITypeSymbol)context.TargetSymbol); var unionTypes = context.SyntaxProvider.ForAttributeWithMetadataName( $"{AttributeNamespace}.{MessagePackUnionAttributeName}", predicate: static (node, _) => node is InterfaceDeclarationSyntax, - transform: static (context, _) => (TypeDeclarationSyntax)context.TargetNode); + transform: static (context, _) => (ITypeSymbol)context.TargetSymbol); var combined = messagePackObjectTypes.Collect().Combine(unionTypes.Collect()); @@ -65,28 +65,28 @@ public void Initialize(IncrementalGeneratorInitializationContext context) { AnalyzerOptions options = s.Right; - if (!ReferenceSymbols.TryCreate(s.Left.Right, out ReferenceSymbols? referenceSymbols)) + if (!ReferenceSymbols.TryCreate(s.Left.Right, out ReferenceSymbols? referenceSymbols) || referenceSymbols.MessagePackFormatter is null) { return default; } List modelPerType = new(); - void Collect(TypeDeclarationSyntax typeDecl) + void Collect(ITypeSymbol typeSymbol) { - if (TypeCollector.Collect(s.Left.Right, options, referenceSymbols, reportAnalyzerDiagnostic: null, typeDecl, ct) is FullModel model) + if (TypeCollector.Collect(s.Left.Right, options, referenceSymbols, reportAnalyzerDiagnostic: null, typeSymbol) is FullModel model) { modelPerType.Add(model); } } - foreach (TypeDeclarationSyntax typeDecl in s.Left.Left.Left) + foreach (var typeSymbol in s.Left.Left.Left) { - Collect(typeDecl); + Collect(typeSymbol); } - foreach (TypeDeclarationSyntax typeDecl in s.Left.Left.Right) + foreach (var typeSymbol in s.Left.Left.Right) { - Collect(typeDecl); + Collect(typeSymbol); } return FullModel.Combine(modelPerType.ToImmutableArray()); diff --git a/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.cs b/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.cs index a8d493c5d..b24120a84 100644 --- a/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.cs +++ b/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.cs @@ -25,26 +25,27 @@ public partial class ResolverTemplate : ResolverTemplateBase /// public virtual string TransformText() { - this.Write("\r\n"); + this.Write("\r\nusing MsgPack = global::MessagePack;\r\n\r\n[assembly: MsgPack::Internal.GeneratedA" + + "ssemblyMessagePackResolverAttribute(typeof("); + this.Write(this.ToStringHelper.ToStringWithCulture(CodeAnalysisUtilities.QualifyWithOptionalNamespace(ResolverName, ResolverNamespace))); + this.Write("), "); + this.Write(this.ToStringHelper.ToStringWithCulture(Version.Parse(ThisAssembly.AssemblyFileVersion).Major)); + this.Write(", "); + this.Write(this.ToStringHelper.ToStringWithCulture(Version.Parse(ThisAssembly.AssemblyFileVersion).Minor)); + this.Write(")]\r\n\r\n"); if (ResolverNamespace.Length > 0) { this.Write("namespace "); this.Write(this.ToStringHelper.ToStringWithCulture(ResolverNamespace)); this.Write(" {\r\n"); } - this.Write("\r\nusing MsgPack = global::MessagePack;\r\n\r\n/// A MessagePack resolver tha" + - "t uses generated formatters for types in this assembly.\r\npartial class" + - " "); + this.Write("\r\n/// A MessagePack resolver that uses generated formatters for types in" + + " this assembly.\r\npartial class "); this.Write(this.ToStringHelper.ToStringWithCulture(ResolverName)); this.Write(" : MsgPack::IFormatterResolver\r\n{\r\n\t/// An instance of this resolver tha" + "t only returns formatters specifically generated for types in this assembly.\r\n\tpublic static readonly MsgPack::IFormatterResolver Instance = new "); this.Write(this.ToStringHelper.ToStringWithCulture(ResolverName)); - this.Write(@"(); - - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - - private "); + this.Write("();\r\n\r\n\tprivate "); this.Write(this.ToStringHelper.ToStringWithCulture(ResolverName)); this.Write(@"() { @@ -91,26 +92,7 @@ static FormatterCache() this.Write(this.ToStringHelper.ToStringWithCulture(CodeAnalysisUtilities.QualifyWithOptionalNamespace(x.FormatterName, x.Namespace))); this.Write("();\r\n\t"); } - this.Write(@" default: return null; - } - } - } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } -} - -"); + this.Write("\t\t\t\tdefault: return null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"); if (ResolverNamespace.Length > 0) { this.Write("}\r\n"); } diff --git a/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.tt b/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.tt index 98afb4465..abc4d5105 100644 --- a/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.tt +++ b/src/MessagePack.SourceGenerator/Transforms/ResolverTemplate.tt @@ -4,21 +4,20 @@ <#@ import namespace="System.Text" #> <#@ import namespace="System.Collections.Generic" #> +using MsgPack = global::MessagePack; + +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(<#= CodeAnalysisUtilities.QualifyWithOptionalNamespace(ResolverName, ResolverNamespace) #>), <#= Version.Parse(ThisAssembly.AssemblyFileVersion).Major #>, <#= Version.Parse(ThisAssembly.AssemblyFileVersion).Minor #>)] + <# if (ResolverNamespace.Length > 0) { #> namespace <#= ResolverNamespace #> { <# } #> -using MsgPack = global::MessagePack; - /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class <#= ResolverName #> : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new <#= ResolverName #>(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private <#= ResolverName #>() { } @@ -73,19 +72,6 @@ partial class <#= ResolverName #> : MsgPack::IFormatterResolver } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } <# if (ResolverNamespace.Length > 0) { #> diff --git a/src/MessagePack.SourceGenerator/Utils/Constants.cs b/src/MessagePack.SourceGenerator/Utils/Constants.cs index b4fba4b25..5ab4fcde4 100644 --- a/src/MessagePack.SourceGenerator/Utils/Constants.cs +++ b/src/MessagePack.SourceGenerator/Utils/Constants.cs @@ -11,4 +11,5 @@ internal static class Constants internal const string MessagePackAssumedFormattableAttributeName = "MessagePackAssumedFormattableAttribute"; internal const string MessagePackObjectAttributeName = "MessagePackObjectAttribute"; internal const string MessagePackUnionAttributeName = "UnionAttribute"; + internal const string SuppressSourceGenerationPropertyName = "SuppressSourceGeneration"; } diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Annotations/Attributes.cs b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Annotations/Attributes.cs index a90a17b69..b1368da08 100644 --- a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Annotations/Attributes.cs +++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Annotations/Attributes.cs @@ -17,6 +17,20 @@ public MessagePackObjectAttribute(bool keyAsPropertyName = false) { this.KeyAsPropertyName = keyAsPropertyName; } + + /// + /// Gets or sets a value indicating whether the source generator should not + /// generate a formatter for this type at compile-time. + /// + /// + /// By default, source generators will generate a formatter for every type that is annotated with + /// this attribute to improve startup performance. + /// However if this leads to malfunctions during code generation or at runtime, + /// it can be disabled by setting this property to . + /// When no precompiled formatter is found at runtime, the DynamicObjectResolver + /// will generate a formatter at runtime instead. + /// + public bool SuppressSourceGeneration { get; set; } } [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = true)] diff --git a/src/MessagePack/GeneratedMessagePackResolverAttribute.cs b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/GeneratedMessagePackResolverAttribute.cs similarity index 100% rename from src/MessagePack/GeneratedMessagePackResolverAttribute.cs rename to src/MessagePack.UnityClient/Assets/Scripts/MessagePack/GeneratedMessagePackResolverAttribute.cs diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/GeneratedMessagePackResolverAttribute.cs.meta b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/GeneratedMessagePackResolverAttribute.cs.meta new file mode 100644 index 000000000..5f4990892 --- /dev/null +++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/GeneratedMessagePackResolverAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c41c54fb5864a6180ab7826ae10e07d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Internal/GeneratedAssemblyMessagePackResolverAttribute.cs b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Internal/GeneratedAssemblyMessagePackResolverAttribute.cs new file mode 100644 index 000000000..7826a3891 --- /dev/null +++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Internal/GeneratedAssemblyMessagePackResolverAttribute.cs @@ -0,0 +1,39 @@ +// Copyright (c) All contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace MessagePack.Internal +{ + /// + /// An assembly-level attribute that identifies the source-generated resolver for MessagePack for all types in this assembly. + /// + [AttributeUsage(System.AttributeTargets.Assembly, Inherited = false, AllowMultiple = false)] + public class GeneratedAssemblyMessagePackResolverAttribute : Attribute + { + /// + /// Initializes a new instance of the class. + /// + /// The type that implements . + /// + /// The component of the version of the generator that produced the resolver and formatters. + /// This may be used to determine whether the resolver and formatters are compatible with the current version of MessagePack. + /// + /// + /// The component of the version of the generator that produced the resolver and formatters. + /// This may be used to determine whether the resolver and formatters are compatible with the current version of MessagePack. + /// + public GeneratedAssemblyMessagePackResolverAttribute(Type resolverType, int majorVersion, int minorVersion) + { + ResolverType = resolverType; + MajorVersion = majorVersion; + MinorVersion = minorVersion; + } + + public Type ResolverType { get; } + + public int MajorVersion { get; } + + public int MinorVersion { get; } + } +} diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Internal/GeneratedAssemblyMessagePackResolverAttribute.cs.meta b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Internal/GeneratedAssemblyMessagePackResolverAttribute.cs.meta new file mode 100644 index 000000000..b377b92ca --- /dev/null +++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Internal/GeneratedAssemblyMessagePackResolverAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ffcd39f733db4f0c9fc77bbcee7a3f42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/SourceGeneratedFormatterResolver.cs b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/SourceGeneratedFormatterResolver.cs new file mode 100644 index 000000000..ed59f74b5 --- /dev/null +++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/SourceGeneratedFormatterResolver.cs @@ -0,0 +1,51 @@ +// Copyright (c) All contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Concurrent; +using System.Linq; +using System.Reflection; +using MessagePack.Formatters; +using MessagePack.Internal; + +namespace MessagePack.Resolvers +{ + /// + /// A resolver that discovers formatters generated by MessagePack.SourceGenerator. + /// + public sealed class SourceGeneratedFormatterResolver : IFormatterResolver + { + /// + /// The singleton instance that can be used. + /// + public static readonly SourceGeneratedFormatterResolver Instance = new(); + + private static readonly ConcurrentDictionary AssemblyResolverCache = new(); + + private SourceGeneratedFormatterResolver() + { + } + + /// + public IMessagePackFormatter? GetFormatter() => FormatterCache.Formatter; + + private static class FormatterCache + { + internal static readonly IMessagePackFormatter? Formatter = FindPrecompiledFormatter(); + + private static IMessagePackFormatter? FindPrecompiledFormatter() + { + IFormatterResolver? resolver = AssemblyResolverCache.GetOrAdd(typeof(T).Assembly, static assembly => + { + if (typeof(T).Assembly.GetCustomAttributes().FirstOrDefault() is { } att) + { + return (IFormatterResolver?)att.ResolverType.GetField("Instance", BindingFlags.Public | BindingFlags.Static)?.GetValue(null); + } + + return null; + }); + + return resolver?.GetFormatter(); + } + } + } +} diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/SourceGeneratedFormatterResolver.cs.meta b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/SourceGeneratedFormatterResolver.cs.meta new file mode 100644 index 000000000..c3764493a --- /dev/null +++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/SourceGeneratedFormatterResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9e72807ad3f4827a5a5fe8161de3ffa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/StandardResolver.cs b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/StandardResolver.cs index 869e939ee..f738f93cb 100644 --- a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/StandardResolver.cs +++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Resolvers/StandardResolver.cs @@ -83,40 +83,6 @@ static FormatterCache() } } - /// - /// The standard resolver to use when targeting AOT platforms or when avoiding runtime code generation is undesirable for perf reasons. - /// - /// - /// - /// This resolver may invoke reflection at runtime, but only for types that are not known at compile time. - /// - /// - /// This resolver is meant to be combined with a GeneratedResolver produced by our source generator. - /// This is done automatically in the GeneratedResolver.InstanceWithStandardAotResolver property. - /// - /// - public static class StandardAotResolver - { - /// - /// The singleton instance that can be used. - /// - public static readonly IFormatterResolver Instance = CompositeResolver.Create( - new IMessagePackFormatter[] - { - ExpandoObjectFormatter.Instance, - }, - new IFormatterResolver[] - { - BuiltinResolver.Instance, // Try Builtin - AttributeFormatterResolver.Instance, // Try use [MessagePackFormatter] -#if UNITY_2018_3_OR_NEWER - MessagePack.Unity.UnityResolver.Instance, -#else - ImmutableCollection.ImmutableCollectionResolver.Instance, -#endif - }); - } - public sealed class ContractlessStandardResolver : IFormatterResolver { /// @@ -323,6 +289,7 @@ internal static class StandardResolverHelper { BuiltinResolver.Instance, // Try Builtin AttributeFormatterResolver.Instance, // Try use [MessagePackFormatter] + SourceGeneratedFormatterResolver.Instance, // Prefer source generated formatters over dynamic ones. #if UNITY_2018_3_OR_NEWER MessagePack.Unity.UnityResolver.Instance, diff --git a/src/MessagePack/net6.0/PublicAPI.Unshipped.txt b/src/MessagePack/net6.0/PublicAPI.Unshipped.txt index d595f03fd..551c8068c 100644 --- a/src/MessagePack/net6.0/PublicAPI.Unshipped.txt +++ b/src/MessagePack/net6.0/PublicAPI.Unshipped.txt @@ -25,11 +25,17 @@ MessagePack.GeneratedMessagePackResolverAttribute MessagePack.GeneratedMessagePackResolverAttribute.GeneratedMessagePackResolverAttribute() -> void MessagePack.GeneratedMessagePackResolverAttribute.UseMapMode.get -> bool MessagePack.GeneratedMessagePackResolverAttribute.UseMapMode.set -> void -MessagePack.Resolvers.StandardAotResolver +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.GeneratedAssemblyMessagePackResolverAttribute(System.Type! resolverType, int majorVersion, int minorVersion) -> void +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.MajorVersion.get -> int +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.MinorVersion.get -> int +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.ResolverType.get -> System.Type! +MessagePack.Resolvers.SourceGeneratedFormatterResolver +MessagePack.Resolvers.SourceGeneratedFormatterResolver.GetFormatter() -> MessagePack.Formatters.IMessagePackFormatter? static readonly MessagePack.Formatters.Matrix3x2Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Matrix4x4Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.QuaternionFormatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector2Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector3Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector4Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! -static readonly MessagePack.Resolvers.StandardAotResolver.Instance -> MessagePack.IFormatterResolver! \ No newline at end of file +static readonly MessagePack.Resolvers.SourceGeneratedFormatterResolver.Instance -> MessagePack.Resolvers.SourceGeneratedFormatterResolver! diff --git a/src/MessagePack/net8.0/PublicAPI.Unshipped.txt b/src/MessagePack/net8.0/PublicAPI.Unshipped.txt index 8d5e421d2..2a32d2a90 100644 --- a/src/MessagePack/net8.0/PublicAPI.Unshipped.txt +++ b/src/MessagePack/net8.0/PublicAPI.Unshipped.txt @@ -35,11 +35,17 @@ MessagePack.ImmutableCollection.FrozenSetFormatter.Deserialize(ref MessagePac MessagePack.ImmutableCollection.FrozenSetFormatter.FrozenSetFormatter() -> void MessagePack.ImmutableCollection.FrozenSetFormatter.FrozenSetFormatter(System.Collections.Generic.IEqualityComparer! comparer) -> void MessagePack.ImmutableCollection.FrozenSetFormatter.Serialize(ref MessagePack.MessagePackWriter writer, System.Collections.Frozen.FrozenSet? value, MessagePack.MessagePackSerializerOptions! options) -> void -MessagePack.Resolvers.StandardAotResolver +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.GeneratedAssemblyMessagePackResolverAttribute(System.Type! resolverType, int majorVersion, int minorVersion) -> void +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.MajorVersion.get -> int +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.MinorVersion.get -> int +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.ResolverType.get -> System.Type! +MessagePack.Resolvers.SourceGeneratedFormatterResolver +MessagePack.Resolvers.SourceGeneratedFormatterResolver.GetFormatter() -> MessagePack.Formatters.IMessagePackFormatter? static readonly MessagePack.Formatters.Matrix3x2Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Matrix4x4Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.QuaternionFormatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector2Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector3Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector4Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! -static readonly MessagePack.Resolvers.StandardAotResolver.Instance -> MessagePack.IFormatterResolver! \ No newline at end of file +static readonly MessagePack.Resolvers.SourceGeneratedFormatterResolver.Instance -> MessagePack.Resolvers.SourceGeneratedFormatterResolver! diff --git a/src/MessagePack/netstandard2.0/PublicAPI.Unshipped.txt b/src/MessagePack/netstandard2.0/PublicAPI.Unshipped.txt index 6e63041c0..67983d2a0 100644 --- a/src/MessagePack/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/MessagePack/netstandard2.0/PublicAPI.Unshipped.txt @@ -20,11 +20,17 @@ MessagePack.GeneratedMessagePackResolverAttribute MessagePack.GeneratedMessagePackResolverAttribute.GeneratedMessagePackResolverAttribute() -> void MessagePack.GeneratedMessagePackResolverAttribute.UseMapMode.get -> bool MessagePack.GeneratedMessagePackResolverAttribute.UseMapMode.set -> void -MessagePack.Resolvers.StandardAotResolver +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.GeneratedAssemblyMessagePackResolverAttribute(System.Type! resolverType, int majorVersion, int minorVersion) -> void +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.MajorVersion.get -> int +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.MinorVersion.get -> int +MessagePack.Internal.GeneratedAssemblyMessagePackResolverAttribute.ResolverType.get -> System.Type! +MessagePack.Resolvers.SourceGeneratedFormatterResolver +MessagePack.Resolvers.SourceGeneratedFormatterResolver.GetFormatter() -> MessagePack.Formatters.IMessagePackFormatter? static readonly MessagePack.Formatters.Matrix3x2Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Matrix4x4Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.QuaternionFormatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector2Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector3Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! static readonly MessagePack.Formatters.Vector4Formatter.Instance -> MessagePack.Formatters.IMessagePackFormatter! -static readonly MessagePack.Resolvers.StandardAotResolver.Instance -> MessagePack.IFormatterResolver! \ No newline at end of file +static readonly MessagePack.Resolvers.SourceGeneratedFormatterResolver.Instance -> MessagePack.Resolvers.SourceGeneratedFormatterResolver! diff --git a/tests/MessagePack.GeneratedCode.Tests/MissingPropertiesTest.cs b/tests/MessagePack.GeneratedCode.Tests/MissingPropertiesTest.cs index 73eb43f77..cdb6596f2 100644 --- a/tests/MessagePack.GeneratedCode.Tests/MissingPropertiesTest.cs +++ b/tests/MessagePack.GeneratedCode.Tests/MissingPropertiesTest.cs @@ -18,7 +18,7 @@ public MissingPropertiesTest() CompositeResolver.Create( Sandbox.GeneratedMessagePackResolver.Instance, SharedData.GeneratedMessagePackResolver.Instance, - StandardAotResolver.Instance)); + StandardResolver.Instance)); } [Fact] diff --git a/tests/MessagePack.SourceGenerator.ExecutionTests/ExecutionTests.cs b/tests/MessagePack.SourceGenerator.ExecutionTests/ExecutionTests.cs index 1e5dca5c5..5f66b262d 100644 --- a/tests/MessagePack.SourceGenerator.ExecutionTests/ExecutionTests.cs +++ b/tests/MessagePack.SourceGenerator.ExecutionTests/ExecutionTests.cs @@ -3,8 +3,7 @@ public class ExecutionTests { - private static readonly MessagePackSerializerOptions SerializerOptions = MessagePackSerializerOptions.Standard - .WithResolver(GeneratedMessagePackResolver.InstanceWithStandardAotResolver); + private static readonly MessagePackSerializerOptions SerializerOptions = MessagePackSerializerOptions.Standard; private readonly ITestOutputHelper logger; diff --git a/tests/MessagePack.SourceGenerator.Tests/GenerationTests.cs b/tests/MessagePack.SourceGenerator.Tests/GenerationTests.cs index 6917caea2..973045bfe 100644 --- a/tests/MessagePack.SourceGenerator.Tests/GenerationTests.cs +++ b/tests/MessagePack.SourceGenerator.Tests/GenerationTests.cs @@ -370,4 +370,34 @@ class TypeWithAutoGeneratedFormatter """; await VerifyCS.Test.RunDefaultAsync(this.testOutputHelper, testSource); } + + [Fact] + public async Task NoGenerationForAnnotationOnly() + { + string testSource = """ +using MessagePack; +using System; + +[MessagePackObject] +internal class ContainerObject +{ + [Key(0)] + internal MyGenericType TupleProperty { get; set; } +} + +[MessagePackObject] +internal class MyGenericType +{ + [Key(0)] + internal T Value { get; set; } +} +"""; + await new VerifyCS.Test(ReferencesSet.MessagePackAnnotations) + { + TestState = + { + Sources = { testSource }, + }, + }.RunAsync(); + } } diff --git a/tests/MessagePack.SourceGenerator.Tests/MessagePackAnalyzerTests.cs b/tests/MessagePack.SourceGenerator.Tests/MessagePackAnalyzerTests.cs index 248530f15..e3b62301f 100644 --- a/tests/MessagePack.SourceGenerator.Tests/MessagePackAnalyzerTests.cs +++ b/tests/MessagePack.SourceGenerator.Tests/MessagePackAnalyzerTests.cs @@ -301,9 +301,8 @@ public class Bar : Foo } "; - await new VerifyCS.Test + await new VerifyCS.Test(ReferencesSet.MessagePackAnnotations) { - ReferenceAssemblies = ReferencesHelper.AnnotationsOnly, CodeFixTestBehaviors = CodeFixTestBehaviors.SkipLocalDiagnosticCheck, // BUGBUG: move diagnostic to `Foo` reference in Bar's base type list. TestState = { diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalAllowTypes/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalAllowTypes/MessagePack.GeneratedMessagePackResolver.g.cs index ff2080f1c..6e3784a3d 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalAllowTypes/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalAllowTypes/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalFormatterTypes/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalFormatterTypes/MessagePack.GeneratedMessagePackResolver.g.cs index ff2080f1c..6e3784a3d 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalFormatterTypes/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/AdditionalFormatterTypes/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/ArrayTypedProperty/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/ArrayTypedProperty/MessagePack.GeneratedMessagePackResolver.g.cs index 3e0a189c2..792145828 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/ArrayTypedProperty/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/ArrayTypedProperty/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -69,19 +68,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/CanGenerateMessagePackFormatterAttr/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/CanGenerateMessagePackFormatterAttr/MessagePack.GeneratedMessagePackResolver.g.cs index cbf7fc876..76ba03b70 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/CanGenerateMessagePackFormatterAttr/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/CanGenerateMessagePackFormatterAttr/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(False)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(False)/MessagePack.GeneratedMessagePackResolver.g.cs index 9595cc237..4291c0160 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(False)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(False)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(True)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(True)/MessagePack.GeneratedMessagePackResolver.g.cs index 9595cc237..4291c0160 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(True)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/CustomFormatterViaAttributeOnProperty(True)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, False)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, False)/MessagePack.GeneratedMessagePackResolver.g.cs index 07d45fdc2..95d6f8659 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, False)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, False)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, True)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, True)/MessagePack.GeneratedMessagePackResolver.g.cs index 07d45fdc2..95d6f8659 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, True)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(Namespace, True)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, False)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, False)/MessagePack.GeneratedMessagePackResolver.g.cs index fac912278..9bbe1d786 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, False)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, False)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, True)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, True)/MessagePack.GeneratedMessagePackResolver.g.cs index fac912278..9bbe1d786 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, True)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(NestingClass, True)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, False)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, False)/MessagePack.GeneratedMessagePackResolver.g.cs index 3a76aadc5..8e57f3049 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, False)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, False)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, True)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, True)/MessagePack.GeneratedMessagePackResolver.g.cs index 3a76aadc5..8e57f3049 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, True)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter(None, True)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs index 630e4913c..0f12b3642 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/EnumFormatter_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -69,19 +68,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType/MessagePack.GeneratedMessagePackResolver.g.cs index 8f0fcbb85..eb160e0dc 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericTypeArg/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericTypeArg/MessagePack.GeneratedMessagePackResolver.g.cs index a5940e19f..597af17e2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericTypeArg/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericTypeArg/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs index 77a601fa3..c40e4931d 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -69,19 +68,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfT1T2Formatter/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfT1T2Formatter/MessagePack.GeneratedMessagePackResolver.g.cs index 8470bf088..fab953540 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfT1T2Formatter/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfT1T2Formatter/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter/MessagePack.GeneratedMessagePackResolver.g.cs index 84cc33378..2fbb5557e 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_FormatterOnly/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_FormatterOnly/MessagePack.GeneratedMessagePackResolver.g.cs index a5940e19f..597af17e2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_FormatterOnly/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_FormatterOnly/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_WithKnownTypes/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_WithKnownTypes/MessagePack.GeneratedMessagePackResolver.g.cs index f66a4268c..3229a0e9e 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_WithKnownTypes/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsOfTFormatter_WithKnownTypes/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter/MessagePack.GeneratedMessagePackResolver.g.cs index 80bba1de1..4346144dd 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter_Nested/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter_Nested/MessagePack.GeneratedMessagePackResolver.g.cs index 9666de382..ea0c49211 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter_Nested/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/GenericsUnionFormatter_Nested/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -89,19 +88,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Multiple/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Multiple/MessagePack.GeneratedMessagePackResolver.g.cs index a5940e19f..597af17e2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Multiple/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Multiple/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_NullableReferenceType/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_NullableReferenceType/MessagePack.GeneratedMessagePackResolver.g.cs index a5940e19f..597af17e2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_NullableReferenceType/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_NullableReferenceType/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_ReferenceType_Nullable/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_ReferenceType_Nullable/MessagePack.GeneratedMessagePackResolver.g.cs index a5940e19f..597af17e2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_ReferenceType_Nullable/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_ReferenceType_Nullable/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Struct/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Struct/MessagePack.GeneratedMessagePackResolver.g.cs index a5940e19f..597af17e2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Struct/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Struct/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Type/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Type/MessagePack.GeneratedMessagePackResolver.g.cs index a5940e19f..597af17e2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Type/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Constraints_Type/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/DefiningProject.TempProject.MyResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/DefiningProject.TempProject.MyResolver.g.cs index 5ce0abc87..2527831fb 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/DefiningProject.TempProject.MyResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/DefiningProject.TempProject.MyResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace TempProject { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(TempProject.MyResolver), 3, 0)] + +namespace TempProject { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class MyResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new MyResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private MyResolver() { } @@ -63,19 +62,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyGenericObjectFormatter_T_.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyGenericObjectFormatter_T_.g.cs new file mode 100644 index 000000000..e10ae276f --- /dev/null +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyGenericObjectFormatter_T_.g.cs @@ -0,0 +1,62 @@ +// + +#pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 + +#pragma warning disable CS8669 // We may leak nullable annotations into generated code. + +namespace MessagePack { + +using MsgPack = global::MessagePack; + +partial class GeneratedMessagePackResolver +{ +private partial class TempProject { + internal sealed class MyGenericObjectFormatter : MsgPack::Formatters.IMessagePackFormatter> + { + + public void Serialize(ref MsgPack::MessagePackWriter writer, global::TempProject.MyGenericObject value, MsgPack::MessagePackSerializerOptions options) + { + if (value == null) + { + writer.WriteNil(); + return; + } + + MsgPack::IFormatterResolver formatterResolver = options.Resolver; + writer.WriteArrayHeader(1); + MsgPack::FormatterResolverExtensions.GetFormatterWithVerify(formatterResolver).Serialize(ref writer, value.Content, options); + } + + public global::TempProject.MyGenericObject Deserialize(ref MsgPack::MessagePackReader reader, MsgPack::MessagePackSerializerOptions options) + { + if (reader.TryReadNil()) + { + return null; + } + + options.Security.DepthStep(ref reader); + MsgPack::IFormatterResolver formatterResolver = options.Resolver; + var length = reader.ReadArrayHeader(); + var ____result = new global::TempProject.MyGenericObject(); + + for (int i = 0; i < length; i++) + { + switch (i) + { + case 0: + ____result.Content = MsgPack::FormatterResolverExtensions.GetFormatterWithVerify(formatterResolver).Deserialize(ref reader, options); + break; + default: + reader.Skip(); + break; + } + } + + reader.Depth--; + return ____result; + } + } + +}} + +} diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyObjectFormatter.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyObjectFormatter.g.cs new file mode 100644 index 000000000..688bc31c9 --- /dev/null +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyObjectFormatter.g.cs @@ -0,0 +1,62 @@ +// + +#pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 + +#pragma warning disable CS8669 // We may leak nullable annotations into generated code. + +namespace MessagePack { + +using MsgPack = global::MessagePack; + +partial class GeneratedMessagePackResolver +{ +private partial class TempProject { + internal sealed class MyObjectFormatter : MsgPack::Formatters.IMessagePackFormatter + { + + public void Serialize(ref MsgPack::MessagePackWriter writer, global::TempProject.MyObject value, MsgPack::MessagePackSerializerOptions options) + { + if (value == null) + { + writer.WriteNil(); + return; + } + + MsgPack::IFormatterResolver formatterResolver = options.Resolver; + writer.WriteArrayHeader(1); + MsgPack::FormatterResolverExtensions.GetFormatterWithVerify>(formatterResolver).Serialize(ref writer, value.Value, options); + } + + public global::TempProject.MyObject Deserialize(ref MsgPack::MessagePackReader reader, MsgPack::MessagePackSerializerOptions options) + { + if (reader.TryReadNil()) + { + return null; + } + + options.Security.DepthStep(ref reader); + MsgPack::IFormatterResolver formatterResolver = options.Resolver; + var length = reader.ReadArrayHeader(); + var ____result = new global::TempProject.MyObject(); + + for (int i = 0; i < length; i++) + { + switch (i) + { + case 0: + ____result.Value = MsgPack::FormatterResolverExtensions.GetFormatterWithVerify>(formatterResolver).Deserialize(ref reader, options); + break; + default: + reader.Skip(); + break; + } + } + + reader.Depth--; + return ____result; + } + } + +}} + +} diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyObjectNestedFormatter.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyObjectNestedFormatter.g.cs new file mode 100644 index 000000000..fac27a84a --- /dev/null +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.Formatters.TempProject.MyObjectNestedFormatter.g.cs @@ -0,0 +1,62 @@ +// + +#pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 + +#pragma warning disable CS8669 // We may leak nullable annotations into generated code. + +namespace MessagePack { + +using MsgPack = global::MessagePack; + +partial class GeneratedMessagePackResolver +{ +private partial class TempProject { + internal sealed class MyObjectNestedFormatter : MsgPack::Formatters.IMessagePackFormatter + { + + public void Serialize(ref MsgPack::MessagePackWriter writer, global::TempProject.MyObjectNested value, MsgPack::MessagePackSerializerOptions options) + { + if (value == null) + { + writer.WriteNil(); + return; + } + + MsgPack::IFormatterResolver formatterResolver = options.Resolver; + writer.WriteArrayHeader(1); + MsgPack::FormatterResolverExtensions.GetFormatterWithVerify>>(formatterResolver).Serialize(ref writer, value.Value, options); + } + + public global::TempProject.MyObjectNested Deserialize(ref MsgPack::MessagePackReader reader, MsgPack::MessagePackSerializerOptions options) + { + if (reader.TryReadNil()) + { + return null; + } + + options.Security.DepthStep(ref reader); + MsgPack::IFormatterResolver formatterResolver = options.Resolver; + var length = reader.ReadArrayHeader(); + var ____result = new global::TempProject.MyObjectNested(); + + for (int i = 0; i < length; i++) + { + switch (i) + { + case 0: + ____result.Value = MsgPack::FormatterResolverExtensions.GetFormatterWithVerify>>(formatterResolver).Deserialize(ref reader, options); + break; + default: + reader.Skip(); + break; + } + } + + reader.Depth--; + return ____result; + } + } + +}} + +} diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.MessagePack.GeneratedMessagePackResolver.g.cs new file mode 100644 index 000000000..2fbb5557e --- /dev/null +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/Generics_Defined_In_ReferencedProject/TestProject.MessagePack.GeneratedMessagePackResolver.g.cs @@ -0,0 +1,75 @@ +// + +#pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 + +using MsgPack = global::MessagePack; + +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + +/// A MessagePack resolver that uses generated formatters for types in this assembly. +partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver +{ + /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. + public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); + + private GeneratedMessagePackResolver() + { + } + + public MsgPack::Formatters.IMessagePackFormatter GetFormatter() + { + return FormatterCache.Formatter; + } + + private static class FormatterCache + { + internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter; + + static FormatterCache() + { + var f = GeneratedMessagePackResolverGetFormatterHelper.GetFormatter(typeof(T)); + if (f != null) + { + Formatter = (MsgPack::Formatters.IMessagePackFormatter)f; + } + } + } + + private static class GeneratedMessagePackResolverGetFormatterHelper + { + private static readonly global::System.Collections.Generic.Dictionary lookup; + + static GeneratedMessagePackResolverGetFormatterHelper() + { + lookup = new global::System.Collections.Generic.Dictionary(4) + { + { typeof(global::TempProject.MyGenericObject>), 0 }, + { typeof(global::TempProject.MyGenericObject), 1 }, + { typeof(global::TempProject.MyObject), 2 }, + { typeof(global::TempProject.MyObjectNested), 3 }, + }; + } + + internal static object GetFormatter(global::System.Type t) + { + int key; + if (!lookup.TryGetValue(t, out key)) + { + return null; + } + + switch (key) + { + case 0: return new TempProject.MyGenericObjectFormatter>(); + case 1: return new TempProject.MyGenericObjectFormatter(); + case 2: return new TempProject.MyObjectFormatter(); + case 3: return new TempProject.MyObjectNestedFormatter(); + default: return null; + } + } + } +} + +} diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/MixType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/MixType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs index 5a8548320..010247b81 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/MixType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/MixType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/NestedGenericTypes/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/NestedGenericTypes/MessagePack.GeneratedMessagePackResolver.g.cs index 0c1637f3b..38442be34 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/NestedGenericTypes/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/NestedGenericTypes/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -75,19 +74,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/NonGenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/NonGenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs index fddd66176..86f43a88d 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/NonGenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/NonGenericType_CollidingTypeNames/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -69,19 +68,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/NullableFormatter/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/NullableFormatter/MessagePack.GeneratedMessagePackResolver.g.cs index a9bd22f13..3706c0183 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/NullableFormatter/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/NullableFormatter/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -73,19 +72,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyIgnore/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyIgnore/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyIgnore/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyIgnore/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyMixed/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyMixed/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyMixed/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyMixed/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterOnlyWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetter/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetter/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetter/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetter/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValueInputPartially/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValueInputPartially/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValueInputPartially/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithDefaultValueInputPartially/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructor/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorAndDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorAndDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorAndDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorAndDefaultValue/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorDoNotUseSetter/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorDoNotUseSetter/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorDoNotUseSetter/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorDoNotUseSetter/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs index a6eac54b3..6843dfdd2 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/PropertiesGetterSetterWithParameterizedConstructorPartially/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -65,19 +64,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(False)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(False)/MessagePack.GeneratedMessagePackResolver.g.cs index 5bbf96b7a..a2276f6b7 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(False)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(False)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(True)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(True)/MessagePack.GeneratedMessagePackResolver.g.cs index 5bbf96b7a..a2276f6b7 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(True)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/TwoTypes(True)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -67,19 +66,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(Namespace)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(Namespace)/MessagePack.GeneratedMessagePackResolver.g.cs index c491644cc..77bb977d5 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(Namespace)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(Namespace)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(NestingClass)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(NestingClass)/MessagePack.GeneratedMessagePackResolver.g.cs index f12c6f3d3..4192909d3 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(NestingClass)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(NestingClass)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(None)/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(None)/MessagePack.GeneratedMessagePackResolver.g.cs index 8c697d5e8..36bc8f09f 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(None)/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/UnionFormatter(None)/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Resources/WellKnownGenericsFormatter/MessagePack.GeneratedMessagePackResolver.g.cs b/tests/MessagePack.SourceGenerator.Tests/Resources/WellKnownGenericsFormatter/MessagePack.GeneratedMessagePackResolver.g.cs index 523a4e39d..920ccd6fe 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Resources/WellKnownGenericsFormatter/MessagePack.GeneratedMessagePackResolver.g.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Resources/WellKnownGenericsFormatter/MessagePack.GeneratedMessagePackResolver.g.cs @@ -2,19 +2,18 @@ #pragma warning disable 618, 612, 414, 168, CS1591, SA1129, SA1309, SA1312, SA1403, SA1649 -namespace MessagePack { - using MsgPack = global::MessagePack; +[assembly: MsgPack::Internal.GeneratedAssemblyMessagePackResolverAttribute(typeof(MessagePack.GeneratedMessagePackResolver), 3, 0)] + +namespace MessagePack { + /// A MessagePack resolver that uses generated formatters for types in this assembly. partial class GeneratedMessagePackResolver : MsgPack::IFormatterResolver { /// An instance of this resolver that only returns formatters specifically generated for types in this assembly. public static readonly MsgPack::IFormatterResolver Instance = new GeneratedMessagePackResolver(); - /// An instance of this resolver that returns standard AOT-compatible formatters as well as formatters specifically generated for types in this assembly. - public static readonly MsgPack::IFormatterResolver InstanceWithStandardAotResolver = new WithStandardAotResolver(); - private GeneratedMessagePackResolver() { } @@ -71,19 +70,6 @@ internal static object GetFormatter(global::System.Type t) } } } - - private class WithStandardAotResolver : MsgPack::IFormatterResolver - { - public MsgPack::Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly MsgPack::Formatters.IMessagePackFormatter Formatter = Instance.GetFormatter() ?? MsgPack::Resolvers.StandardAotResolver.Instance.GetFormatter(); - } - } } } diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2+Test.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2+Test.cs index 834dfe0bc..8ebac9e88 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2+Test.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2+Test.cs @@ -1,25 +1,23 @@ // Copyright (c) All contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using System; -using System.IO; -using System.Linq; using System.Reflection; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Testing; +using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Testing.Verifiers; using Microsoft.CodeAnalysis.Text; -using Xunit; -public static partial class CSharpCodeFixVerifier +internal static partial class CSharpCodeFixVerifier { - public class Test : CSharpCodeFixTest + internal class Test : CSharpCodeFixTest { - public Test() + internal Test(ReferencesSet references = ReferencesSet.MessagePack) { - this.ReferenceAssemblies = ReferencesHelper.DefaultReferences; - this.CompilerDiagnostics = Microsoft.CodeAnalysis.Testing.CompilerDiagnostics.Warnings; + this.ReferenceAssemblies = ReferencesHelper.DefaultTargetFrameworkReferences; + this.CompilerDiagnostics = CompilerDiagnostics.Warnings; + this.TestState.AdditionalReferences.AddRange(ReferencesHelper.GetReferences(references)); this.TestState.AdditionalFilesFactories.Add(() => { diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2.cs index 6f6e4f643..111abcb9e 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpCodeFixVerifier`2.cs @@ -8,7 +8,7 @@ using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Testing.Verifiers; -public static partial class CSharpCodeFixVerifier +internal static partial class CSharpCodeFixVerifier where TAnalyzer : DiagnosticAnalyzer, new() where TCodeFix : CodeFixProvider, new() { @@ -30,7 +30,7 @@ public static Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] public static Task VerifyAnalyzerWithoutMessagePackReferenceAsync(string source) { - var test = new Test { TestCode = source, ReferenceAssemblies = ReferenceAssemblies.NetFramework.Net472.Default }; + var test = new Test(ReferencesSet.None) { TestCode = source }; return test.RunAsync(); } diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorCodeFixVerifier`2.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorCodeFixVerifier`2.cs index b59bb4fea..c9a7393a6 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorCodeFixVerifier`2.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorCodeFixVerifier`2.cs @@ -15,12 +15,14 @@ public class Test : CSharpCodeFixTest generatorDiagnostics)> GetProjectCompilationAsync(Project project, IVerifier verifier, CancellationToken cancellationToken) +#pragma warning restore SA1316 // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3781 + { + var (compilation, generatorDiagnostics) = await base.GetProjectCompilationAsync(project, verifier, cancellationToken); + compilation = ReferencesHelper.AddMessagePackReferences(compilation, this.MessagePackReferences); + return (compilation, generatorDiagnostics); + } + protected override ParseOptions CreateParseOptions() { return ((CSharpParseOptions)base.CreateParseOptions()).WithLanguageVersion(this.LanguageVersion); @@ -42,7 +53,7 @@ protected override IEnumerable GetSourceGenerators() public static Task VerifyAnalyzerWithoutMessagePackReferenceAsync(string source) { - var test = new Test { TestCode = source, ReferenceAssemblies = ReferenceAssemblies.NetFramework.Net472.Default }; + var test = new Test { TestCode = source, MessagePackReferences = ReferencesSet.None }; return test.RunAsync(); } diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorVerifier`1+Test.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorVerifier`1+Test.cs index b6041a62d..163c251e5 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorVerifier`1+Test.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/CSharpSourceGeneratorVerifier`1+Test.cs @@ -24,20 +24,18 @@ using Microsoft.CodeAnalysis.Text; using AnalyzerOptions = MessagePack.SourceGenerator.CodeAnalysis.AnalyzerOptions; -public static partial class CSharpSourceGeneratorVerifier +internal static partial class CSharpSourceGeneratorVerifier { - public class Test : CSharpSourceGeneratorTest + internal class Test : CSharpSourceGeneratorTest { private readonly string? testFile; private readonly string testMethod; - public Test([CallerFilePath] string? testFile = null, [CallerMemberName] string testMethod = null!) + public Test(ReferencesSet references = ReferencesSet.MessagePack, [CallerFilePath] string? testFile = null, [CallerMemberName] string testMethod = null!) { this.CompilerDiagnostics = CompilerDiagnostics.Warnings; - this.ReferenceAssemblies = ReferenceAssemblies.Net.Net80; - this.TestState.AdditionalReferences.Add(typeof(MessagePackObjectAttribute).Assembly); - this.TestState.AdditionalReferences.Add(typeof(MessagePackSerializer).Assembly); + this.TestState.AdditionalReferences.AddRange(ReferencesHelper.GetReferences(references)); this.testFile = testFile; this.testMethod = testMethod; @@ -73,7 +71,7 @@ partial class {{options.Generator.Resolver.Name}} { } private static async Task RunDefaultAsync(ITestOutputHelper logger, string testSource, string resolverPartialClassSource, [CallerFilePath] string? testFile = null, [CallerMemberName] string testMethod = null!) { - Test test = new(testFile, testMethod) + Test test = new(testFile: testFile, testMethod: testMethod) { TestState = { diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/ReferencesHelper.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/ReferencesHelper.cs index d2d5f1b01..e16aa5584 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Verifiers/ReferencesHelper.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/ReferencesHelper.cs @@ -1,16 +1,27 @@ // Copyright (c) All contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using System.Collections.Immutable; +using MessagePack; +using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Testing; internal static class ReferencesHelper { - internal static ReferenceAssemblies DefaultReferences = ReferenceAssemblies.NetFramework.Net472.Default - .AddPackages(ImmutableArray.Create( - new PackageIdentity("MessagePack", "2.0.335"))); + internal static ReferenceAssemblies DefaultTargetFrameworkReferences = ReferenceAssemblies.Net.Net80; - internal static ReferenceAssemblies AnnotationsOnly = ReferenceAssemblies.NetFramework.Net472.Default - .AddPackages(ImmutableArray.Create( - new PackageIdentity("MessagePack.Annotations", "2.0.335"))); + internal static IEnumerable GetReferences(ReferencesSet references) + { + if (references.HasFlag(ReferencesSet.MessagePackAnnotations)) + { + yield return MetadataReference.CreateFromFile(typeof(MessagePackObjectAttribute).Assembly.Location); + } + + if (references.HasFlag(ReferencesSet.MessagePack)) + { + yield return MetadataReference.CreateFromFile(typeof(MessagePackSerializer).Assembly.Location); + } + } + + internal static Compilation AddMessagePackReferences(Compilation compilation, ReferencesSet references) + => compilation.AddReferences(GetReferences(references)); } diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/ReferencesSet.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/ReferencesSet.cs new file mode 100644 index 000000000..853a10494 --- /dev/null +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/ReferencesSet.cs @@ -0,0 +1,10 @@ +// Copyright (c) All contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +[Flags] +internal enum ReferencesSet +{ + None = 0x0, + MessagePackAnnotations = 0x1, + MessagePack = 0x2 | MessagePackAnnotations, +} diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs index 63655f36a..e494a0dc1 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs @@ -1,25 +1,22 @@ // Copyright (c) All contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using System; -using System.IO; -using System.Linq; using System.Reflection; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Testing.Verifiers; using Microsoft.CodeAnalysis.Text; using Microsoft.CodeAnalysis.VisualBasic; using Microsoft.CodeAnalysis.VisualBasic.Testing; -using Xunit; -public static partial class VisualBasicCodeFixVerifier +internal static partial class VisualBasicCodeFixVerifier { - public class Test : VisualBasicCodeFixTest + internal class Test : VisualBasicCodeFixTest { - public Test() + internal Test() { - this.ReferenceAssemblies = ReferencesHelper.DefaultReferences; + this.ReferenceAssemblies = ReferencesHelper.DefaultTargetFrameworkReferences; this.TestBehaviors |= Microsoft.CodeAnalysis.Testing.TestBehaviors.SkipGeneratedCodeCheck; this.SolutionTransforms.Add((solution, projectId) => @@ -41,7 +38,18 @@ where resourceName.StartsWith(additionalFilePrefix, StringComparison.Ordinal) }); } - public DiagnosticDescriptor? DefaultDiagnosticDescriptor { get; set; } + internal ReferencesSet MessagePackReferences { get; set; } = ReferencesSet.MessagePack; + + internal DiagnosticDescriptor? DefaultDiagnosticDescriptor { get; set; } + +#pragma warning disable SA1316 // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3781 + protected override async Task<(Compilation compilation, ImmutableArray generatorDiagnostics)> GetProjectCompilationAsync(Project project, IVerifier verifier, CancellationToken cancellationToken) +#pragma warning restore SA1316 // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3781 + { + var (compilation, generatorDiagnostics) = await base.GetProjectCompilationAsync(project, verifier, cancellationToken); + compilation = ReferencesHelper.AddMessagePackReferences(compilation, this.MessagePackReferences); + return (compilation, generatorDiagnostics); + } protected override DiagnosticDescriptor? GetDefaultDiagnostic(DiagnosticAnalyzer[] analyzers) => this.DefaultDiagnosticDescriptor ?? base.GetDefaultDiagnostic(analyzers); diff --git a/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2.cs b/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2.cs index 04597f406..d51bbb48a 100644 --- a/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2.cs +++ b/tests/MessagePack.SourceGenerator.Tests/Verifiers/VisualBasicCodeFixVerifier`2.cs @@ -1,7 +1,6 @@ // Copyright (c) All contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CodeFixes; using Microsoft.CodeAnalysis.Diagnostics; @@ -9,7 +8,7 @@ using Microsoft.CodeAnalysis.Testing.Verifiers; using Microsoft.CodeAnalysis.VisualBasic.Testing; -public static partial class VisualBasicCodeFixVerifier +internal static partial class VisualBasicCodeFixVerifier where TAnalyzer : DiagnosticAnalyzer, new() where TCodeFix : CodeFixProvider, new() {