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)); } } }