Skip to content

Commit 8d2511a

Browse files
committed
fix nullability warnings
1 parent 757f187 commit 8d2511a

7 files changed

Lines changed: 19 additions & 13 deletions

File tree

src/FastCloner/Code/AhoCorasick.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ private void BuildTrie()
2626
Node current = root;
2727
foreach (char c in pattern)
2828
{
29-
if (!current.Children.TryGetValue(c, out Node value))
29+
if (!current.Children.TryGetValue(c, out Node? value))
3030
{
3131
value = new Node();
3232
current.Children[c] = value;

src/FastCloner/Code/Extensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public static bool Contains(this string source, string value, StringComparison c
1515
return source.IndexOf(value, comparisonType) >= 0;
1616
}
1717

18-
public static TValue GetValueOrDefault<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue = default(TValue))
18+
public static TValue? GetValueOrDefault<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key, TValue? defaultValue = default)
1919
{
2020
return dictionary.TryGetValue(key, out TValue value) ? value : defaultValue;
2121
}

src/FastCloner/Code/FastCloneState.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,8 @@ public MiniDictionary() : this(DefaultCapacity) { }
332332

333333
public MiniDictionary(int capacity)
334334
{
335+
buckets = null!;
336+
entries = null!;
335337
int size = RoundUpToPowerOf2(capacity < DefaultCapacity ? DefaultCapacity : capacity);
336338
Initialize(size);
337339
}

src/FastCloner/Code/FastClonerCache.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,11 @@ private sealed class CacheStore
227227
public static object? GetOrAddStructAsObject(Type type, Func<Type, object?> valueFactory) => cacheStore.StructCache.GetOrAdd(type, valueFactory);
228228
public static object GetOrAddDeepClassTo(Type type, Func<Type, object> valueFactory) => cacheStore.DeepClassToCache.GetOrAdd(type, valueFactory);
229229
public static object GetOrAddShallowClassTo(Type type, Func<Type, object> valueFactory) => cacheStore.ShallowClassToCache.GetOrAdd(type, valueFactory);
230-
public static T GetOrAddConvertor<T>(Type from, Type to, Func<Type, Type, T> valueFactory) => (T)cacheStore.TypeConvertCache.GetOrAdd(from, to, (f, t) => valueFactory(f, t));
230+
public static T GetOrAddConvertor<T>(Type from, Type to, Func<Type, Type, T> valueFactory)
231+
{
232+
object? value = cacheStore.TypeConvertCache.GetOrAdd(from, to, (f, t) => valueFactory(f, t)!);
233+
return (T)value!;
234+
}
231235
public static CloneBehavior? GetOrAddMemberBehavior(MemberInfo memberInfo, Func<MemberInfo, CloneBehavior?> valueFactory) => cacheStore.MemberBehaviorCache.GetOrAdd(memberInfo, valueFactory);
232236
public static CloneBehavior? GetOrAddAttributedTypeBehavior(Type type, Func<Type, CloneBehavior?> valueFactory)
233237
=> cacheStore.AttributedTypeBehaviorCache.GetOrAdd(type, valueFactory);

src/FastCloner/Code/FastClonerExprGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1421,7 +1421,7 @@ private static object GenerateImmutableDictionaryProcessor(Type dictType, Type k
14211421
enumerator,
14221422
Expression.Call(
14231423
Expression.Convert(typedFrom, enumerableType),
1424-
getEnumeratorMethod
1424+
getEnumeratorMethod!
14251425
)
14261426
);
14271427

@@ -1457,7 +1457,7 @@ private static object GenerateImmutableDictionaryProcessor(Type dictType, Type k
14571457

14581458
BlockExpression loopBody = Expression.Block(
14591459
[kvp, key, value],
1460-
Expression.Assign(kvp, Expression.Property(enumerator, current)),
1460+
Expression.Assign(kvp, Expression.Property(enumerator, current!)),
14611461
Expression.Assign(
14621462
key,
14631463
keyForAdd
@@ -2081,7 +2081,7 @@ private static object GenerateImmutableSetProcessor(Type setType, Type elementTy
20812081
enumerator,
20822082
Expression.Call(
20832083
Expression.Convert(typedFrom, enumerableType),
2084-
getEnumeratorMethod
2084+
getEnumeratorMethod!
20852085
)
20862086
);
20872087

src/FastCloner/Code/FastClonerGenerator.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ private static bool TryGetGenericInterfaceArgument(Type type, Type genericInterf
683683
// value types: avoid the worklist because ClonerToExprGenerator.GenerateClonerInternal doesn't support value types
684684
if (objType.IsValueType())
685685
{
686-
object cloned = recursiveCloner(obj, state);
686+
object cloned = recursiveCloner!(obj, state);
687687
state.AddKnownRef(obj, cloned);
688688
return cloned;
689689
}
@@ -706,15 +706,15 @@ private static bool TryGetGenericInterfaceArgument(Type type, Type genericInterf
706706
// value types: avoid the worklist because ClonerToExprGenerator.GenerateClonerInternal doesn't support value types
707707
if (objType.IsValueType())
708708
{
709-
object cloned = recursiveCloner(obj, state);
709+
object cloned = recursiveCloner!(obj, state);
710710
state.AddKnownRef(obj, cloned);
711711
return cloned;
712712
}
713713

714714
return CloneClassShallowAndTrack(obj, state);
715715
}
716716

717-
return recursiveCloner(obj, state);
717+
return recursiveCloner!(obj, state);
718718
}
719719
finally
720720
{
@@ -1152,8 +1152,8 @@ internal static T[] Clone1DimArraySafeInternal<T>(T[] obj, FastCloneState state)
11521152
#if NET6_0_OR_GREATER
11531153
foreach (KeyValuePair<TKey, TValue> kvp in obj)
11541154
{
1155-
ref TValue valueRef = ref CollectionsMarshal.GetValueRefOrAddDefault(result, kvp.Key, out _);
1156-
valueRef = ignoreValues ? default! : kvp.Value;
1155+
ref TValue? valueRef = ref CollectionsMarshal.GetValueRefOrAddDefault(result, kvp.Key, out _);
1156+
valueRef = ignoreValues ? default : kvp.Value;
11571157
}
11581158
#else
11591159
foreach (KeyValuePair<TKey, TValue> kvp in obj)

src/FastCloner/Code/FieldAccessorGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ internal static class FieldAccessorGenerator
77
{
88
internal static Action<object, object> GetFieldSetter(FieldInfo field)
99
{
10-
return (Action<object, object>)FastClonerCache.GetOrAddField(field.DeclaringType, field.Name, _ => CreateFieldSetter(field));
10+
return (Action<object, object>)FastClonerCache.GetOrAddField(field.DeclaringType!, field.Name, _ => CreateFieldSetter(field))!;
1111
}
1212

1313
private static Action<object, object> CreateFieldSetter(FieldInfo field)
1414
{
1515
ParameterExpression targetParam = Expression.Parameter(typeof(object), "target");
1616
ParameterExpression valueParam = Expression.Parameter(typeof(object), "value");
1717

18-
UnaryExpression targetCast = Expression.Convert(targetParam, field.DeclaringType);
18+
UnaryExpression targetCast = Expression.Convert(targetParam, field.DeclaringType!);
1919

2020
Expression body;
2121

0 commit comments

Comments
 (0)