Skip to content

Commit 58d968f

Browse files
Replace null checks with exceptions for DateTime types
Address PR feedback: throw InvalidOperationException when System.DateTime or System.DateTimeOffset types are not found in compilation, as these fundamental .NET types should always be available. Co-authored-by: BenjaminMichaelis <22186029+BenjaminMichaelis@users.noreply.github.com>
1 parent 897a969 commit 58d968f

1 file changed

Lines changed: 8 additions & 14 deletions

File tree

IntelliTect.Analyzer/IntelliTect.Analyzer/Analyzers/BanImplicitDateTimeToDateTimeOffsetConversion.cs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,10 @@ private void AnalyzeConversion(OperationAnalysisContext context)
4949
return;
5050
}
5151

52-
INamedTypeSymbol dateTimeType = context.Compilation.GetTypeByMetadataName("System.DateTime");
53-
INamedTypeSymbol dateTimeOffsetType = context.Compilation.GetTypeByMetadataName("System.DateTimeOffset");
54-
55-
if (dateTimeType is null || dateTimeOffsetType is null)
56-
{
57-
return;
58-
}
52+
INamedTypeSymbol dateTimeType = context.Compilation.GetTypeByMetadataName("System.DateTime")
53+
?? throw new InvalidOperationException("System.DateTime type not found in compilation.");
54+
INamedTypeSymbol dateTimeOffsetType = context.Compilation.GetTypeByMetadataName("System.DateTimeOffset")
55+
?? throw new InvalidOperationException("System.DateTimeOffset type not found in compilation.");
5956

6057
// Check if source is DateTime and target is DateTimeOffset
6158
if (SymbolEqualityComparer.Default.Equals(sourceType, dateTimeType) &&
@@ -73,13 +70,10 @@ private void AnalyzeBinaryOperation(OperationAnalysisContext context)
7370
return;
7471
}
7572

76-
INamedTypeSymbol dateTimeType = context.Compilation.GetTypeByMetadataName("System.DateTime");
77-
INamedTypeSymbol dateTimeOffsetType = context.Compilation.GetTypeByMetadataName("System.DateTimeOffset");
78-
79-
if (dateTimeType is null || dateTimeOffsetType is null)
80-
{
81-
return;
82-
}
73+
INamedTypeSymbol dateTimeType = context.Compilation.GetTypeByMetadataName("System.DateTime")
74+
?? throw new InvalidOperationException("System.DateTime type not found in compilation.");
75+
INamedTypeSymbol dateTimeOffsetType = context.Compilation.GetTypeByMetadataName("System.DateTimeOffset")
76+
?? throw new InvalidOperationException("System.DateTimeOffset type not found in compilation.");
8377

8478
// For binary operations, check if either operand is DateTime and the other is DateTimeOffset
8579
// This catches cases where IConversionOperation nodes are not created (e.g., property access)

0 commit comments

Comments
 (0)