Пример #1
0
        private static (ImmutableArray <Diagnostic> diagnostics, string?name, SourceText?text) GenerateMapping(
            ITypeSymbol sourceType, AttributeData attributeData, ConfigurationValues configurationValues)
        {
            var information = new MappingInformation(sourceType, attributeData);

            if (!information.Diagnostics.Any(_ => _.Severity == DiagnosticSeverity.Error))
            {
                var text = new MappingBuilder(information, configurationValues).Text;
                return(information.Diagnostics, $"{sourceType.Name}_To_{information.DestinationType.Name}_Map.g.cs", text);
            }

            return(information.Diagnostics, null, null);
        }
Пример #2
0
        private static ImmutableArray <(ImmutableArray <Diagnostic> diagnostics, string?name, SourceText?text)> GenerateMappings(
            MapReceiver receiver, Compilation compilation, AnalyzerConfigOptionsProvider optionsProvider)
        {
            var results     = ImmutableArray.CreateBuilder <(ImmutableArray <Diagnostic> diagnostics, string?name, SourceText?text)>();
            var information = new MappingInformation(receiver, compilation);

            foreach (var mapPair in information.Maps)
            {
                if (!mapPair.Value.diagnostics.Any(_ => _.Severity == DiagnosticSeverity.Error))
                {
                    var text = new MappingBuilder(mapPair.Key.source, mapPair.Key.destination, mapPair.Value.maps,
                                                  new ConfigurationValues(optionsProvider, mapPair.Value.node.SyntaxTree)).Text;
                    results.Add((mapPair.Value.diagnostics, $"{mapPair.Key.source.Name}_To_{mapPair.Key.destination.Name}_Map.g.cs", text));
                }
                else
                {
                    results.Add((mapPair.Value.diagnostics, null, null));
                }
            }

            return(results.ToImmutable());
        }