Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 27 additions & 27 deletions src/Meziantou.Analyzer/Internals/ContextExtensions.cs

Large diffs are not rendered by default.

275 changes: 135 additions & 140 deletions src/Meziantou.Analyzer/Internals/ContextExtensions.g.cs

Large diffs are not rendered by default.

54 changes: 27 additions & 27 deletions src/Meziantou.Analyzer/Internals/ContextExtensions.tt
Original file line number Diff line number Diff line change
Expand Up @@ -14,83 +14,83 @@ namespace Meziantou.Analyzer.Internals;
internal static partial class ContextExtensions
{
<# foreach (string type in new string[] { "SyntaxNodeAnalysisContext", "SymbolAnalysisContext", "OperationAnalysisContext", "OperationBlockAnalysisContext", "CompilationAnalysisContext" }) { #>
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IEnumerable<Location> locations, string?[]? messageArgs = null) => ReportDiagnostic(new DiagnosticReporter(context), descriptor, locations, messageArgs);
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IEnumerable<Location> locations, object?[]? messageArgs = null) => ReportDiagnostic(new DiagnosticReporter(context), descriptor, locations, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IEnumerable<Location> locations, params string?[]? messageArgs) => ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, locations, messageArgs);
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IEnumerable<Location> locations, params object?[]? messageArgs) => ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, locations, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, SyntaxToken syntaxToken, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, SyntaxToken syntaxToken, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, syntaxToken, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, SyntaxToken syntaxToken, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, SyntaxToken syntaxToken, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, syntaxToken, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, SyntaxNode syntaxNode, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, SyntaxNode syntaxNode, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, syntaxNode, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, SyntaxNode syntaxNode, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, SyntaxNode syntaxNode, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, syntaxNode, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ISymbol symbol, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ISymbol symbol, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, ImmutableDictionary<string, string?>.Empty, symbol, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, ISymbol symbol, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, ISymbol symbol, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, symbol, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IFieldSymbol symbol, DiagnosticFieldReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IFieldSymbol symbol, DiagnosticFieldReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IFieldSymbol symbol, DiagnosticFieldReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IFieldSymbol symbol, DiagnosticFieldReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IMethodSymbol symbol, DiagnosticMethodReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IMethodSymbol symbol, DiagnosticMethodReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IMethodSymbol symbol, DiagnosticMethodReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IMethodSymbol symbol, DiagnosticMethodReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IParameterSymbol symbol, DiagnosticParameterReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IParameterSymbol symbol, DiagnosticParameterReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IParameterSymbol symbol, DiagnosticParameterReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IParameterSymbol symbol, DiagnosticParameterReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IPropertySymbol symbol, DiagnosticPropertyReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IPropertySymbol symbol, DiagnosticPropertyReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IPropertySymbol symbol, DiagnosticPropertyReportOptions reportOptions, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IPropertySymbol symbol, DiagnosticPropertyReportOptions reportOptions, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, symbol, reportOptions, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, Location location, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, Location location, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, location, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, Location location, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, Location location, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, location, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, SyntaxReference syntaxReference, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, SyntaxReference syntaxReference, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, syntaxReference, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, SyntaxReference syntaxReference, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, SyntaxReference syntaxReference, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, syntaxReference, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IInvocationOperation operation, DiagnosticInvocationReportOptions options, params string?[] messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IInvocationOperation operation, DiagnosticInvocationReportOptions options, params object?[] messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties: null, operation, options, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IInvocationOperation operation, DiagnosticInvocationReportOptions options, params string?[] messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IInvocationOperation operation, DiagnosticInvocationReportOptions options, params object?[] messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, operation, options, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, ILocalFunctionOperation operation, DiagnosticMethodReportOptions options, params string?[] messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, ILocalFunctionOperation operation, DiagnosticMethodReportOptions options, params object?[] messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, operation, options, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IOperation operation, params string?[] messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, IOperation operation, params object?[] messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, operation, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IOperation operation, params string?[] messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, IOperation operation, params object?[] messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, operation, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, AttributeData attribute, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, AttributeData attribute, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, attribute, messageArgs);

public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, AttributeData attribute, params string?[]? messageArgs)
public static void ReportDiagnostic(this <#= type #> context, DiagnosticDescriptor descriptor, ImmutableDictionary<string, string?>? properties, AttributeData attribute, params object?[]? messageArgs)
=> ReportDiagnostic(new DiagnosticReporter(context), descriptor, properties, attribute, messageArgs);
<# } #>
}
2 changes: 1 addition & 1 deletion src/Meziantou.Analyzer/Internals/TimeSpanOperation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ internal static class TimeSpanOperation

return null;

static long? AddValues(params long?[] values)
static long? AddValues(params ReadOnlySpan<long?> values)
{
var result = 0L;
foreach (var value in values)
Expand Down
12 changes: 9 additions & 3 deletions src/Meziantou.Analyzer/Internals/TypeSymbolExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,18 @@ public static bool IsOrInheritFrom(this ITypeSymbol symbol, ITypeSymbol? expecte
return symbol.IsEqualTo(expectedType) || (!expectedType.IsSealed && symbol.InheritsFrom(expectedType));
}

public static bool IsEqualToAny(this ITypeSymbol? symbol, params ITypeSymbol?[]? expectedTypes)
public static bool IsEqualToAny(this ITypeSymbol? symbol, params ReadOnlySpan<ITypeSymbol?> expectedTypes)
{
if (symbol is null || expectedTypes is null)
if (symbol is null || expectedTypes.IsEmpty)
return false;

return expectedTypes.Any(t => t.IsEqualTo(symbol));
foreach (var expectedType in expectedTypes)
{
if (expectedType is not null && symbol.IsEqualTo(expectedType))
return true;
}

return false;
}

public static bool IsEqualToAny(this ITypeSymbol? symbol, ITypeSymbol? expectedType1)
Expand Down
Loading
Loading