Ejemplo n.º 1
0
        static void ReportDiagnostics(SyntaxNodeAnalysisContext context, INamedTypeSymbol type)
        {
            var name = naming.GetFullName(new[] { type });
            // See if the mock already exists
            var mock = context.Compilation.GetTypeByMetadataName(name);

            if (mock == null)
            {
                context.ReportDiagnostic(Diagnostic.Create(
                                             MockDiagnostics.Missing,
                                             context.Node.GetLocation(),
                                             new Dictionary <string, string>
                {
                    { "TargetFullName", name },
                    { "Symbols", type.ToFullMetadataName() },
                    { "RecursiveSymbols", "" },
                }.ToImmutableDictionary(),
                                             name));
            }
            else
            {
                var compilationErrors = context.Compilation.GetCompilationErrors();
                // See if the symbol has any compilation error diagnostics associated
                if (mock.HasDiagnostic(compilationErrors))
                {
                    context.ReportDiagnostic(Diagnostic.Create(
                                                 MockDiagnostics.Outdated,
                                                 context.Node.GetLocation(),
                                                 new Dictionary <string, string>
                    {
                        { "TargetFullName", name },
                        { "Symbols", type.ToFullMetadataName() },
                        { "RecursiveSymbols", "" },
                    }.ToImmutableDictionary(),
                                                 name));
                }
            }
        }