private Maps Validate(MapReceiver receiver, Compilation compilation) { var maps = ImmutableDictionary.CreateBuilder <(ITypeSymbol, ITypeSymbol), (ImmutableArray <Diagnostic>, SyntaxNode, ImmutableArray <string>)>(); MappingInformation.ValidateMapTo(receiver.MapToCandidates, maps, compilation); MappingInformation.ValidateMapFrom(receiver.MapFromCandidates, maps, compilation); MappingInformation.ValidateMap(receiver.MapCandidates, maps, compilation); return(maps.ToImmutable()); }
private Maps Validate(MapReceiver receiver, Compilation compilation) { var maps = ImmutableDictionary.CreateBuilder <(ITypeSymbol, ITypeSymbol), (ImmutableArray <Diagnostic>, SyntaxNode, ImmutableArray <string>)>(); foreach (var target in receiver.Targets) { MappingInformation.ValidatePairs(target.origination, target.source, target.destination, maps); } return(maps.ToImmutable()); }
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()); }
public MappingInformation(MapReceiver receiver, Compilation compilation) => this.Maps = this.Validate(receiver, compilation);