From 1fd93d97218054dbfc235e976c33fe8d81980e8c Mon Sep 17 00:00:00 2001 From: axunonb Date: Sat, 10 May 2025 16:50:18 +0200 Subject: [PATCH] Fix: "Expression is always true or false according to NRT annotations" from Code Inspector --- Ical.Net/Collections/GroupedListEnumerator.cs | 8 ++++---- Ical.Net/Collections/Proxies/GroupedValueListProxy.cs | 7 ++----- Ical.Net/Evaluation/RecurringEvaluator.cs | 11 +++++------ Ical.Net/Serialization/ComponentSerializer.cs | 2 +- Ical.Net/Serialization/DataMapSerializer.cs | 4 ---- .../Serialization/DataTypes/AttachmentSerializer.cs | 5 +---- .../Serialization/DataTypes/PeriodListSerializer.cs | 9 +++------ Ical.Net/Serialization/DataTypes/PeriodSerializer.cs | 8 ++------ .../DataTypes/RecurrencePatternSerializer.cs | 2 +- .../DataTypes/RequestStatusSerializer.cs | 11 +---------- Ical.Net/Serialization/DataTypes/TriggerSerializer.cs | 8 -------- Ical.Net/Serialization/SerializationUtil.cs | 5 ----- 12 files changed, 20 insertions(+), 60 deletions(-) diff --git a/Ical.Net/Collections/GroupedListEnumerator.cs b/Ical.Net/Collections/GroupedListEnumerator.cs index 2a4c63b5..33997caa 100644 --- a/Ical.Net/Collections/GroupedListEnumerator.cs +++ b/Ical.Net/Collections/GroupedListEnumerator.cs @@ -19,8 +19,8 @@ public class GroupedListEnumerator : public GroupedListEnumerator(IList> lists) => _lists = lists; public virtual TType Current - => _listEnumerator == null || _listEnumerator.Current == null - ? throw new InvalidOperationException("Current is null.") + => _listEnumerator == null + ? throw new InvalidOperationException("List enumerator is null.") : _listEnumerator.Current; public virtual void Dispose() @@ -39,8 +39,8 @@ private void DisposeListEnumerator() } object IEnumerator.Current - => _listEnumerator == null || _listEnumerator.Current == null - ? throw new InvalidOperationException("Current is null.") + => _listEnumerator == null + ? throw new InvalidOperationException("List enumerator is null.") : _listEnumerator.Current; private bool MoveNextList() diff --git a/Ical.Net/Collections/Proxies/GroupedValueListProxy.cs b/Ical.Net/Collections/Proxies/GroupedValueListProxy.cs index eedc560b..01cdf1ec 100644 --- a/Ical.Net/Collections/Proxies/GroupedValueListProxy.cs +++ b/Ical.Net/Collections/Proxies/GroupedValueListProxy.cs @@ -94,9 +94,7 @@ public virtual void Add(TNewValue item) public virtual void Clear() { - var items = Items.Where(o => o.Values != null); - - foreach (var original in items) + foreach (var original in Items) { // Clear all values from each matching object original.SetValue(default(TOriginalValue)!); @@ -108,7 +106,6 @@ public virtual void Clear() public virtual void CopyTo(TNewValue[] array, int arrayIndex) { Items - .Where(o => o.Values != null) .SelectMany(o => o.Values!) .ToArray() .CopyTo(array, arrayIndex); @@ -153,7 +150,7 @@ public virtual int IndexOf(TNewValue item) var value = (TOriginalValue) (object) item; IterateValues((o, i, count) => { - if (o.Values != null && o.Values.Contains(value)) + if (o.Values.Contains(value)) { var list = o.Values.ToList(); index = i + list.IndexOf(value); diff --git a/Ical.Net/Evaluation/RecurringEvaluator.cs b/Ical.Net/Evaluation/RecurringEvaluator.cs index efca42e6..85fb4b55 100644 --- a/Ical.Net/Evaluation/RecurringEvaluator.cs +++ b/Ical.Net/Evaluation/RecurringEvaluator.cs @@ -29,7 +29,7 @@ public RecurringEvaluator(IRecurrable obj) /// protected IEnumerable EvaluateRRule(CalDateTime referenceDate, CalDateTime? periodStart, EvaluationOptions? options) { - if (Recurrable.RecurrenceRules == null || !Recurrable.RecurrenceRules.Any()) + if (!Recurrable.RecurrenceRules.Any()) return []; var periodsQueries = Recurrable.RecurrenceRules.Select(rule => @@ -66,7 +66,7 @@ protected IEnumerable EvaluateRDate(CalDateTime referenceDate, CalDateTi /// protected IEnumerable EvaluateExRule(CalDateTime referenceDate, CalDateTime? periodStart, EvaluationOptions? options) { - if (Recurrable.ExceptionRules == null || !Recurrable.ExceptionRules.Any()) + if (!Recurrable.ExceptionRules.Any()) return []; var exRuleEvaluatorQueries = Recurrable.ExceptionRules.Select(exRule => @@ -105,10 +105,9 @@ public override IEnumerable Evaluate(CalDateTime referenceDate, CalDateT // Only add referenceDate if there are no RecurrenceRules defined. This is in line // with RFC 5545 which requires DTSTART to match any RRULE. If it doesn't, the behaviour // is undefined. It seems to be good practice not to return the referenceDate in this case. - if ((Recurrable.RecurrenceRules == null) || !Recurrable.RecurrenceRules.Any()) - rruleOccurrences = [new Period(referenceDate)]; - else - rruleOccurrences = EvaluateRRule(referenceDate, periodStart, options); + rruleOccurrences = !Recurrable.RecurrenceRules.Any() + ? [new Period(referenceDate)] + : EvaluateRRule(referenceDate, periodStart, options); var rdateOccurrences = EvaluateRDate(referenceDate, periodStart); diff --git a/Ical.Net/Serialization/ComponentSerializer.cs b/Ical.Net/Serialization/ComponentSerializer.cs index 44bb1dc3..a34851de 100644 --- a/Ical.Net/Serialization/ComponentSerializer.cs +++ b/Ical.Net/Serialization/ComponentSerializer.cs @@ -25,7 +25,7 @@ public ComponentSerializer(SerializationContext ctx) : base(ctx) { } public override string? SerializeToString(object? obj) { - if (obj is not ICalendarComponent c || SerializationContext == null) + if (obj is not ICalendarComponent c) { return null; } diff --git a/Ical.Net/Serialization/DataMapSerializer.cs b/Ical.Net/Serialization/DataMapSerializer.cs index 8950ff1a..fd6b0077 100644 --- a/Ical.Net/Serialization/DataMapSerializer.cs +++ b/Ical.Net/Serialization/DataMapSerializer.cs @@ -19,10 +19,6 @@ public DataMapSerializer(SerializationContext ctx) : base(ctx) { } { var sf = GetService(); var mapper = GetService(); - if (sf == null || mapper == null || SerializationContext == null) - { - return null; - } var obj = SerializationContext.Peek(); diff --git a/Ical.Net/Serialization/DataTypes/AttachmentSerializer.cs b/Ical.Net/Serialization/DataTypes/AttachmentSerializer.cs index 56763dd7..9406e76a 100644 --- a/Ical.Net/Serialization/DataTypes/AttachmentSerializer.cs +++ b/Ical.Net/Serialization/DataTypes/AttachmentSerializer.cs @@ -61,10 +61,7 @@ public AttachmentSerializer(SerializationContext ctx) : base(ctx) { } // Get the currently-used encoding off the encoding stack. var encodingStack = GetService(); - if (encodingStack != null) - { - a.ValueEncoding = encodingStack.Current; - } + a.ValueEncoding = encodingStack.Current; // Get the format of the attachment var valueType = a.GetValueType(); diff --git a/Ical.Net/Serialization/DataTypes/PeriodListSerializer.cs b/Ical.Net/Serialization/DataTypes/PeriodListSerializer.cs index 811f2e72..afb6e153 100644 --- a/Ical.Net/Serialization/DataTypes/PeriodListSerializer.cs +++ b/Ical.Net/Serialization/DataTypes/PeriodListSerializer.cs @@ -22,7 +22,7 @@ public PeriodListSerializer(SerializationContext ctx) : base(ctx) { } public override string? SerializeToString(object? obj) { var factory = GetService(); - if (obj is not PeriodList periodList || factory == null || SerializationContext == null) + if (obj is not PeriodList periodList) { return null; } @@ -69,12 +69,9 @@ public PeriodListSerializer(SerializationContext ctx) : base(ctx) { } var value = tr.ReadToEnd(); // Create the day specifier and associate it with a calendar object - var rdt = CreateAndAssociate() as PeriodList; + if (CreateAndAssociate() is not PeriodList rdt) return null; + var factory = GetService(); - if (rdt == null || factory == null || SerializationContext == null) - { - return null; - } // Decode the value, if necessary value = Decode(rdt, value); diff --git a/Ical.Net/Serialization/DataTypes/PeriodSerializer.cs b/Ical.Net/Serialization/DataTypes/PeriodSerializer.cs index 0f7d0534..11af7365 100644 --- a/Ical.Net/Serialization/DataTypes/PeriodSerializer.cs +++ b/Ical.Net/Serialization/DataTypes/PeriodSerializer.cs @@ -22,7 +22,7 @@ public PeriodSerializer(SerializationContext ctx) : base(ctx) { } { var factory = GetService(); - if (obj is not Period p || factory == null) + if (obj is not Period p) { return null; } @@ -78,12 +78,8 @@ public PeriodSerializer(SerializationContext ctx) : base(ctx) { } { var value = tr.ReadToEnd(); - var p = CreateAndAssociate() as Period; + if (CreateAndAssociate() is not Period p) return null; var factory = GetService(); - if (p == null || factory == null) - { - return null; - } var dtSerializer = factory.Build(typeof(CalDateTime), SerializationContext) as IStringSerializer; var durationSerializer = factory.Build(typeof(Duration), SerializationContext) as IStringSerializer; diff --git a/Ical.Net/Serialization/DataTypes/RecurrencePatternSerializer.cs b/Ical.Net/Serialization/DataTypes/RecurrencePatternSerializer.cs index 0578c878..c9b1f610 100644 --- a/Ical.Net/Serialization/DataTypes/RecurrencePatternSerializer.cs +++ b/Ical.Net/Serialization/DataTypes/RecurrencePatternSerializer.cs @@ -105,7 +105,7 @@ private static void SerializeByValue(List aggregate, IList byValue, public override string? SerializeToString(object? obj) { var factory = GetService(); - if (obj is not RecurrencePattern recur || factory == null || SerializationContext == null) + if (obj is not RecurrencePattern recur) { return null; } diff --git a/Ical.Net/Serialization/DataTypes/RequestStatusSerializer.cs b/Ical.Net/Serialization/DataTypes/RequestStatusSerializer.cs index f1769e47..a0d2e890 100644 --- a/Ical.Net/Serialization/DataTypes/RequestStatusSerializer.cs +++ b/Ical.Net/Serialization/DataTypes/RequestStatusSerializer.cs @@ -21,11 +21,6 @@ public RequestStatusSerializer(SerializationContext ctx) : base(ctx) { } public override string? SerializeToString(object? obj) { - if (SerializationContext == null) - { - return null; - } - try { if (obj is not RequestStatus rs) @@ -73,7 +68,7 @@ public RequestStatusSerializer(SerializationContext ctx) : base(ctx) { } public override object? Deserialize(TextReader? tr) { - if (tr == null || SerializationContext == null) return null; + if (tr == null) return null; var value = tr.ReadToEnd(); @@ -92,10 +87,6 @@ public RequestStatusSerializer(SerializationContext ctx) : base(ctx) { } try { var factory = GetService(); - if (factory == null) - { - return null; - } var match = NarrowRequestMatch.Match(value); if (!match.Success) diff --git a/Ical.Net/Serialization/DataTypes/TriggerSerializer.cs b/Ical.Net/Serialization/DataTypes/TriggerSerializer.cs index 5db945ed..0a634012 100644 --- a/Ical.Net/Serialization/DataTypes/TriggerSerializer.cs +++ b/Ical.Net/Serialization/DataTypes/TriggerSerializer.cs @@ -31,10 +31,6 @@ public TriggerSerializer(SerializationContext ctx) : base(ctx) { } try { var factory = GetService(); - if (factory == null) - { - return null; - } var valueType = t.GetValueType() ?? typeof(Duration); if (!(factory.Build(valueType, SerializationContext) is IStringSerializer serializer)) @@ -88,10 +84,6 @@ public TriggerSerializer(SerializationContext ctx) : base(ctx) { } } var factory = GetService(); - if (factory == null) - { - return null; - } var valueType = t.GetValueType() ?? typeof(Duration); var serializer = factory.Build(valueType, SerializationContext) as IStringSerializer; diff --git a/Ical.Net/Serialization/SerializationUtil.cs b/Ical.Net/Serialization/SerializationUtil.cs index de7ef166..b15f59f6 100644 --- a/Ical.Net/Serialization/SerializationUtil.cs +++ b/Ical.Net/Serialization/SerializationUtil.cs @@ -35,11 +35,6 @@ public static void OnDeserialized(object obj) private static readonly ConcurrentDictionary> _onDeserializingMethods = new ConcurrentDictionary>(); private static List GetDeserializingMethods(Type targetType) { - if (targetType == null) - { - return new List(); - } - if (_onDeserializingMethods.ContainsKey(targetType)) { return _onDeserializingMethods[targetType];