|
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// This is needed due to NativeAOT which doesn't enable nullable globally yet
#nullable enable
namespace ILLink.Shared.DataFlow
{
// This is a sum type over the various kinds of values we track:
// - dynamicallyaccessedmembertypes-annotated locations (types or strings)
// - known typeof values and similar
// - known strings
// - known integers
public abstract record SingleValue : IDeepCopyValue<SingleValue>
{
// All values must explicitely declare their ability to deep copy itself.
// If the value is immutable, it can "return this" as an optimization.
// Note: Since immutability is relatively tricky to determine, we require all values
// to explicitly implement the DeepCopy, even though the expectation is that
// most values will just "return this".
public abstract SingleValue DeepCopy ();
}
}
|