* Unify the signed and unsigned implementations. We lose some type-safety (because
  we have to use 'object' as the unifying type between long and ulong), but we minimize
  code duplication, so the code becomes easier to maintain.
* Add an additional check for managed enum values that show up in the native header,
  but aren't available on the current platform.
This commit is contained in:
Rolf Bjarne Kvinge 2021-11-22 18:51:12 +01:00 коммит произвёл GitHub
Родитель 6302878ad5
Коммит b55ee6d521
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
53 изменённых файлов: 266 добавлений и 94 удалений

Просмотреть файл

@ -8,13 +8,15 @@ using Clang.Ast;
namespace Extrospection {
class EnumCheck : BaseVisitor {
class ManagedValue {
public FieldDefinition Field;
public EnumConstantDecl Decl;
}
Dictionary<string,TypeDefinition> enums = new Dictionary<string, TypeDefinition> (StringComparer.InvariantCultureIgnoreCase);
Dictionary<string,TypeDefinition> obsoleted_enums = new Dictionary<string,TypeDefinition> ();
Dictionary<long, FieldDefinition> managed_signed_values = new Dictionary<long, FieldDefinition> ();
Dictionary<ulong, FieldDefinition> managed_unsigned_values = new Dictionary<ulong, FieldDefinition> ();
Dictionary<long, (string Name, bool Deprecated)> native_signed_values = new Dictionary<long, (string Name, bool Deprecated)> ();
Dictionary<ulong, (string Name, bool Deprecated)> native_unsigned_values = new Dictionary<ulong,(string Name, bool Deprecated)> ();
Dictionary<object, ManagedValue> managed_values = new Dictionary<object, ManagedValue> ();
Dictionary<object, (string Name, EnumConstantDecl Decl)> native_values = new Dictionary<object, (string Name, EnumConstantDecl Decl)> ();
public override void VisitManagedType (TypeDefinition type)
{
@ -175,88 +177,100 @@ namespace Extrospection {
throw new NotImplementedException ();
}
native_values.Clear ();
managed_values.Clear ();
// collect all the native enum values
var nativeConstant = signed ? (object) 0L : (object) 0UL;
foreach (var value in decl.Values) {
if ((value.InitExpr != null) && value.InitExpr.EvaluateAsInt (decl.AstContext, out var integer)) {
if (signed) {
nativeConstant = integer.SExtValue;
} else {
nativeConstant = integer.ZExtValue;
}
}
if (native_values.TryGetValue (nativeConstant, out var entry)) {
// the same constant might be used for multiple values - some deprecated and some not,
// only overwrite if the current value isn't deprecated
if (!value.IsDeprecated ())
native_values [nativeConstant] = new (value.ToString (), value);
} else {
native_values [nativeConstant] = new (value.ToString (), value);
}
// assume, sequentially assigned (in case next `value.InitExpr` is null)
var t = nativeConstant.GetType ();
if (signed) {
nativeConstant = 1L + (long) nativeConstant;
} else {
nativeConstant = 1UL + (ulong) nativeConstant;
}
}
// collect all the managed enum values
var fields = type.Fields;
if (signed) {
managed_signed_values.Clear ();
native_signed_values.Clear ();
foreach (var f in fields) {
// skip special `value__`
if (f.IsRuntimeSpecialName && !f.IsStatic)
foreach (var f in fields) {
// skip special `value__`
if (f.IsRuntimeSpecialName && !f.IsStatic)
continue;
if (f.IsObsolete ())
continue;
object managedValue;
if (signed) {
managedValue = Convert.ToInt64 (f.Constant);
} else {
managedValue = Convert.ToUInt64 (f.Constant);
}
managed_values [managedValue] = new ManagedValue { Field = f };
}
foreach (var kvp in native_values) {
var value = kvp.Key;
var valueDecl = kvp.Value.Decl;
var valueName = kvp.Value.Name;
if (managed_values.TryGetValue (value, out var entry)) {
entry.Decl = valueDecl;
} else {
// only for unsigned (flags) native enums we allow all bits set on 32 bits (UInt32.MaxValue)
// to be equal to all bit set on 64 bits (UInt64.MaxValue) since the MaxValue differs between
// 32bits (e.g. watchOS) and 64bits (all others) platforms
if (!signed && native && (ulong) value == UInt32.MaxValue && managed_values.Remove (UInt64.MaxValue))
continue;
if (!f.IsObsolete ())
managed_signed_values [Convert.ToInt64 (f.Constant)] = f;
// couldn't find a matching managed enum value for the native enum value
// don't report deprecated native enum values (or if the native enum itself is deprecated) as missing
if (!valueDecl.IsDeprecated () && !decl.IsDeprecated ())
Log.On (framework).Add ($"!missing-enum-value! {type.Name} native value {valueName} = {value} not bound");
}
}
foreach (var kvp in managed_values) {
var value = kvp.Key;
var valueField = kvp.Value.Field;
var valueDecl = kvp.Value.Decl;
var fieldName = valueField.Name;
// A 0 might be a valid extra value sometimes
var isZero = signed ? (long) value == 0 : (ulong) value == 0;
if (isZero && IsExtraZeroValid (type.Name, fieldName))
continue;
if (valueDecl is null) {
// we have a managed enum value, but no corresponding native value
// this is only an issue if the managed enum value is available and not obsoleted
if (valueField.IsAvailable () && !valueField.IsObsolete ())
Log.On (framework).Add ($"!extra-enum-value! Managed value {value} for {type.Name}.{fieldName} not found in native headers");
continue;
}
long n = 0;
foreach (var value in decl.Values) {
if ((value.InitExpr != null) && value.InitExpr.EvaluateAsInt (decl.AstContext, out var integer))
n = integer.SExtValue;
native_signed_values [n] = new (value.ToString (), value.IsDeprecated ());
// assume, sequentially assigned (in case next `value.InitExpr` is null)
n++;
}
foreach (var value in native_signed_values.Keys) {
if (!managed_signed_values.ContainsKey (value)) {
if (!native_signed_values [value].Deprecated && !decl.IsDeprecated ())
Log.On (framework).Add ($"!missing-enum-value! {type.Name} native value {native_signed_values [value].Name} = {value} not bound");
} else
managed_signed_values.Remove (value);
}
foreach (var value in managed_signed_values.Keys) {
if ((value == 0) && IsExtraZeroValid (type.Name, managed_signed_values [0].Name))
continue;
// value could be decorated with `[No*]` and those should not be reported
if (managed_signed_values [value].IsAvailable ())
Log.On (framework).Add ($"!extra-enum-value! Managed value {value} for {type.Name}.{managed_signed_values [value].Name} not found in native headers");
}
} else {
managed_unsigned_values.Clear ();
native_unsigned_values.Clear ();
foreach (var f in fields) {
// skip special `value__`
if (f.IsRuntimeSpecialName && !f.IsStatic)
continue;
if (!f.IsObsolete ())
managed_unsigned_values [Convert.ToUInt64 (f.Constant)] = f;
}
ulong n = 0;
foreach (var value in decl.Values) {
if ((value.InitExpr != null) && value.InitExpr.EvaluateAsInt (decl.AstContext, out var integer))
n = integer.ZExtValue;
native_unsigned_values [n] = new (value.ToString (), value.IsDeprecated ());
// assume, sequentially assigned (in case next `value.InitExpr` is null)
n++;
}
foreach (var value in native_unsigned_values.Keys) {
if (!managed_unsigned_values.ContainsKey (value)) {
// only for unsigned (flags) native enums we allow all bits set on 32 bits (UInt32.MaxValue)
// to be equal to all bit set on 64 bits (UInt64.MaxValue) since the MaxValue differs between
// 32bits (e.g. watchOS) and 64bits (all others) platforms
var log = true;
if (native && (value == UInt32.MaxValue)) {
log = !managed_unsigned_values.ContainsKey (UInt64.MaxValue);
managed_unsigned_values.Remove (UInt64.MaxValue);
}
if (log)
log &= !native_unsigned_values [value].Deprecated && !decl.IsDeprecated ();
if (log)
Log.On (framework).Add ($"!missing-enum-value! {type.Name} native value {native_unsigned_values [value].Name} = {value} not bound");
} else
managed_unsigned_values.Remove (value);
}
foreach (var value in managed_unsigned_values.Keys) {
if ((value == 0) && IsExtraZeroValid (type.Name, managed_unsigned_values [0].Name))
continue;
// value could be decorated with `[No*]` and those should not be reported
if (managed_unsigned_values [value].IsAvailable ())
Log.On (framework).Add ($"!extra-enum-value! Managed value {value} for {type.Name}.{managed_unsigned_values [value].Name} not found in native headers");
if (!valueDecl.IsAvailable ()) {
// if the native enum value isn't available, the managed one shouldn't be either
if (valueField.IsAvailable ())
Log.On (framework).Add ($"!extra-enum-value! Managed value {value} for {type.Name}.{fieldName} is available for the current platform while the value in the native header is not");
continue;
}
}

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value -11860 for AVError.CreateContentKeyRequestFailed is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 2 for AudioComponentInstantiationOptions.InProcess is available for the current platform while the value in the native header is not

Просмотреть файл

@ -1 +1,2 @@
!missing-field! kCTFontRegistrationUserInfoAttribute not bound
!extra-enum-value! Managed value 3 for CTFontManagerScope.Session is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,2 @@
!extra-enum-value! Managed value 128 for NSFileProviderItemCapabilities.ExcludingFromSync is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 64 for NSFileProviderItemCapabilities.Evicting is available for the current platform while the value in the native header is not

Просмотреть файл

@ -150,3 +150,5 @@
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
!missing-type! NSPresentationIntent not bound
!extra-enum-value! Managed value 2 for NSItemProviderRepresentationVisibility.Group is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 23 for NSSearchPathDirectory.ApplicationScriptsDirectory is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 12 for INStartCallIntentResponseCode.FailureCallRinging is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,4 @@
!extra-enum-value! Managed value -11 for LAStatus.WatchNotAvailable is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -12 for LAStatus.BiometryNotPaired is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -13 for LAStatus.BiometryDisconnected is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -14 for LAStatus.InvalidDimension is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,31 @@
!extra-enum-value! Managed value 0 for MTLFeatureSet.iOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1 for MTLFeatureSet.iOS_GPUFamily2_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10 for MTLFeatureSet.iOS_GPUFamily3_v3 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10000 for MTLFeatureSet.OSX_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10001 for MTLFeatureSet.OSX_GPUFamily1_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10002 for MTLFeatureSet.OSX_ReadWriteTextureTier2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10003 for MTLFeatureSet.macOS_GPUFamily1_v3 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10004 for MTLFeatureSet.macOS_GPUFamily1_v4 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10005 for MTLFeatureSet.macOS_GPUFamily2_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 11 for MTLCommandBufferError.DeviceRemoved is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 11 for MTLFeatureSet.iOS_GPUFamily4_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 12 for MTLFeatureSet.iOS_GPUFamily1_v5 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 13 for MTLFeatureSet.iOS_GPUFamily2_v5 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 14 for MTLFeatureSet.iOS_GPUFamily3_v4 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 15 for MTLFeatureSet.iOS_GPUFamily4_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 16 for MTLFeatureSet.iOS_GPUFamily5_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2 for MTLFeatureSet.iOS_GPUFamily1_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 3 for MTLFeatureSet.iOS_GPUFamily2_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30000 for MTLFeatureSet.TVOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30001 for MTLFeatureSet.tvOS_GPUFamily1_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30002 for MTLFeatureSet.tvOS_GPUFamily1_v3 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30003 for MTLFeatureSet.tvOS_GPUFamily2_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30004 for MTLFeatureSet.tvOS_GPUFamily1_v4 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30005 for MTLFeatureSet.tvOS_GPUFamily2_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4 for MTLFeatureSet.iOS_GPUFamily3_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 5 for MTLFeatureSet.iOS_GPUFamily1_v3 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 6 for MTLFeatureSet.iOS_GPUFamily2_v3 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 65536 for MTLLanguageVersion.v1_0 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 7 for MTLFeatureSet.iOS_GPUFamily3_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 8 for MTLFeatureSet.iOS_GPUFamily1_v4 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 9 for MTLFeatureSet.iOS_GPUFamily2_v4 is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,3 @@
!extra-enum-value! Managed value 1 for NEOnDemandRuleInterfaceType.Ethernet is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 3 for NETunnelProviderRoutingMethod.NetworkRule is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4 for NEFilterReportEvent.Statistics is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 0 for OSLogStoreScope.System is available for the current platform while the value in the native header is not

Просмотреть файл

@ -409,4 +409,9 @@
!missing-selector! UITabBarItemAppearance::copy not bound
!missing-selector! UIToolbar::setTintColor: not bound
!missing-selector! UIToolbar::tintColor not bound
## appended from unclassified file
!extra-enum-value! Managed value 1 for UITextFieldDidEndEditingReason.Cancelled is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 3 for UIBlurEffectStyle.ExtraDark is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30 for UIPressType.PageUp is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 31 for UIPressType.PageDown is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 6 for UIButtonType.Plain is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 8 for UIModalPresentationStyle.BlurOverFullScreen is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value -11860 for AVError.CreateContentKeyRequestFailed is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 2 for AudioComponentInstantiationOptions.InProcess is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,7 @@
!extra-enum-value! Managed value -1006 for NSFileProviderError.VersionOutOfDate is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -1007 for NSFileProviderError.DirectoryNotEmpty is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -2001 for NSFileProviderError.ProviderNotFound is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -2002 for NSFileProviderError.ProviderTranslocated is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -2003 for NSFileProviderError.OlderExtensionVersionRunning is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -2004 for NSFileProviderError.NewerExtensionVersionFound is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -2005 for NSFileProviderError.CannotSynchronize is available for the current platform while the value in the native header is not

Просмотреть файл

@ -139,5 +139,7 @@
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
!missing-type! NSPresentationIntent not bound
## appended from unclassified file
## appended from unclassified file
!extra-enum-value! Managed value 1024 for NSUrlBookmarkResolutionOptions.WithSecurityScope is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2 for NSItemProviderRepresentationVisibility.Group is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2048 for NSUrlBookmarkCreationOptions.WithSecurityScope is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4096 for NSUrlBookmarkCreationOptions.SecurityScopeAllowOnlyReadAccess is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 12 for INStartCallIntentResponseCode.FailureCallRinging is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,4 @@
!extra-enum-value! Managed value -11 for LAStatus.WatchNotAvailable is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -12 for LAStatus.BiometryNotPaired is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -13 for LAStatus.BiometryDisconnected is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -14 for LAStatus.InvalidDimension is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,5 @@
!extra-enum-value! Managed value 10000 for MTLFeatureSet.OSX_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10001 for MTLFeatureSet.OSX_GPUFamily1_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10002 for MTLFeatureSet.OSX_ReadWriteTextureTier2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 11 for MTLCommandBufferError.DeviceRemoved is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30000 for MTLFeatureSet.TVOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 1 for NEOnDemandRuleInterfaceType.Ethernet is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 0 for OSLogStoreScope.System is available for the current platform while the value in the native header is not

Просмотреть файл

@ -17,3 +17,4 @@
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::snapshotForExpandingParentItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willCollapseItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willExpandItemHandler not bound
!extra-enum-value! Managed value 8 for UIModalPresentationStyle.BlurOverFullScreen is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,10 @@
!extra-enum-value! Managed value 1 for AVAudioSessionRouteSharingPolicy.LongForm is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11872 for AVError.SessionHardwareCostOverage is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11873 for AVError.UnsupportedDeviceActiveFormat is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 17 for AVAudioSessionCategoryOptions.InterruptSpokenAudioAndMixWithOthers is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1936747378 for AVAudioSessionPortOverride.Speaker is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 32 for AVAudioSessionCategoryOptions.AllowBluetoothA2DP is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4 for AVAudioSessionCategoryOptions.AllowBluetooth is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 64 for AVAudioSessionCategoryOptions.AllowAirPlay is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 8 for AVAudioSessionCategoryOptions.DefaultToSpeaker is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11859 for AVError.RecordingAlreadyInProgress is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 2147483648 for AudioComponentInstantiationOptions.LoadedRemotely is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 3 for CXErrorCode.MissingVoIPBackgroundMode is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 4 for CLAuthorizationStatus.AuthorizedWhenInUse is available for the current platform while the value in the native header is not

Просмотреть файл

@ -142,5 +142,4 @@
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
!missing-type! NSPresentationIntent not bound
## appended from unclassified file
## appended from unclassified file
!extra-enum-value! Managed value 1 for NSItemProviderRepresentationVisibility.Team is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 2 for MKUserTrackingMode.FollowWithHeading is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,6 @@
!extra-enum-value! Managed value 0 for MTLFeatureSet.iOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1 for MTLFeatureSet.iOS_GPUFamily2_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2 for MTLFeatureSet.iOS_GPUFamily1_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 3 for MTLFeatureSet.iOS_GPUFamily2_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 30000 for MTLFeatureSet.TVOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4 for MTLFeatureSet.iOS_GPUFamily3_v1 is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 3 for NEOnDemandRuleInterfaceType.Cellular is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,3 @@
!extra-enum-value! Managed value 16 for SKError.OverlayInvalidConfiguration is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 17 for SKError.OverlayTimeout is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 20 for SKError.OverlayPresentedInBackgroundScene is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 128 for UNAuthorizationOptions.Announcement is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,3 @@
!extra-enum-value! Managed value -11872 for AVError.SessionHardwareCostOverage is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11873 for AVError.UnsupportedDeviceActiveFormat is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11860 for AVError.CreateContentKeyRequestFailed is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 2 for AudioComponentInstantiationOptions.InProcess is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 1005 for ASAuthorizationError.NotInteractive is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,2 @@
!extra-enum-value! Managed value 1 for CTFontTableOptions.ExcludeSynthetic is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10 for CTParagraphStyleSpecifier.LineSpacing is available for the current platform while the value in the native header is not

Просмотреть файл

@ -139,5 +139,8 @@
!missing-type! NSOrderedCollectionChange not bound
!missing-type! NSOrderedCollectionDifference not bound
!missing-type! NSPresentationIntent not bound
## appended from unclassified file
## appended from unclassified file
!extra-enum-value! Managed value 102 for NSSearchPathDirectory.TrashDirectory is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1024 for NSUrlBookmarkResolutionOptions.WithSecurityScope is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2 for NSItemProviderRepresentationVisibility.Group is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2048 for NSUrlBookmarkCreationOptions.WithSecurityScope is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4096 for NSUrlBookmarkCreationOptions.SecurityScopeAllowOnlyReadAccess is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 2 for MKUserTrackingMode.FollowWithHeading is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,12 @@
!extra-enum-value! Managed value 0 for MTLFeatureSet.iOS_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1 for MTLFeatureSet.iOS_GPUFamily2_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1 for MTLSamplerAddressMode.MirrorClampToEdge is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10000 for MTLFeatureSet.OSX_GPUFamily1_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10001 for MTLFeatureSet.OSX_GPUFamily1_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10002 for MTLFeatureSet.OSX_ReadWriteTextureTier2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 11 for MTLCommandBufferError.DeviceRemoved is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2 for MTLFeatureSet.iOS_GPUFamily1_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 3 for MTLFeatureSet.iOS_GPUFamily2_v2 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4 for MTLFeatureSet.iOS_GPUFamily3_v1 is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 5 for MTLSamplerAddressMode.ClampToBorderColor is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 8 for MTLTextureType.k2DMultisampleArray is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 0 for OSLogStoreScope.System is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,4 @@
!extra-enum-value! Managed value 16 for SKError.OverlayInvalidConfiguration is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 17 for SKError.OverlayTimeout is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 19 for SKError.UnsupportedPlatform is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 20 for SKError.OverlayPresentedInBackgroundScene is available for the current platform while the value in the native header is not

Просмотреть файл

@ -18,5 +18,4 @@
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::snapshotForExpandingParentItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willCollapseItemHandler not bound
!missing-selector! UICollectionViewDiffableDataSourceSectionSnapshotHandlers::willExpandItemHandler not bound
## appended from unclassified file
## appended from unclassified file
!extra-enum-value! Managed value 2 for UIActivityIndicatorViewStyle.Gray is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 128 for UNAuthorizationOptions.Announcement is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,7 @@
!extra-enum-value! Managed value -11837 for AVError.DeviceIsNotAvailableInBackground is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11872 for AVError.SessionHardwareCostOverage is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11873 for AVError.UnsupportedDeviceActiveFormat is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1936747378 for AVAudioSessionPortOverride.Speaker is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4 for AVAudioSessionCategoryOptions.AllowBluetooth is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 8 for AVAudioSessionCategoryOptions.DefaultToSpeaker is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value -11860 for AVError.CreateContentKeyRequestFailed is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,3 @@
!extra-enum-value! Managed value 2 for ASWebAuthenticationSessionErrorCode.PresentationContextNotProvided is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 3 for ASWebAuthenticationSessionErrorCode.PresentationContextInvalid is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1005 for ASAuthorizationError.NotInteractive is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,2 @@
!extra-enum-value! Managed value 1 for CTFontTableOptions.ExcludeSynthetic is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 10 for CTParagraphStyleSpecifier.LineSpacing is available for the current platform while the value in the native header is not

Просмотреть файл

@ -138,3 +138,8 @@
!missing-type! NSPresentationIntent not bound
## appended from unclassified file
## appended from unclassified file
!extra-enum-value! Managed value 102 for NSSearchPathDirectory.TrashDirectory is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 1024 for NSUrlBookmarkResolutionOptions.WithSecurityScope is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2 for NSItemProviderRepresentationVisibility.Group is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 2048 for NSUrlBookmarkCreationOptions.WithSecurityScope is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4096 for NSUrlBookmarkCreationOptions.SecurityScopeAllowOnlyReadAccess is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,5 @@
!extra-enum-value! Managed value 12 for INStartCallIntentResponseCode.FailureCallRinging is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 4 for INAddMediaIntentResponseCode.HandleInApp is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 5 for INPlayMediaIntentResponseCode.HandleInApp is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 7 for INStartWorkoutIntentResponseCode.HandleInApp is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 8 for INStartWorkoutIntentResponseCode.Success is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1 @@
!extra-enum-value! Managed value 0 for OSLogStoreScope.System is available for the current platform while the value in the native header is not

Просмотреть файл

@ -1,2 +1,4 @@
!missing-field! PKPaymentNetworkNanaco not bound
!missing-field! PKPaymentNetworkWaon not bound
!extra-enum-value! Managed value 4 for PKPaymentErrorCode.CouponCodeInvalid is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 5 for PKPaymentErrorCode.CouponCodeExpired is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,3 @@
!extra-enum-value! Managed value 16 for SKError.OverlayInvalidConfiguration is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 17 for SKError.OverlayTimeout is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 20 for SKError.OverlayPresentedInBackgroundScene is available for the current platform while the value in the native header is not

Просмотреть файл

@ -0,0 +1,2 @@
!extra-enum-value! Managed value 4 for UNNotificationCategoryOptions.HiddenPreviewsShowTitle is available for the current platform while the value in the native header is not
!extra-enum-value! Managed value 8 for UNNotificationCategoryOptions.HiddenPreviewsShowSubtitle is available for the current platform while the value in the native header is not

Просмотреть файл

@ -35,7 +35,7 @@
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'watchOS' ">
<StartAction>Project</StartAction>
<StartArguments>watchos6.2-armv7.pch ../../_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/32bits/watchOS/Xamarin.WatchOS.dll</StartArguments>
<StartArguments>watchos8.0-armv7.pch ../../_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/32bits/watchOS/Xamarin.WatchOS.dll</StartArguments>
<StartWorkingDirectory>.</StartWorkingDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'iOS' ">
@ -45,12 +45,12 @@
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'tvOS' ">
<StartAction>Project</StartAction>
<StartArguments>appletvos13.4-arm64.pch ../../_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/mono/Xamarin.TVOS/Xamarin.TVOS.dll ../../_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/mono/Xamarin.TVOS/OpenTK-1.0.dll</StartArguments>
<StartArguments>appletvos15.0-arm64.pch ../../_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/mono/Xamarin.TVOS/Xamarin.TVOS.dll ../../_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/mono/Xamarin.TVOS/OpenTK-1.0.dll</StartArguments>
<StartWorkingDirectory>.</StartWorkingDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'macOS' ">
<StartAction>Project</StartAction>
<StartArguments>macosx10.15-x86_64.pch ../../_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/lib/64bits/mobile/Xamarin.Mac.dll</StartArguments>
<StartArguments>macosx12.0-x86_64.pch ../../_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/lib/64bits/mobile/Xamarin.Mac.dll</StartArguments>
<StartWorkingDirectory>.</StartWorkingDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'MacCatalyst' ">