// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable enable using System.Runtime.CompilerServices; namespace Microsoft.CodeAnalysis.Collections.Internal { internal static unsafe class RoslynUnsafe { /// <summary> /// Returns a by-ref to type <typeparamref name="T"/> that is a null reference. /// </summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static ref T NullRef<T>() => ref Unsafe.AsRef<T>(null); /// <summary> /// Returns if a given by-ref to type <typeparamref name="T"/> is a null reference. /// </summary> /// <remarks> /// This check is conceptually similar to <c>(void*)(&source) == nullptr</c>. /// </remarks> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsNullRef<T>(ref T source) => Unsafe.AsPointer(ref source) == null; } } |