diff --git a/tests/xtro-sharpie/.gitignore b/tests/xtro-sharpie/.gitignore index 574e248425..2419eac4af 100644 --- a/tests/xtro-sharpie/.gitignore +++ b/tests/xtro-sharpie/.gitignore @@ -1,6 +1,7 @@ *.results *.pch* *.unclassified +*.raw *.g.cs *.html report/ diff --git a/tests/xtro-sharpie/EnumCheck.cs b/tests/xtro-sharpie/EnumCheck.cs index 8d4cdeb7ef..94209a5f91 100644 --- a/tests/xtro-sharpie/EnumCheck.cs +++ b/tests/xtro-sharpie/EnumCheck.cs @@ -24,9 +24,9 @@ namespace Extrospection { else if (td.Namespace.StartsWith ("OpenTK.", StringComparison.Ordinal)) { // OpenTK duplicate a lots of enums between it's versions } else { - var sorted = Helpers.Sort (type.FullName, td.FullName); - var framework = Helpers.GetFramework (type); - Log.On (framework).Add ($"!duplicate-type-name! {name} enum exists as both {sorted.Item1} and {sorted.Item2}"); + var sorted = Helpers.Sort (type, td); + var framework = Helpers.GetFramework (sorted.Item1); + Log.On (framework).Add ($"!duplicate-type-name! {name} enum exists as both {sorted.Item1.FullName} and {sorted.Item2.FullName}"); } } diff --git a/tests/xtro-sharpie/Helpers.cs b/tests/xtro-sharpie/Helpers.cs index 8adc4901fb..7c7a2f4555 100644 --- a/tests/xtro-sharpie/Helpers.cs +++ b/tests/xtro-sharpie/Helpers.cs @@ -342,12 +342,12 @@ namespace Extrospection { } } - public static (string, string) Sort (string s1, string s2) + public static (T, T) Sort (T o1, T o2) { - if (StringComparer.Ordinal.Compare (s1, s2) < 0) - return (s1, s2); + if (StringComparer.Ordinal.Compare (o1.ToString (), o2.ToString ()) < 0) + return (o2, o1); else - return (s2, s1); + return (o1, o2); } } } \ No newline at end of file diff --git a/tests/xtro-sharpie/Log.cs b/tests/xtro-sharpie/Log.cs index 13dcfda14b..72ac20eb90 100644 --- a/tests/xtro-sharpie/Log.cs +++ b/tests/xtro-sharpie/Log.cs @@ -23,6 +23,11 @@ namespace Extrospection { foreach (var kvp in lists) { var framework = kvp.Key; var list = kvp.Value.Distinct ().ToList (); + + // not generally useful but we want to keep the data sane + var raw = $"{Helpers.Platform}-{framework}.raw"; + File.WriteAllLines (raw, list); + // load ignore and pending files and remove them // 1. common.framework.ignore - long term (shared cross platforms) **preferred** Remove (list, $"common-{framework}.ignore"); diff --git a/tests/xtro-sharpie/Makefile b/tests/xtro-sharpie/Makefile index f5720f6992..9922097434 100644 --- a/tests/xtro-sharpie/Makefile +++ b/tests/xtro-sharpie/Makefile @@ -88,6 +88,11 @@ classify: build $(XIOS_PCH) $(XWATCHOS_PCH) $(XTVOS_PCH) $(XMAC_PCH) $(MONO) bin/Debug/xtro-sharpie.exe $(XWATCHOS_PCH) $(XWATCHOS) $(MONO) bin/Debug/xtro-sharpie.exe $(XTVOS_PCH) $(XTVOS) $(XTVOS_GL) $(MONO) bin/Debug/xtro-sharpie.exe $(XMAC_PCH) $(XMAC) + $(MONO) xtro-sanity/bin/Debug/xtro-sanity.exe . + rm -f *.raw + +insane: + XTRO_SANITY_SKIP=1 make all all: classify report diff --git a/tests/xtro-sharpie/ObjCInterfaceCheck.cs b/tests/xtro-sharpie/ObjCInterfaceCheck.cs index 0ff9a61113..f7354f9de1 100644 --- a/tests/xtro-sharpie/ObjCInterfaceCheck.cs +++ b/tests/xtro-sharpie/ObjCInterfaceCheck.cs @@ -52,10 +52,10 @@ namespace Extrospection { if (!type_map.TryGetValue (rname, out td)) type_map.Add (rname, type); else { - var framework = Helpers.GetFramework (type); // always report in the same order (for unique error messages) - var sorted = Helpers.Sort (type.FullName, td.FullName); - Log.On (framework).Add ($"!duplicate-register! {rname} exists as both {sorted.Item1} and {sorted.Item2}"); + var sorted = Helpers.Sort (type, td); + var framework = Helpers.GetFramework (sorted.Item1); + Log.On (framework).Add ($"!duplicate-register! {rname} exists as both {sorted.Item1.FullName} and {sorted.Item2.FullName}"); } } } diff --git a/tests/xtro-sharpie/SimdCheck.cs b/tests/xtro-sharpie/SimdCheck.cs index 252a7e166a..db9cc9ed6a 100644 --- a/tests/xtro-sharpie/SimdCheck.cs +++ b/tests/xtro-sharpie/SimdCheck.cs @@ -134,9 +134,9 @@ namespace Extrospection ManagedSimdInfo existing; if (managed_methods.TryGetValue (key, out existing)) { if (very_strict) { - var framework = method.DeclaringType.Namespace; - var sorted = Helpers.Sort (existing.Method.FullName, method.FullName); - Log.On (framework).Add ($"!duplicate-type-mapping! same key '{key}' for both '{sorted.Item1}' and '{sorted.Item2}'"); + var sorted = Helpers.Sort (existing.Method, method); + var framework = sorted.Item1.DeclaringType.Namespace; + Log.On (framework).Add ($"!duplicate-type-mapping! same key '{key}' for both '{sorted.Item1.FullName}' and '{sorted.Item2.FullName}'"); } } else { managed_methods [key] = new ManagedSimdInfo { diff --git a/tests/xtro-sharpie/common-AVFoundation.ignore b/tests/xtro-sharpie/common-AVFoundation.ignore index 3bc760d569..93812eca37 100644 --- a/tests/xtro-sharpie/common-AVFoundation.ignore +++ b/tests/xtro-sharpie/common-AVFoundation.ignore @@ -7,7 +7,6 @@ !missing-field! AVVideoCodecHEVC not bound !missing-field! AVVideoTransferFunction_ITU_R_2100_HLG not bound !missing-field! AVVideoTransferFunction_SMPTE_ST_2084_PQ not bound -!missing-protocol! AVFragmentMinding not bound !missing-protocol! AVVideoCompositionInstruction not bound !missing-protocol-conformance! AVAsset should conform to AVAsynchronousKeyValueLoading !missing-protocol-conformance! AVAssetTrack should conform to AVAsynchronousKeyValueLoading diff --git a/tests/xtro-sharpie/common-AddressBook.ignore b/tests/xtro-sharpie/common-AddressBook.ignore index 4a587f83fc..bdc047893d 100644 --- a/tests/xtro-sharpie/common-AddressBook.ignore +++ b/tests/xtro-sharpie/common-AddressBook.ignore @@ -1,3 +1,8 @@ +## Apple headers: Deprecated in iOS 9 +!unknown-native-enum! ABPersonImageFormat bound + +## constants were manually bound and this framework is deprecated (Contact) +## so it's not worth updating the binding code for them !missing-field! kABGroupNameProperty not bound !missing-field! kABHomeLabel not bound !missing-field! kABOtherLabel not bound @@ -87,4 +92,3 @@ !missing-field! kABSourceNameProperty not bound !missing-field! kABSourceTypeProperty not bound !missing-field! kABWorkLabel not bound -!unknown-native-enum! ABPersonImageFormat bound diff --git a/tests/xtro-sharpie/common-Foundation.ignore b/tests/xtro-sharpie/common-Foundation.ignore index 9ed51dad6f..925c1fee01 100644 --- a/tests/xtro-sharpie/common-Foundation.ignore +++ b/tests/xtro-sharpie/common-Foundation.ignore @@ -1,3 +1,20 @@ +## NSLinguisticAnalysis category over NSString https://bugzilla.xamarin.com/show_bug.cgi?id=35009 +!missing-selector! NSString::linguisticTagsInRange:scheme:options:orthography:tokenRanges: not bound +!missing-selector! NSString::enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock: not bound + +## https://bugzilla.xamarin.com/show_bug.cgi?id=35021 +!missing-selector! NSFileWrapper::initWithSerializedRepresentation: not bound + +## the API exists but is [Sealed], until XAMCORE_4_0, to keep compatible with iOS/Mac profiles +!missing-selector! NSURLSession::getTasksWithCompletionHandler: not bound + +# missing - pending decision for implementation +!missing-type! NSAssertionHandler not bound +!missing-field! NSAssertionHandlerKey not bound +!missing-selector! +NSAssertionHandler::currentHandler not bound +!missing-selector! NSAssertionHandler::handleFailureInFunction:file:lineNumber:description: not bound +!missing-selector! NSAssertionHandler::handleFailureInMethod:object:file:lineNumber:description: not bound + ## special case, see bug https://bugzilla.xamarin.com/show_bug.cgi?id=22940 !wrong-base-type! NSProxy expected actual NSObject !missing-selector! +NSProxy::allocWithZone: not bound @@ -10,26 +27,16 @@ ## Xamarin (not Apple) type !unknown-type! InternalNSNotificationHandler bound +# Apple internals (we do not expose them) +!missing-field! _NSConstantStringClassReference not bound +!missing-type! NSConstantString not bound +!missing-type! NSSimpleCString not bound + ## unsorted !extra-designated-initializer! NSSortDescriptor::initWithCoder: is incorrectly decorated with an [DesignatedInitializer] attribute !incorrect-protocol-member! NSProgressReporting::progress is REQUIRED and should be abstract -!missing-designated-initializer! NSArray::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSDate::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSDictionary::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSISO8601DateFormatter::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSItemProvider::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSMutableArray::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSMutableDictionary::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSMutableOrderedSet::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSMutableSet::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSOrderedSet::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSOutputStream::initToMemory is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSSet::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSString::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSThread::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSUUID::init is missing an [DesignatedInitializer] attribute !missing-enum! NSBinarySearchingOptions not bound !missing-enum! NSMachPortOptions not bound !missing-enum! NSNetServicesError not bound @@ -40,8 +47,6 @@ !missing-enum! NSXMLParserError not bound !missing-enum! NSXMLParserExternalEntityResolvingPolicy not bound !missing-enum! NSXPCConnectionOptions not bound -!missing-field! _NSConstantStringClassReference not bound -!missing-field! NSAssertionHandlerKey not bound !missing-field! NSAverageKeyValueOperator not bound !missing-field! NSBuddhistCalendar not bound !missing-field! NSBundleDidLoadNotification not bound @@ -167,7 +172,6 @@ !missing-selector! +NSArray::arrayWithContentsOfURL: not bound !missing-selector! +NSArray::arrayWithObject: not bound !missing-selector! +NSArray::arrayWithObjects: not bound -!missing-selector! +NSAssertionHandler::currentHandler not bound !missing-selector! +NSAutoreleasePool::addObject: not bound !missing-selector! +NSBundle::preferredLocalizationsFromArray: not bound !missing-selector! +NSBundle::preferredLocalizationsFromArray:forPreferences: not bound @@ -317,8 +321,6 @@ !missing-selector! NSArray::sortedArrayWithOptions:usingComparator: not bound !missing-selector! NSArray::subarrayWithRange: not bound !missing-selector! NSArray::writeToURL:atomically: not bound -!missing-selector! NSAssertionHandler::handleFailureInFunction:file:lineNumber:description: not bound -!missing-selector! NSAssertionHandler::handleFailureInMethod:object:file:lineNumber:description: not bound !missing-selector! NSAutoreleasePool::addObject: not bound !missing-selector! NSBundle::executableArchitectures not bound !missing-selector! NSBundle::loadAndReturnError: not bound @@ -413,7 +415,6 @@ !missing-selector! NSFileManager::fileSystemRepresentationWithPath: not bound !missing-selector! NSFileManager::stringWithFileSystemRepresentation:length: not bound !missing-selector! NSFileSecurity::initWithCoder: not bound -!missing-selector! NSFileWrapper::initWithSerializedRepresentation: not bound !missing-selector! NSHashTable::addObject: not bound !missing-selector! NSHashTable::allObjects not bound !missing-selector! NSHashTable::anyObject not bound @@ -694,7 +695,6 @@ !missing-selector! NSString::description not bound !missing-selector! NSString::doubleValue not bound !missing-selector! NSString::enumerateLinesUsingBlock: not bound -!missing-selector! NSString::enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock: not bound !missing-selector! NSString::enumerateSubstringsInRange:options:usingBlock: not bound !missing-selector! NSString::fastestEncoding not bound !missing-selector! NSString::fileSystemRepresentation not bound @@ -724,7 +724,6 @@ !missing-selector! NSString::intValue not bound !missing-selector! NSString::isEqualToString: not bound !missing-selector! NSString::lengthOfBytesUsingEncoding: not bound -!missing-selector! NSString::linguisticTagsInRange:scheme:options:orthography:tokenRanges: not bound !missing-selector! NSString::localizedCaseInsensitiveCompare: not bound !missing-selector! NSString::localizedCompare: not bound !missing-selector! NSString::localizedStandardCompare: not bound @@ -782,7 +781,6 @@ !missing-selector! NSURLProtocol::initWithTask:cachedResponse:client: not bound !missing-selector! NSURLProtocol::task not bound !missing-selector! NSURLRequest::HTTPShouldUsePipelining not bound -!missing-selector! NSURLSession::getTasksWithCompletionHandler: not bound !missing-selector! NSUUID::initWithUUIDBytes: not bound !missing-selector! NSValue::getValue:size: not bound !missing-selector! NSValue::initWithBytes:objCType: not bound @@ -835,8 +833,6 @@ !missing-selector! NSXPCListener::delegate not bound !missing-selector! NSXPCListener::endpoint not bound !missing-selector! NSXPCListener::setDelegate: not bound -!missing-type! NSAssertionHandler not bound -!missing-type! NSConstantString not bound !missing-type! NSCountedSet not bound !missing-type! NSDecimalNumberHandler not bound !missing-type! NSFileSecurity not bound @@ -847,7 +843,6 @@ !missing-type! NSPointerArray not bound !missing-type! NSPointerFunctions not bound !missing-type! NSScanner not bound -!missing-type! NSSimpleCString not bound !missing-type! NSXMLParser not bound !missing-type! NSXPCConnection not bound !missing-type! NSXPCInterface not bound @@ -864,4 +859,3 @@ !unknown-native-enum! NSUrlErrorCancelledReason bound !unknown-protocol! NSObject bound !unknown-type! NSObject bound -!unknown-type! NSUbiquitousKeyValueStore bound diff --git a/tests/xtro-sharpie/common-GameplayKit.ignore b/tests/xtro-sharpie/common-GameplayKit.ignore index 8649146436..0cf81ee500 100644 --- a/tests/xtro-sharpie/common-GameplayKit.ignore +++ b/tests/xtro-sharpie/common-GameplayKit.ignore @@ -1,4 +1,8 @@ +## Fixed in XAMCORE_4_0 !incorrect-protocol-member! GKGameModelPlayer::playerId is REQUIRED and should be abstract + +## unsorted + !missing-designated-initializer! GKEntity::init is missing an [DesignatedInitializer] attribute !missing-designated-initializer! GKRandomSource::init is missing an [DesignatedInitializer] attribute !missing-designated-initializer! GKRuleSystem::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/common-Intents.ignore b/tests/xtro-sharpie/common-Intents.ignore index dee53063a6..ede6c8e441 100644 --- a/tests/xtro-sharpie/common-Intents.ignore +++ b/tests/xtro-sharpie/common-Intents.ignore @@ -28,19 +28,30 @@ !missing-selector! +INVisualCodeTypeResolutionResult::confirmationRequiredWithValueToConfirm: not bound !missing-selector! +INVisualCodeTypeResolutionResult::successWithResolvedValue: not bound - -## unsorted - -!incorrect-protocol-member! INPayBillIntentHandling::handlePayBill:completion: is REQUIRED and should be abstract -!incorrect-protocol-member! INSearchForBillsIntentHandling::handleSearchForBills:completion: is REQUIRED and should be abstract -!incorrect-protocol-member! INSpeakable::identifier is OPTIONAL and should NOT be abstract -!missing-selector! +CLPlacemark::placemarkWithLocation:name:postalAddress: not bound +## added and deprecated in Xcode9 (but not removed from headers) !missing-selector! +INNotebookItemTypeResolutionResult::disambiguationWithValuesToDisambiguate: not bound -!missing-selector! INPerson::handle not bound -!missing-selector! INPerson::initWithHandle:displayName:contactIdentifier: not bound -!missing-selector! INPerson::initWithHandle:nameComponents:contactIdentifier: not bound -!missing-selector! INPerson::initWithHandle:nameComponents:displayName:image:contactIdentifier: not bound + +## The following were deprecated in ios(10.0, 10.0) !missing-selector! INRideDriver::initWithHandle:displayName:image:rating:phoneNumber: not bound !missing-selector! INRideDriver::initWithHandle:nameComponents:image:rating:phoneNumber: not bound !missing-selector! INRideOption::identifier not bound !missing-selector! INRideOption::setIdentifier: not bound + +## INPayBillIntentHandling && INSearchForBillsIntentHandling are new protocols added in iOS 10.3. This two protocols +## were added to the existing Protocol INPaymentsDomainHandling so making this two required would be a breaking change +!incorrect-protocol-member! INPayBillIntentHandling::handlePayBill:completion: is REQUIRED and should be abstract +!incorrect-protocol-member! INSearchForBillsIntentHandling::handleSearchForBills:completion: is REQUIRED and should be abstract + +## NS_DEPRECATED(10_12, 10_12, 10_0, 10_0) / Designated init instead +!missing-selector! INPerson::handle not bound +!missing-selector! INPerson::initWithHandle:displayName:contactIdentifier: not bound +!missing-selector! INPerson::initWithHandle:nameComponents:contactIdentifier: not bound +!missing-selector! INPerson::initWithHandle:nameComponents:displayName:image:contactIdentifier: not bound + +## Apple made this @optional in iOS 11 but this is a breaking change +!incorrect-protocol-member! INSpeakable::identifier is OPTIONAL and should NOT be abstract + + +## unsorted + +!missing-selector! +CLPlacemark::placemarkWithLocation:name:postalAddress: not bound diff --git a/tests/xtro-sharpie/common-Metal.ignore b/tests/xtro-sharpie/common-Metal.ignore index e71fdb92a7..77e38dc33d 100644 --- a/tests/xtro-sharpie/common-Metal.ignore +++ b/tests/xtro-sharpie/common-Metal.ignore @@ -1,3 +1,9 @@ +## new Apple abstract member (breaking change) fixed in XAMCORE_4_0 +!incorrect-protocol-member! MTLRenderCommandEncoder::setDepthClipMode: is REQUIRED and should be abstract + + +## unsorted + !incorrect-protocol-member! MTLBlitCommandEncoder::copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options: is REQUIRED and should be abstract !incorrect-protocol-member! MTLBlitCommandEncoder::copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options: is REQUIRED and should be abstract !incorrect-protocol-member! MTLBlitCommandEncoder::updateFence: is REQUIRED and should be abstract @@ -71,7 +77,6 @@ !incorrect-protocol-member! MTLRenderCommandEncoder::drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance: is REQUIRED and should be abstract !incorrect-protocol-member! MTLRenderCommandEncoder::setColorStoreAction:atIndex: is REQUIRED and should be abstract !incorrect-protocol-member! MTLRenderCommandEncoder::setColorStoreActionOptions:atIndex: is REQUIRED and should be abstract -!incorrect-protocol-member! MTLRenderCommandEncoder::setDepthClipMode: is REQUIRED and should be abstract !incorrect-protocol-member! MTLRenderCommandEncoder::setDepthStoreAction: is REQUIRED and should be abstract !incorrect-protocol-member! MTLRenderCommandEncoder::setDepthStoreActionOptions: is REQUIRED and should be abstract !incorrect-protocol-member! MTLRenderCommandEncoder::setStencilFrontReferenceValue:backReferenceValue: is REQUIRED and should be abstract @@ -102,4 +107,3 @@ !incorrect-protocol-member! MTLTexture::usage is REQUIRED and should be abstract !unknown-field! MTLRenderPipelineErrorDomain bound !unknown-native-enum! MTLRenderPipelineError bound -!unknown-native-enum! MTLSamplerBorderColor bound diff --git a/tests/xtro-sharpie/common-UIKit.ignore b/tests/xtro-sharpie/common-UIKit.ignore index 6df19ddee7..de0155db04 100644 --- a/tests/xtro-sharpie/common-UIKit.ignore +++ b/tests/xtro-sharpie/common-UIKit.ignore @@ -28,22 +28,64 @@ ## typedef is used (no value) in UITextInput.h: typedef NSInteger UITextDirection !unknown-native-enum! UITextDirection bound +## Implemented in managed code +!missing-selector! UIColor::getHue:saturation:brightness:alpha: not bound +!missing-selector! UIColor::getRed:green:blue:alpha: not bound -## unsorted +## Not implemented (ctor signature conflict) but there's a static method available that does the job +!missing-selector! UIColor::initWithHue:saturation:brightness:alpha: not bound +## Not bound intentionally, Factory method FromDisplayP3 is available and adding this as a ctor would make the api usage ugly since signature matches colorWithRed:green:blue:alpha: +!missing-selector! UIColor::initWithDisplayP3Red:green:blue:alpha: not bound + +## defined with __Internal (which is normally ignored here) so 3rd party tools can hack it +!missing-pinvoke! UIApplicationMain is not bound + +## static method cannot be overriden "normally" they must be re-exposed with [Export] !incorrect-protocol-member! +UIPopoverBackgroundViewMethods::arrowBase is REQUIRED and should be abstract !incorrect-protocol-member! +UIPopoverBackgroundViewMethods::arrowHeight is REQUIRED and should be abstract !incorrect-protocol-member! +UIPopoverBackgroundViewMethods::contentViewInsets is REQUIRED and should be abstract + +## Apple docs: This property is inherited from the UIView parent class. This class changes the default value of this property to NO. +!missing-selector! UIImageView::isUserInteractionEnabled not bound +!missing-selector! UIImageView::setUserInteractionEnabled: not bound +!missing-selector! UILabel::isUserInteractionEnabled not bound +!missing-selector! UILabel::setUserInteractionEnabled: not bound + +## it's technically optional but there's no point in adopting the protocol if you do not provide the implemenation +!incorrect-protocol-member! UIInputViewAudioFeedback::enableInputClicksWhenVisible is OPTIONAL and should NOT be abstract + +## fixed in XAMCORE_4_0 - API break !incorrect-protocol-member! UIDynamicAnimatorDelegate::dynamicAnimatorDidPause: is OPTIONAL and should NOT be abstract !incorrect-protocol-member! UIDynamicAnimatorDelegate::dynamicAnimatorWillResume: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UIFocusEnvironment::preferredFocusEnvironments is REQUIRED and should be abstract -!incorrect-protocol-member! UIInputViewAudioFeedback::enableInputClicksWhenVisible is OPTIONAL and should NOT be abstract !incorrect-protocol-member! UILayoutSupport::bottomAnchor is REQUIRED and should be abstract !incorrect-protocol-member! UILayoutSupport::heightAnchor is REQUIRED and should be abstract !incorrect-protocol-member! UILayoutSupport::topAnchor is REQUIRED and should be abstract -!incorrect-protocol-member! UITextDocumentProxy::documentIdentifier is REQUIRED and should be abstract -!incorrect-protocol-member! UITextDocumentProxy::documentInputMode is REQUIRED and should be abstract -!incorrect-protocol-member! UITextDocumentProxy::selectedText is REQUIRED and should be abstract + +## the [Sealed] attributes removes the [Export] one so it seems missing (but it's not) +!missing-selector! UIGestureRecognizer::ignorePress:forEvent: not bound + +## UIAccessibilityContainer is an informal protocol +## that we bound as a protocol but is (objc encoding) a category +!missing-selector! NSObject::accessibilityElementAtIndex: not bound +!missing-selector! NSObject::accessibilityElements not bound +!missing-selector! NSObject::indexOfAccessibilityElement: not bound +!missing-selector! NSObject::setAccessibilityElements: not bound + +## might not be usable unless our ToString output is parsable as an input (includes locale issues) +!missing-pinvoke! CGAffineTransformFromString is not bound +!missing-pinvoke! CGPointFromString is not bound +!missing-pinvoke! CGRectFromString is not bound +!missing-pinvoke! CGSizeFromString is not bound +!missing-pinvoke! NSStringFromCGAffineTransform is not bound +!missing-pinvoke! NSStringFromCGPoint is not bound +!missing-pinvoke! NSStringFromCGRect is not bound +!missing-pinvoke! NSStringFromCGSize is not bound +!missing-pinvoke! NSStringFromUIOffset is not bound +!missing-pinvoke! UIOffsetFromString is not bound + +## HACK: those members are not *required* in ObjC but we made them abstract to have them inlined in UITextField and UITextView +## Even more confusing it that respondToSelecttor return NO on them even if it works in _real_ life (compare unit and introspection tests) !incorrect-protocol-member! UITextInputTraits::autocapitalizationType is OPTIONAL and should NOT be abstract !incorrect-protocol-member! UITextInputTraits::autocorrectionType is OPTIONAL and should NOT be abstract !incorrect-protocol-member! UITextInputTraits::enablesReturnKeyAutomatically is OPTIONAL and should NOT be abstract @@ -60,49 +102,15 @@ !incorrect-protocol-member! UITextInputTraits::setSecureTextEntry: is OPTIONAL and should NOT be abstract !incorrect-protocol-member! UITextInputTraits::setSpellCheckingType: is OPTIONAL and should NOT be abstract !incorrect-protocol-member! UITextInputTraits::spellCheckingType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UIViewControllerContextTransitioning::pauseInteractiveTransition is REQUIRED and should be abstract -!incorrect-protocol-member! UIViewControllerTransitionCoordinator::notifyWhenInteractionChangesUsingBlock: is REQUIRED and should be abstract -!incorrect-protocol-member! UIViewControllerTransitionCoordinatorContext::isInterruptible is REQUIRED and should be abstract -!missing-designated-initializer! NSLayoutManager::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! NSShadow::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIBarButtonItem::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIBarItem::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIBezierPath::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UICollectionViewLayout::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UICubicTimingParameters::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIImageAsset::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIKeyCommand::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIMotionEffect::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIPasteConfiguration::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UITabBarItem::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UITraitCollection::init is missing an [DesignatedInitializer] attribute -!missing-enum! NSLineBreakMode not bound -!missing-enum! NSTextAlignment not bound -!missing-field! NSCharacterEncodingDocumentOption not bound -!missing-field! NSDefaultAttributesDocumentOption not bound -!missing-field! NSDocumentTypeDocumentOption not bound -!missing-pinvoke! CGAffineTransformFromString is not bound -!missing-pinvoke! CGPointFromString is not bound -!missing-pinvoke! CGRectFromString is not bound -!missing-pinvoke! CGSizeFromString is not bound -!missing-pinvoke! NSStringFromCGAffineTransform is not bound -!missing-pinvoke! NSStringFromCGPoint is not bound -!missing-pinvoke! NSStringFromCGRect is not bound -!missing-pinvoke! NSStringFromCGSize is not bound -!missing-pinvoke! NSStringFromUIOffset is not bound -!missing-pinvoke! UIApplicationMain is not bound -!missing-pinvoke! UIOffsetFromString is not bound -!missing-protocol! UIResponderStandardEditActions not bound -!missing-protocol-conformance! UIResponder should conform to UIResponderStandardEditActions -!missing-selector! NSLayoutManager::fillBackgroundRectArray:count:forCharacterRange:color: not bound + +## UIAccessibility +## We can't expose them as categories of NSObject so we have custom types instead !missing-selector! NSObject::accessibilityActivationPoint not bound !missing-selector! NSObject::accessibilityAttributedHint not bound !missing-selector! NSObject::accessibilityAttributedLabel not bound !missing-selector! NSObject::accessibilityAttributedValue not bound !missing-selector! NSObject::accessibilityContainerType not bound !missing-selector! NSObject::accessibilityCustomActions not bound -!missing-selector! NSObject::accessibilityElementAtIndex: not bound -!missing-selector! NSObject::accessibilityElements not bound !missing-selector! NSObject::accessibilityElementsHidden not bound !missing-selector! NSObject::accessibilityFrame not bound !missing-selector! NSObject::accessibilityHint not bound @@ -114,7 +122,6 @@ !missing-selector! NSObject::accessibilityTraits not bound !missing-selector! NSObject::accessibilityValue not bound !missing-selector! NSObject::accessibilityViewIsModal not bound -!missing-selector! NSObject::indexOfAccessibilityElement: not bound !missing-selector! NSObject::isAccessibilityElement not bound !missing-selector! NSObject::setAccessibilityActivationPoint: not bound !missing-selector! NSObject::setAccessibilityAttributedHint: not bound @@ -122,7 +129,6 @@ !missing-selector! NSObject::setAccessibilityAttributedValue: not bound !missing-selector! NSObject::setAccessibilityContainerType: not bound !missing-selector! NSObject::setAccessibilityCustomActions: not bound -!missing-selector! NSObject::setAccessibilityElements: not bound !missing-selector! NSObject::setAccessibilityElementsHidden: not bound !missing-selector! NSObject::setAccessibilityFrame: not bound !missing-selector! NSObject::setAccessibilityHint: not bound @@ -136,12 +142,30 @@ !missing-selector! NSObject::setIsAccessibilityElement: not bound !missing-selector! NSObject::setShouldGroupAccessibilityChildren: not bound !missing-selector! NSObject::shouldGroupAccessibilityChildren not bound -!missing-selector! UIColor::getHue:saturation:brightness:alpha: not bound -!missing-selector! UIColor::getRed:green:blue:alpha: not bound -!missing-selector! UIColor::initWithDisplayP3Red:green:blue:alpha: not bound -!missing-selector! UIColor::initWithHue:saturation:brightness:alpha: not bound -!missing-selector! UIGestureRecognizer::ignorePress:forEvent: not bound -!missing-selector! UIImageView::isUserInteractionEnabled not bound -!missing-selector! UIImageView::setUserInteractionEnabled: not bound -!missing-selector! UILabel::isUserInteractionEnabled not bound -!missing-selector! UILabel::setUserInteractionEnabled: not bound + +## @required members added to exixting interfaces (breaking change), fixed on XAMCORE_4_0 +!incorrect-protocol-member! UIFocusEnvironment::preferredFocusEnvironments is REQUIRED and should be abstract +!incorrect-protocol-member! UITextDocumentProxy::documentInputMode is REQUIRED and should be abstract +!incorrect-protocol-member! UITextDocumentProxy::documentIdentifier is REQUIRED and should be abstract +!incorrect-protocol-member! UITextDocumentProxy::selectedText is REQUIRED and should be abstract +!incorrect-protocol-member! UIViewControllerContextTransitioning::pauseInteractiveTransition is REQUIRED and should be abstract +!incorrect-protocol-member! UIViewControllerTransitionCoordinator::notifyWhenInteractionChangesUsingBlock: is REQUIRED and should be abstract +!incorrect-protocol-member! UIViewControllerTransitionCoordinatorContext::isInterruptible is REQUIRED and should be abstract + +# Apple renamed it from UILineBreakMode and we kept the old name for API compatibility +!missing-enum! NSLineBreakMode not bound + +# Apple renamed it from UITextAlignment and we kept the old name for API compatibility +!missing-enum! NSTextAlignment not bound + +## Protocol Inlined Maybe we want to change this in XAMCORE_4_0 since this predates our Category support +!missing-protocol! UIResponderStandardEditActions not bound +!missing-protocol-conformance! UIResponder should conform to UIResponderStandardEditActions + + +## unsorted + +!missing-field! NSCharacterEncodingDocumentOption not bound +!missing-field! NSDefaultAttributesDocumentOption not bound +!missing-field! NSDocumentTypeDocumentOption not bound +!missing-selector! NSLayoutManager::fillBackgroundRectArray:count:forCharacterRange:color: not bound diff --git a/tests/xtro-sharpie/common.pending b/tests/xtro-sharpie/common.pending index bdd0cbda17..72992c0172 100644 --- a/tests/xtro-sharpie/common.pending +++ b/tests/xtro-sharpie/common.pending @@ -1,107 +1,7 @@ -# AVFoundation - -## to be re-enabled when merging to master - https://bugzilla.xamarin.com/show_bug.cgi?id=52730 -!missing-field! AVAudioSessionInterruptionWasSuspendedKey not bound - - -# CoreData - -## https://bugzilla.xamarin.com/show_bug.cgi?id=34968 -!missing-selector! NSPropertyDescription::renamingIdentifier not bound -!missing-selector! NSPropertyDescription::setRenamingIdentifier: not bound -!missing-selector! NSEntityDescription::renamingIdentifier not bound -!missing-selector! NSEntityDescription::setRenamingIdentifier: not bound -!missing-selector! NSExpressionDescription::expression not bound -!missing-selector! NSExpressionDescription::setExpression: not bound -!missing-selector! NSExpressionDescription::expressionResultType not bound -!missing-selector! NSExpressionDescription::setExpressionResultType: not bound -!missing-selector! +NSFetchRequestExpression::expressionForFetch:context:countOnly: not bound -!missing-selector! NSFetchRequestExpression::requestExpression not bound -!missing-selector! NSFetchRequestExpression::contextExpression not bound -!missing-selector! NSFetchRequestExpression::isCountOnlyRequest not bound -!missing-selector! NSManagedObject::awakeFromSnapshotEvents: not bound -!missing-selector! NSManagedObject::faultingState not bound -!missing-selector! +NSPersistentStoreCoordinator::metadataForPersistentStoreOfType:URL:options:error: not bound -!missing-selector! +NSPersistentStoreCoordinator::setMetadata:forPersistentStoreOfType:URL:options:error: not bound -!missing-selector! +NSMappingModel::inferredMappingModelForSourceModel:destinationModel:error: not bound - -## https://trello.com/c/dlSRYPFx/92-33878590-missing-nsbinarystoresecuredecodingclasses-and-nsbinarystoreinsecuredecodingcompatibilityoption-constants-in-binaries -!missing-field! NSBinaryStoreSecureDecodingClasses not bound -!missing-field! NSBinaryStoreInsecureDecodingCompatibilityOption not bound - - -# CoreGraphics - -## API does not exists on devices (at least for iOS, only simulator) rdar #24734681 -!missing-pinvoke! CGColorConverterCreateSimple is not bound - -## should we bother ? -!missing-pinvoke! CGColorConverterGetTypeID is not bound - - -# CoreImage - - - # Foundation -## https://bugzilla.xamarin.com/show_bug.cgi?id=35009 -!missing-selector! NSLinguisticAnalysis::linguisticTagsInRange:scheme:options:orthography:tokenRanges: not bound -!missing-selector! NSLinguisticAnalysis::enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock: not bound - -## https://bugzilla.xamarin.com/show_bug.cgi?id=35012 -!missing-selector! +NSPredicate::predicateWithFormat: not bound -!missing-selector! +NSPredicate::predicateWithFormat:arguments: not bound -!missing-selector! +NSExpression::expressionWithFormat: not bound -!missing-selector! +NSExpression::expressionWithFormat:arguments: not bound -!missing-selector! NSExpression::expressionBlock not bound - -## https://bugzilla.xamarin.com/show_bug.cgi?id=35021 -!missing-selector! NSFileWrapper::initWithSerializedRepresentation: not bound - -## the API exists but is [Sealed], until XAMCORE_4_0, to keep compatible with iOS/Mac profiles -!missing-selector! NSURLSession::getTasksWithCompletionHandler: not bound - - - -# Photos - -## xcode 8 beta 1-6 defines it but it does not exists in the binaries - rdar #28169810 https://trello.com/c/RwXK6YRX -!missing-field! PHLivePhotoShouldRenderAtPlaybackTime not bound - - -# UIKit - -## https://bugzilla.xamarin.com/show_bug.cgi?id=34913 -!missing-protocol-member! UITextInput::selectionAffinity not found -!missing-protocol-member! UITextInput::setSelectionAffinity: not found - -## ctor signature conflict, dev can use colorWithHue:saturation:brightness:alpha: -!missing-selector! UIColor::initWithHue:saturation:brightness:alpha: not bound - - # Issues we want to ignore that are common to both iOS and OSX -## might not be usable unless our ToString output is parsable as an input (includes locale issues) -!missing-pinvoke! CFUUIDCreateFromString is not bound -!missing-pinvoke! CGAffineTransformFromString is not bound -!missing-pinvoke! CGPointFromString is not bound -!missing-pinvoke! CGRectFromString is not bound -!missing-pinvoke! CGSizeFromString is not bound -!missing-pinvoke! NSStringFromCGAffineTransform is not bound -!missing-pinvoke! NSStringFromCGPoint is not bound -!missing-pinvoke! NSStringFromCGRect is not bound -!missing-pinvoke! NSStringFromCGSize is not bound -!missing-pinvoke! NSStringFromUIOffset is not bound -!missing-pinvoke! UIOffsetFromString is not bound - - -# missing - pending decision for implementation -!missing-type! NSAssertionHandler not bound -!missing-field! NSAssertionHandlerKey not bound -!missing-selector! +NSAssertionHandler::currentHandler not bound -!missing-selector! NSAssertionHandler::handleFailureInFunction:file:lineNumber:description: not bound -!missing-selector! NSAssertionHandler::handleFailureInMethod:object:file:lineNumber:description: not bound ## collections - many are special !missing-type! NSCountedSet not bound @@ -189,10 +89,6 @@ !missing-selector! NSDecimalNumberHandler::initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero: not bound !missing-protocol! NSDecimalNumberBehaviors not bound -## coredata -!missing-type! NSExpressionDescription not bound -!missing-type! NSFetchRequestExpression not bound - ## stub for CFFileSecurity? !missing-type! NSFileSecurity not bound @@ -237,16 +133,6 @@ !missing-type! NSValueTransformer not bound -# to be reviewed -!missing-protocol! OS_dispatch_data not bound -!missing-protocol! OS_dispatch_group not bound -!missing-protocol! OS_dispatch_io not bound -!missing-protocol! OS_dispatch_object not bound -!missing-protocol! OS_dispatch_queue not bound -!missing-protocol! OS_dispatch_queue_attr not bound -!missing-protocol! OS_dispatch_semaphore not bound -!missing-protocol! OS_dispatch_source not bound - ## there's a type of the same name (like NSObject, check what Swift did) !missing-protocol! AVVideoCompositionInstruction not bound @@ -339,10 +225,6 @@ !incorrect-protocol-member! MTLTexture::iosurface is REQUIRED and should be abstract !incorrect-protocol-member! MTLTexture::iosurfacePlane is REQUIRED and should be abstract -# not public -!missing-type! NSConstantString not bound -!missing-type! NSSimpleCString not bound - # Protocols we decided not to expose !missing-protocol! NSFastEnumeration not bound !missing-protocol-conformance! AVCaptureSynchronizedDataCollection should conform to NSFastEnumeration @@ -424,211 +306,6 @@ !missing-selector! NSXMLParserDelegate::parserDidEndDocument: is not bound !missing-selector! NSXMLParserDelegate::parserDidStartDocument: is not bound -# Accelerate.framework -!missing-enum! CBLAS_DIAG not bound -!missing-enum! CBLAS_ORDER not bound -!missing-enum! CBLAS_SIDE not bound -!missing-enum! CBLAS_TRANSPOSE not bound -!missing-enum! CBLAS_UPLO not bound -!missing-protocol! OS_la_object not bound - - -# internal types -!unknown-type! __MonoMac_ActionDispatcher bound -!unknown-type! __MonoMac_NSActionDispatcher bound -!unknown-type! __MonoMac_NSAsyncActionDispatcher bound -!unknown-type! __MonoTouch_UIImageStatusDispatcher bound -!unknown-type! __MonoTouch_UIVideoStatusDispatcher bound -!unknown-type! __Xamarin_NSTimerActionDispatcher bound -!unknown-type! InternalNSNotificationHandler bound -!unknown-type! MonoTouch_GKSession_ReceivedObject bound - - -# should we bother ? - -## *GetTypeID -!missing-pinvoke! CFAttributedStringGetTypeID is not bound -!missing-pinvoke! CFBagGetTypeID is not bound -!missing-pinvoke! CFBinaryHeapGetTypeID is not bound -!missing-pinvoke! CFBitVectorGetTypeID is not bound -!missing-pinvoke! CFBundleGetTypeID is not bound -!missing-pinvoke! CFCalendarGetTypeID is not bound -!missing-pinvoke! CFCharacterSetGetTypeID is not bound -!missing-pinvoke! CFDateFormatterGetTypeID is not bound -!missing-pinvoke! CFErrorGetTypeID is not bound -!missing-pinvoke! CFFileDescriptorGetTypeID is not bound -!missing-pinvoke! CFFileSecurityGetTypeID is not bound -!missing-pinvoke! CFHostGetTypeID is not bound -!missing-pinvoke! CFLocaleGetTypeID is not bound -!missing-pinvoke! CFMachPortGetTypeID is not bound -!missing-pinvoke! CFMessagePortGetTypeID is not bound -!missing-pinvoke! CFNetServiceBrowserGetTypeID is not bound -!missing-pinvoke! CFNetServiceGetTypeID is not bound -!missing-pinvoke! CFNetServiceMonitorGetTypeID is not bound -!missing-pinvoke! CFNotificationCenterGetTypeID is not bound -!missing-pinvoke! CFNullGetTypeID is not bound -!missing-pinvoke! CFNumberFormatterGetTypeID is not bound -!missing-pinvoke! CFPlugInGetTypeID is not bound -!missing-pinvoke! CFPlugInInstanceGetTypeID is not bound -!missing-pinvoke! CFReadStreamGetTypeID is not bound -!missing-pinvoke! CFRunLoopGetTypeID is not bound -!missing-pinvoke! CFRunLoopObserverGetTypeID is not bound -!missing-pinvoke! CFRunLoopSourceGetTypeID is not bound -!missing-pinvoke! CFRunLoopTimerGetTypeID is not bound -!missing-pinvoke! CFSetGetTypeID is not bound -!missing-pinvoke! CFSocketGetTypeID is not bound -!missing-pinvoke! CFStringTokenizerGetTypeID is not bound -!missing-pinvoke! CFTimeZoneGetTypeID is not bound -!missing-pinvoke! CFTreeGetTypeID is not bound -!missing-pinvoke! CFURLEnumeratorGetTypeID is not bound -!missing-pinvoke! CFUUIDGetTypeID is not bound -!missing-pinvoke! CFWriteStreamGetTypeID is not bound -!missing-pinvoke! CGColorGetTypeID is not bound -!missing-pinvoke! CGColorSpaceGetTypeID is not bound -!missing-pinvoke! CGContextGetTypeID is not bound -!missing-pinvoke! CGDataConsumerGetTypeID is not bound -!missing-pinvoke! CGDataProviderGetTypeID is not bound -!missing-pinvoke! CGFunctionGetTypeID is not bound -!missing-pinvoke! CGGradientGetTypeID is not bound -!missing-pinvoke! CGImageGetTypeID is not bound -!missing-pinvoke! CGLayerGetTypeID is not bound -!missing-pinvoke! CGPDFDocumentGetTypeID is not bound -!missing-pinvoke! CGPDFPageGetTypeID is not bound -!missing-pinvoke! CGPathGetTypeID is not bound -!missing-pinvoke! CGPatternGetTypeID is not bound -!missing-pinvoke! CGShadingGetTypeID is not bound -!missing-pinvoke! CMBlockBufferGetTypeID is not bound -!missing-pinvoke! CMBufferQueueGetTypeID is not bound -!missing-pinvoke! CMClockGetTypeID is not bound -!missing-pinvoke! CMMemoryPoolGetTypeID is not bound -!missing-pinvoke! CMSimpleQueueGetTypeID is not bound -!missing-pinvoke! CMTimebaseGetTypeID is not bound -!missing-pinvoke! CTFontCollectionGetTypeID is not bound -!missing-pinvoke! CTFontDescriptorGetTypeID is not bound -!missing-pinvoke! CTFrameGetTypeID is not bound -!missing-pinvoke! CTFramesetterGetTypeID is not bound -!missing-pinvoke! CTGlyphInfoGetTypeID is not bound -!missing-pinvoke! CTLineGetTypeID is not bound -!missing-pinvoke! CTParagraphStyleGetTypeID is not bound -!missing-pinvoke! CTRubyAnnotationGetTypeID is not bound -!missing-pinvoke! CTRunDelegateGetTypeID is not bound -!missing-pinvoke! CTRunGetTypeID is not bound -!missing-pinvoke! CTTextTabGetTypeID is not bound -!missing-pinvoke! CTTypesetterGetTypeID is not bound -!missing-pinvoke! GLKMatrixStackGetTypeID is not bound -!missing-pinvoke! MTAudioProcessingTapGetTypeID is not bound -!missing-pinvoke! SCNetworkReachabilityGetTypeID is not bound -!missing-pinvoke! SecAccessControlGetTypeID is not bound -!missing-pinvoke! VTCompressionSessionGetTypeID is not bound -!missing-pinvoke! VTDecompressionSessionGetTypeID is not bound -!missing-pinvoke! VTFrameSiloGetTypeID is not bound -!missing-pinvoke! VTMultiPassStorageGetTypeID is not bound - -## implemented in managed code -### ToString / we might not match the output but changing them would be a breaking change for some apps -!missing-pinvoke! NSStringFromCGAffineTransform is not bound -!missing-pinvoke! NSStringFromCGPoint is not bound -!missing-pinvoke! NSStringFromCGRect is not bound -!missing-pinvoke! NSStringFromCGSize is not bound -!missing-pinvoke! NSStringFromUIOffset is not bound -### OTOH the (missing) convertions from an NSString needs to match too -!missing-pinvoke! CGAffineTransformFromString is not bound -!missing-pinvoke! CGPointFromString is not bound -!missing-pinvoke! CGRectFromString is not bound -!missing-pinvoke! CGSizeFromString is not bound -!missing-pinvoke! UIOffsetFromString is not bound - - -## partially bound, non-framework code -## we already check that they exists, at runtime, in the introspection tests -## but we have no plan to bind the remaining of functions from those header files -!unknown-pinvoke! _Block_copy bound -!unknown-pinvoke! _Block_release bound -!unknown-pinvoke! class_addIvar bound -!unknown-pinvoke! class_addMethod bound -!unknown-pinvoke! class_addProtocol bound -!unknown-pinvoke! class_getInstanceVariable bound -!unknown-pinvoke! class_getMethodImplementation bound -!unknown-pinvoke! class_getName bound -!unknown-pinvoke! class_getSuperclass bound -!unknown-pinvoke! close bound -!unknown-pinvoke! dispatch_after_f bound -!unknown-pinvoke! dispatch_apply_f bound -!unknown-pinvoke! dispatch_async_f bound -!unknown-pinvoke! dispatch_barrier_async_f bound -!unknown-pinvoke! dispatch_get_context bound -!unknown-pinvoke! dispatch_get_current_queue bound -!unknown-pinvoke! dispatch_get_global_queue bound -!unknown-pinvoke! dispatch_group_async_f bound -!unknown-pinvoke! dispatch_group_create bound -!unknown-pinvoke! dispatch_group_enter bound -!unknown-pinvoke! dispatch_group_leave bound -!unknown-pinvoke! dispatch_group_notify_f bound -!unknown-pinvoke! dispatch_group_wait bound -!unknown-pinvoke! dispatch_queue_create bound -!unknown-pinvoke! dispatch_queue_get_label bound -!unknown-pinvoke! dispatch_release bound -!unknown-pinvoke! dispatch_resume bound -!unknown-pinvoke! dispatch_retain bound -!unknown-pinvoke! dispatch_set_context bound -!unknown-pinvoke! dispatch_set_target_queue bound -!unknown-pinvoke! dispatch_source_cancel bound -!unknown-pinvoke! dispatch_source_create bound -!unknown-pinvoke! dispatch_source_get_data bound -!unknown-pinvoke! dispatch_source_get_handle bound -!unknown-pinvoke! dispatch_source_get_mask bound -!unknown-pinvoke! dispatch_source_merge_data bound -!unknown-pinvoke! dispatch_source_set_cancel_handler bound -!unknown-pinvoke! dispatch_source_set_event_handler bound -!unknown-pinvoke! dispatch_source_set_event_handler_f bound -!unknown-pinvoke! dispatch_source_set_registration_handler bound -!unknown-pinvoke! dispatch_source_set_timer bound -!unknown-pinvoke! dispatch_source_testcancel bound -!unknown-pinvoke! dispatch_suspend bound -!unknown-pinvoke! dispatch_sync_f bound -!unknown-pinvoke! dispatch_time bound -!unknown-pinvoke! dispatch_walltime bound -!unknown-pinvoke! dlclose bound -!unknown-pinvoke! dlerror bound -!unknown-pinvoke! dlopen bound -!unknown-pinvoke! dlsym bound -!unknown-pinvoke! memcpy bound -!unknown-pinvoke! objc_allocateClassPair bound -!unknown-pinvoke! objc_allocateProtocol bound -!unknown-pinvoke! objc_getClass bound -!unknown-pinvoke! objc_getProtocol bound -!unknown-pinvoke! objc_msgSend bound -!unknown-pinvoke! objc_msgSendSuper bound -!unknown-pinvoke! objc_registerClassPair bound -!unknown-pinvoke! objc_registerProtocol bound -!unknown-pinvoke! object_getClass bound -!unknown-pinvoke! object_getInstanceVariable bound -!unknown-pinvoke! object_setInstanceVariable bound -!unknown-pinvoke! open bound -!unknown-pinvoke! protocol_addMethodDescription bound -!unknown-pinvoke! protocol_addProperty bound -!unknown-pinvoke! protocol_addProtocol bound -!unknown-pinvoke! protocol_getName bound -!unknown-pinvoke! sel_getName bound -!unknown-pinvoke! sel_isMapped bound -!unknown-pinvoke! sel_registerName bound -!unknown-pinvoke! uname bound - -# Intents - -## NS_DEPRECATED(10_12, 10_12, 10_0, 10_0) / Designated init instead -!missing-selector! INPerson::handle not bound -!missing-selector! INPerson::initWithHandle:displayName:contactIdentifier: not bound -!missing-selector! INPerson::initWithHandle:nameComponents:contactIdentifier: not bound -!missing-selector! INPerson::initWithHandle:nameComponents:displayName:image:contactIdentifier: not bound - -## Apple made this @optional in iOS 11 but this is a breaking change -!incorrect-protocol-member! INSpeakable::identifier is OPTIONAL and should NOT be abstract - -# GameplayKit - -## Fixed in XAMCORE_4_0 -!incorrect-protocol-member! GKGameModelPlayer::playerId is REQUIRED and should be abstract # ModelIO @@ -638,42 +315,3 @@ !incorrect-protocol-member! MDLTransformComponent::keyTimes is REQUIRED and should be abstract !incorrect-protocol-member! MDLTransformComponent::resetsTransform is REQUIRED and should be abstract !incorrect-protocol-member! MDLTransformComponent::setResetsTransform: is REQUIRED and should be abstract - - -## radar://33643011 -> https://trello.com/c/ZN712GOi -## [FAIL] Selector not found for CoreML.MLFeatureDescription : setMultiArrayConstraint: -## [FAIL] Selector not found for CoreML.MLFeatureDescription : setImageConstraint: -## [FAIL] Selector not found for CoreML.MLFeatureDescription : setDictionaryConstraint: -!missing-selector! MLFeatureDescription::setDictionaryConstraint: not bound -!missing-selector! MLFeatureDescription::setImageConstraint: not bound -!missing-selector! MLFeatureDescription::setMultiArrayConstraint: not bound - - - -# recent xtro changes - -## init -!missing-designated-initializer! CXAction::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! MPSBinaryImageKernel::initWithDevice: is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! MPSCNNKernel::initWithDevice: is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! MPSImageLanczosScale::initWithDevice: is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! MPSUnaryImageKernel::initWithDevice: is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! MSMessage::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! PKAddPaymentPassRequest::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! SLComposeSheetConfigurationItem::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIBarButtonItem::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIBarItem::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIBezierPath::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UICollectionViewLayout::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UICubicTimingParameters::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIDragPreviewParameters::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIImageAsset::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIKeyCommand::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UILocalNotification::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIMotionEffect::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIPasteConfiguration::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UISpringTimingParameters::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UITabBarItem::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UITraitCollection::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIUserNotificationAction::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIUserNotificationCategory::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/iOS-AVFoundation.ignore b/tests/xtro-sharpie/iOS-AVFoundation.ignore index 6835d05bd7..73e4f317e3 100644 --- a/tests/xtro-sharpie/iOS-AVFoundation.ignore +++ b/tests/xtro-sharpie/iOS-AVFoundation.ignore @@ -1,3 +1,16 @@ +## OSX-only enums - fixed in XAMCORE_3_0 +!unknown-native-enum! AVCaptureDeviceTransportControlsPlaybackMode bound +!unknown-native-enum! AVVideoFieldMode bound + +## OSX only - but only the member is marked (not the protocol itself) +!missing-protocol! AVFragmentMinding not bound + +# from iOS 4.0 to 5.1 +!unknown-field! AVMediaTypeTimedMetadata bound + + +## unsorted + !missing-field! AVAssetDownloadedAssetEvictionPriorityDefault not bound !missing-field! AVAssetDownloadedAssetEvictionPriorityImportant not bound !missing-protocol-conformance! AVCaptureSynchronizedDataCollection should conform to NSFastEnumeration @@ -15,8 +28,5 @@ !missing-selector! AVMetadataMachineReadableCodeObject::descriptor not bound !missing-selector! AVMutableAssetDownloadStorageManagementPolicy::priority not bound !missing-selector! AVMutableAssetDownloadStorageManagementPolicy::setPriority: not bound -!unknown-field! AVMediaTypeTimedMetadata bound !unknown-native-enum! AVAudioSessionFlags bound !unknown-native-enum! AVAudioSessionInterruptionFlags bound -!unknown-native-enum! AVCaptureDeviceTransportControlsPlaybackMode bound -!unknown-native-enum! AVVideoFieldMode bound diff --git a/tests/xtro-sharpie/iOS-AudioToolbox.ignore b/tests/xtro-sharpie/iOS-AudioToolbox.ignore index 973231946e..8ed43bfd94 100644 --- a/tests/xtro-sharpie/iOS-AudioToolbox.ignore +++ b/tests/xtro-sharpie/iOS-AudioToolbox.ignore @@ -1,3 +1,4 @@ +## more deprecated (iOS 7) constants !missing-field! kAudioSession_AudioRouteChangeKey_CurrentRouteDescription not bound !missing-field! kAudioSession_AudioRouteChangeKey_PreviousRouteDescription not bound !missing-field! kAudioSession_AudioRouteKey_Inputs not bound @@ -8,6 +9,8 @@ !missing-field! kAudioSession_OutputDestinationKey_Description not bound !missing-field! kAudioSession_OutputDestinationKey_ID not bound !missing-field! kAudioSession_RouteChangeKey_Reason not bound + +## all kAudioSession[In|Out]putRoute* were deprecated in iOS 7 - not worth binding !missing-field! kAudioSessionInputRoute_BluetoothHFP not bound !missing-field! kAudioSessionInputRoute_BuiltInMic not bound !missing-field! kAudioSessionInputRoute_HeadsetMic not bound @@ -22,5 +25,11 @@ !missing-field! kAudioSessionOutputRoute_Headphones not bound !missing-field! kAudioSessionOutputRoute_LineOut not bound !missing-field! kAudioSessionOutputRoute_USBAudio not bound + +## deprecated in iOS 7 !missing-pinvoke! AudioSessionRemovePropertyListenerWithUserData is not bound + + +## unsorted + !missing-pinvoke! MusicTrackGetDestMIDIEndpoint is not bound diff --git a/tests/xtro-sharpie/iOS-CoreBluetooth.ignore b/tests/xtro-sharpie/iOS-CoreBluetooth.ignore index 47bab66b0c..0316982a78 100644 --- a/tests/xtro-sharpie/iOS-CoreBluetooth.ignore +++ b/tests/xtro-sharpie/iOS-CoreBluetooth.ignore @@ -1,3 +1,6 @@ +## obsoleted (removed from headers) in iOS 8.4 !extra-protocol-member! unexpected selector CBCentralManagerDelegate::centralManager:didRetrieveConnectedPeripherals: found !extra-protocol-member! unexpected selector CBCentralManagerDelegate::centralManager:didRetrievePeripherals: found + +## obsoleted (removed from headers) in iOS 8.4 !extra-protocol-member! unexpected selector CBPeripheralDelegate::peripheralDidInvalidateServices: found diff --git a/tests/xtro-sharpie/iOS-Foundation.todo b/tests/xtro-sharpie/iOS-Foundation.todo new file mode 100644 index 0000000000..b1b8067fc9 --- /dev/null +++ b/tests/xtro-sharpie/iOS-Foundation.todo @@ -0,0 +1,15 @@ +!missing-designated-initializer! NSArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDate::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSISO8601DateFormatter::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSItemProvider::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOutputStream::initToMemory is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSString::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSThread::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSUUID::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/iOS-MapKit.ignore b/tests/xtro-sharpie/iOS-MapKit.ignore index ed671b9d77..500aad15f7 100644 --- a/tests/xtro-sharpie/iOS-MapKit.ignore +++ b/tests/xtro-sharpie/iOS-MapKit.ignore @@ -1,4 +1,11 @@ -!missing-field! MKAnnotationCalloutInfoDidChangeNotification not bound +## defined twice for iOS (likely to make it available to OSX) +### MKOverlayRenderer.h +### MKOverlayView.h (based on UIView so not in OSX headers list) !missing-pinvoke! MKRoadWidthAtZoomScale is not bound + + +## unsorted + +!missing-field! MKAnnotationCalloutInfoDidChangeNotification not bound !missing-protocol-conformance! MKUserLocation should conform to MKAnnotation !missing-protocol-member! MKOverlay::coordinate not found diff --git a/tests/xtro-sharpie/iOS-MediaPlayer.ignore b/tests/xtro-sharpie/iOS-MediaPlayer.ignore index 189c88d7fd..cf02e0c779 100644 --- a/tests/xtro-sharpie/iOS-MediaPlayer.ignore +++ b/tests/xtro-sharpie/iOS-MediaPlayer.ignore @@ -1,5 +1,15 @@ +## incorrect macro/parsing - decorated with `MP_API(macos(10.12.2))` !missing-enum! MPNowPlayingPlaybackState not bound +!missing-selector! MPNowPlayingInfoCenter::playbackState not bound +!missing-selector! MPNowPlayingInfoCenter::setPlaybackState: not bound + +# added in iOS7 but there was another way to get this ending up with the same name +# so current code works better (before 7.0) but can't be overridden (likely a good thing) !missing-selector! MPMediaEntity::persistentID not bound + + +## unsorted + !missing-selector! MPMediaItem::albumArtist not bound !missing-selector! MPMediaItem::albumArtistPersistentID not bound !missing-selector! MPMediaItem::albumPersistentID not bound @@ -38,5 +48,3 @@ !missing-selector! MPMediaItem::skipCount not bound !missing-selector! MPMediaItem::title not bound !missing-selector! MPMediaItem::userGrouping not bound -!missing-selector! MPNowPlayingInfoCenter::playbackState not bound -!missing-selector! MPNowPlayingInfoCenter::setPlaybackState: not bound diff --git a/tests/xtro-sharpie/iOS-Metal.ignore b/tests/xtro-sharpie/iOS-Metal.ignore index bfbbd01ba7..cab97e3b1d 100644 --- a/tests/xtro-sharpie/iOS-Metal.ignore +++ b/tests/xtro-sharpie/iOS-Metal.ignore @@ -1,3 +1,9 @@ +## only on macOS (but removing would be a breaking change) +!unknown-native-enum! MTLSamplerBorderColor bound + + +## unsorted + !incorrect-protocol-member! MTLComputeCommandEncoder::dispatchThreads:threadsPerThreadgroup: is REQUIRED and should be abstract !incorrect-protocol-member! MTLComputeCommandEncoder::setImageblockWidth:height: is REQUIRED and should be abstract !incorrect-protocol-member! MTLComputePipelineState::imageblockMemoryLengthForDimensions: is REQUIRED and should be abstract diff --git a/tests/xtro-sharpie/iOS-Social.ignore b/tests/xtro-sharpie/iOS-Social.ignore index 2cf20fa000..e9286ddd57 100644 --- a/tests/xtro-sharpie/iOS-Social.ignore +++ b/tests/xtro-sharpie/iOS-Social.ignore @@ -1,4 +1,2 @@ -!missing-designated-initializer! SLComposeSheetConfigurationItem::init is missing an [DesignatedInitializer] attribute - ## deprecated in iOS 11 - and it was not available on iOS before Xcode9 (iOS 11) even if the new headers says otherwise !missing-field! SLServiceTypeLinkedIn not bound diff --git a/tests/xtro-sharpie/iOS-Social.todo b/tests/xtro-sharpie/iOS-Social.todo new file mode 100644 index 0000000000..9d3c04f091 --- /dev/null +++ b/tests/xtro-sharpie/iOS-Social.todo @@ -0,0 +1 @@ +!missing-designated-initializer! SLComposeSheetConfigurationItem::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/iOS-UIKit.ignore b/tests/xtro-sharpie/iOS-UIKit.ignore index 69f3718c6c..54831ddbc5 100644 --- a/tests/xtro-sharpie/iOS-UIKit.ignore +++ b/tests/xtro-sharpie/iOS-UIKit.ignore @@ -19,21 +19,29 @@ !unknown-field! UIKeyboardCenterBeginUserInfoKey bound !unknown-field! UIKeyboardCenterEndUserInfoKey bound +# from docs: Important: UIActionSheetDelegate is deprecated in iOS 8. +!missing-protocol-conformance! UIDocumentInteractionController should conform to UIActionSheetDelegate + +## exception name, not clear if useful +!missing-field! UIApplicationInvalidInterfaceOrientationException not bound + +## fixed for XAMCORE_4_0 +!incorrect-protocol-member! UIDocumentPickerDelegate::documentPicker:didPickDocumentAtURL: is OPTIONAL and should NOT be abstract + +## Special case from UIAccessibilityAction. We added it (completly) on UIResponser but magic tap is also available on app delegate according to docs +## See comments is uikit.cs for more info +!extra-protocol-member! unexpected selector UIApplicationDelegate::accessibilityPerformMagicTap found + +## Obsoleted selectors in very early versions of iOS (3.0) and removed in XAMCORE_3_0 +!extra-protocol-member! unexpected selector UITableViewDelegate::tableView:accessoryTypeForRowWithIndexPath: found +!extra-protocol-member! unexpected selector UIImagePickerControllerDelegate::imagePickerController:didFinishPickingImage:editingInfo: found + +# fixed in XAMCORE_4_0 - API break +!incorrect-protocol-member! UIDocumentMenuDelegate::documentMenuWasCancelled: is OPTIONAL and should NOT be abstract + ## unsorted -!extra-protocol-member! unexpected selector UIApplicationDelegate::accessibilityPerformMagicTap found -!extra-protocol-member! unexpected selector UIImagePickerControllerDelegate::imagePickerController:didFinishPickingImage:editingInfo: found -!extra-protocol-member! unexpected selector UITableViewDelegate::tableView:accessoryTypeForRowWithIndexPath: found -!incorrect-protocol-member! UIDocumentMenuDelegate::documentMenuWasCancelled: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UIDocumentPickerDelegate::documentPicker:didPickDocumentAtURL: is OPTIONAL and should NOT be abstract -!missing-designated-initializer! UIDragPreviewParameters::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UILocalNotification::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UISpringTimingParameters::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIUserNotificationAction::init is missing an [DesignatedInitializer] attribute -!missing-designated-initializer! UIUserNotificationCategory::init is missing an [DesignatedInitializer] attribute -!missing-field! UIApplicationInvalidInterfaceOrientationException not bound -!missing-protocol-conformance! UIDocumentInteractionController should conform to UIActionSheetDelegate !missing-selector! NSObject::accessibilityDragSourceDescriptors not bound !missing-selector! NSObject::accessibilityDropPointDescriptors not bound !missing-selector! NSObject::setAccessibilityDragSourceDescriptors: not bound diff --git a/tests/xtro-sharpie/iOS-UIKit.todo b/tests/xtro-sharpie/iOS-UIKit.todo new file mode 100644 index 0000000000..16d948c330 --- /dev/null +++ b/tests/xtro-sharpie/iOS-UIKit.todo @@ -0,0 +1,19 @@ +!missing-designated-initializer! NSLayoutManager::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSShadow::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIBarButtonItem::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIBarItem::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIBezierPath::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UICollectionViewLayout::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UICubicTimingParameters::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIImageAsset::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIKeyCommand::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIMotionEffect::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIPasteConfiguration::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UITabBarItem::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UITraitCollection::init is missing an [DesignatedInitializer] attribute + +!missing-designated-initializer! UIDragPreviewParameters::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UILocalNotification::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UISpringTimingParameters::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIUserNotificationAction::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIUserNotificationCategory::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/iOS-WebKit.ignore b/tests/xtro-sharpie/iOS-WebKit.ignore index 25c37732d8..5d778fb9da 100644 --- a/tests/xtro-sharpie/iOS-WebKit.ignore +++ b/tests/xtro-sharpie/iOS-WebKit.ignore @@ -1,3 +1,4 @@ -# unfortunate (but required for API compatibility) it also means one seems to be missing (same key) -!duplicate-type-name! WKErrorCode enum exists as both WatchKit.WKErrorCode and WebKit.WKErrorCode +## unfortunate (but required for API compatibility) the name exists in both WatchKit and WebKit namespaces +## it's reported as missing here because it's removed from the list when processing WatchKit +!duplicate-type-name! WKErrorCode enum exists as both WebKit.WKErrorCode and WatchKit.WKErrorCode !missing-enum! WKErrorCode not bound diff --git a/tests/xtro-sharpie/ios.ignore b/tests/xtro-sharpie/ios.ignore deleted file mode 100644 index 1ff43ae118..0000000000 --- a/tests/xtro-sharpie/ios.ignore +++ /dev/null @@ -1,244 +0,0 @@ -# iOS specific issues we want to (very likely forever) ignore - -# hacks around Apple - because we want better API :) - - - - -# AudioUnit - -## all kAudioSession[In|Out]putRoute* were deprecated in iOS 7 - not worth binding -!missing-field! kAudioSessionInputRoute_BluetoothHFP not bound -!missing-field! kAudioSessionInputRoute_BuiltInMic not bound -!missing-field! kAudioSessionInputRoute_HeadsetMic not bound -!missing-field! kAudioSessionInputRoute_LineIn not bound -!missing-field! kAudioSessionInputRoute_USBAudio not bound -!missing-field! kAudioSessionOutputRoute_AirPlay not bound -!missing-field! kAudioSessionOutputRoute_BluetoothA2DP not bound -!missing-field! kAudioSessionOutputRoute_BluetoothHFP not bound -!missing-field! kAudioSessionOutputRoute_BuiltInReceiver not bound -!missing-field! kAudioSessionOutputRoute_BuiltInSpeaker not bound -!missing-field! kAudioSessionOutputRoute_HDMI not bound -!missing-field! kAudioSessionOutputRoute_Headphones not bound -!missing-field! kAudioSessionOutputRoute_LineOut not bound -!missing-field! kAudioSessionOutputRoute_USBAudio not bound -# more deprecated (iOS 7) constants -!missing-field! kAudioSession_AudioRouteChangeKey_CurrentRouteDescription not bound -!missing-field! kAudioSession_AudioRouteChangeKey_PreviousRouteDescription not bound -!missing-field! kAudioSession_AudioRouteKey_Inputs not bound -!missing-field! kAudioSession_AudioRouteKey_Outputs not bound -!missing-field! kAudioSession_AudioRouteKey_Type not bound -!missing-field! kAudioSession_InputSourceKey_Description not bound -!missing-field! kAudioSession_InputSourceKey_ID not bound -!missing-field! kAudioSession_OutputDestinationKey_Description not bound -!missing-field! kAudioSession_OutputDestinationKey_ID not bound -!missing-field! kAudioSession_RouteChangeKey_Reason not bound -# deprecated in iOS 7 -!missing-pinvoke! AudioSessionRemovePropertyListenerWithUserData is not bound - - -# CoreBluetooth - -## obsoleted (removed from headers) in iOS 8.4 -!extra-protocol-member! unexpected selector CBCentralManagerDelegate::centralManager:didRetrieveConnectedPeripherals: found -!extra-protocol-member! unexpected selector CBCentralManagerDelegate::centralManager:didRetrievePeripherals: found - -## obsoleted (removed from headers) in iOS 8.4 -!extra-protocol-member! unexpected selector CBPeripheralDelegate::peripheralDidInvalidateServices: found - - - -# GameKit - -## typedef is used + untyped enum in GKPeerPickerController.h: typedef NSUInteger GKPeerPickerConnectionType -!unknown-native-enum! GKPeerPickerConnectionType bound - - -# Intents - -## added and deprecated in Xcode9 (but not removed from headers) -!missing-selector! +INNotebookItemTypeResolutionResult::disambiguationWithValuesToDisambiguate: not bound - -## The following were deprecated in ios(10.0, 10.0) -!missing-selector! INRideDriver::initWithHandle:displayName:image:rating:phoneNumber: not bound -!missing-selector! INRideDriver::initWithHandle:nameComponents:image:rating:phoneNumber: not bound -!missing-selector! INRideOption::identifier not bound -!missing-selector! INRideOption::setIdentifier: not bound - - -# IntentsUI - -## not exposed by our API (better use the OS version) -!missing-field! IntentsUIVersionNumber not bound -!missing-field! IntentsUIVersionString not bound - - -# MediaPlayer - -## incorrect macro/parsing - decorated with `MP_API(macos(10.12.2))` -!missing-enum! MPNowPlayingPlaybackState not bound -!missing-selector! MPNowPlayingInfoCenter::playbackState not bound -!missing-selector! MPNowPlayingInfoCenter::setPlaybackState: not bound - - -# PushKit - -## was @required but now @optional (a replacement was added in Xcode9) - still a breaking change to remove the abstract -!incorrect-protocol-member! PKPushRegistryDelegate::pushRegistry:didReceiveIncomingPushWithPayload:forType: is OPTIONAL and should NOT be abstract - - -# Social - -## deprecated (was not available on iOS before Xcode9) -!missing-field! SLServiceTypeLinkedIn not bound - - -# UIKit - -## static members cannot be abstract (@required) in .NET -!incorrect-protocol-member! +UIPopoverBackgroundViewMethods::arrowBase is REQUIRED and should be abstract -!incorrect-protocol-member! +UIPopoverBackgroundViewMethods::arrowHeight is REQUIRED and should be abstract -!incorrect-protocol-member! +UIPopoverBackgroundViewMethods::contentViewInsets is REQUIRED and should be abstract - -## Exposed thru UIAccessibilityContainer (informal protocol) as we do not want all NSObject to expose them (as a category of UKit) -!missing-selector! NSObject::accessibilityElementAtIndex: not bound -!missing-selector! NSObject::accessibilityElements not bound -!missing-selector! NSObject::indexOfAccessibilityElement: not bound -!missing-selector! NSObject::setAccessibilityElements: not bound - -## UIAccessibility -## We can't expose them as categories of NSObject so we have custom types instead -!missing-selector! NSObject::accessibilityActivationPoint not bound -!missing-selector! NSObject::accessibilityAttributedHint not bound -!missing-selector! NSObject::accessibilityAttributedLabel not bound -!missing-selector! NSObject::accessibilityAttributedValue not bound -!missing-selector! NSObject::accessibilityContainerType not bound -!missing-selector! NSObject::accessibilityCustomActions not bound -!missing-selector! NSObject::accessibilityDragSourceDescriptors not bound -!missing-selector! NSObject::accessibilityDropPointDescriptors not bound -!missing-selector! NSObject::accessibilityElementsHidden not bound -!missing-selector! NSObject::accessibilityFrame not bound -!missing-selector! NSObject::accessibilityHint not bound -!missing-selector! NSObject::accessibilityLabel not bound -!missing-selector! NSObject::accessibilityLanguage not bound -!missing-selector! NSObject::accessibilityNavigationStyle not bound -!missing-selector! NSObject::accessibilityPath not bound -!missing-selector! NSObject::accessibilityScroll: not bound -!missing-selector! NSObject::accessibilityTraits not bound -!missing-selector! NSObject::accessibilityValue not bound -!missing-selector! NSObject::accessibilityViewIsModal not bound -!missing-selector! NSObject::isAccessibilityElement not bound -!missing-selector! NSObject::setAccessibilityActivationPoint: not bound -!missing-selector! NSObject::setAccessibilityAttributedHint: not bound -!missing-selector! NSObject::setAccessibilityAttributedLabel: not bound -!missing-selector! NSObject::setAccessibilityAttributedValue: not bound -!missing-selector! NSObject::setAccessibilityContainerType: not bound -!missing-selector! NSObject::setAccessibilityCustomActions: not bound -!missing-selector! NSObject::setAccessibilityDragSourceDescriptors: not bound -!missing-selector! NSObject::setAccessibilityDropPointDescriptors: not bound -!missing-selector! NSObject::setAccessibilityElementsHidden: not bound -!missing-selector! NSObject::setAccessibilityFrame: not bound -!missing-selector! NSObject::setAccessibilityHint: not bound -!missing-selector! NSObject::setAccessibilityLabel: not bound -!missing-selector! NSObject::setAccessibilityLanguage: not bound -!missing-selector! NSObject::setAccessibilityNavigationStyle: not bound -!missing-selector! NSObject::setAccessibilityPath: not bound -!missing-selector! NSObject::setAccessibilityTraits: not bound -!missing-selector! NSObject::setAccessibilityValue: not bound -!missing-selector! NSObject::setAccessibilityViewIsModal: not bound -!missing-selector! NSObject::setIsAccessibilityElement: not bound -!missing-selector! NSObject::setShouldGroupAccessibilityChildren: not bound -!missing-selector! NSObject::shouldGroupAccessibilityChildren not bound - - -## methods are [Sealed] so we can't reflect the selector -### Docs: This method is intended to be called, not overridden. -!missing-selector! UIGestureRecognizer::ignorePress:forEvent: not bound - - -# XAMCORE_3_0 - -## OSX-only enums -!unknown-native-enum! AVCaptureDeviceTransportControlsPlaybackMode bound -!unknown-native-enum! AVVideoFieldMode bound - - -## fixed in maccore/master c741408048f1509fc156ab2c65d88af2dbd29830 -!unknown-selector! UICollectionViewDelegate::scrollViewDidEndDecelerating: bound -!unknown-selector! UICollectionViewDelegate::scrollViewDidEndDragging:willDecelerate: bound -!unknown-selector! UICollectionViewDelegate::scrollViewDidEndScrollingAnimation: bound -!unknown-selector! UICollectionViewDelegate::scrollViewDidEndZooming:withView:atScale: bound -!unknown-selector! UICollectionViewDelegate::scrollViewDidScroll: bound -!unknown-selector! UICollectionViewDelegate::scrollViewDidScrollToTop: bound -!unknown-selector! UICollectionViewDelegate::scrollViewDidZoom: bound -!unknown-selector! UICollectionViewDelegate::scrollViewShouldScrollToTop: bound -!unknown-selector! UICollectionViewDelegate::scrollViewWillBeginDecelerating: bound -!unknown-selector! UICollectionViewDelegate::scrollViewWillBeginDragging: bound -!unknown-selector! UICollectionViewDelegate::scrollViewWillBeginZooming:withView: bound -!unknown-selector! UICollectionViewDelegate::scrollViewWillEndDragging:withVelocity:targetContentOffset: bound -!unknown-selector! UICollectionViewDelegate::viewForZoomingInScrollView: bound - -## fixed in maccore/master -!unknown-protocol! SCNSceneExportDelegate bound -!unknown-selector! SCNLight::attributeForKey: bound -!unknown-selector! SCNLight::setAttribute:forKey: bound -!unknown-selector! SCNSceneExportDelegate::writeImage:withSceneDocumentURL:originalImageURL: bound - - -# special cases - -## defined with __Internal (which is normally ignored here) so 3rd party tools can hack it -!missing-pinvoke! UIApplicationMain is not bound - - -## defined twice for iOS (likely to make it available to OSX) -### MKOverlayRenderer.h -### MKOverlayView.h (based on UIView so not in OSX headers list) -!missing-pinvoke! MKRoadWidthAtZoomScale is not bound - -## only on OSX (NA or unused in iOS) -!missing-enum! EKAlarmType not bound -!missing-enum! NSProcessInfoThermalState not bound - -## HACK (as documented in uikit.cs) -!incorrect-protocol-member! UITextInputTraits::setAutocapitalizationType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setAutocorrectionType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setEnablesReturnKeyAutomatically: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setKeyboardAppearance: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setKeyboardType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setReturnKeyType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setSecureTextEntry: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setSpellCheckingType: is OPTIONAL and should NOT be abstract - - -# old deprecated - old enough that we don't provide bindings for them - -## deprecated in iOS 3 -!missing-selector! UIWebView::detectsPhoneNumbers is not bound -!missing-selector! UIWebView::setDetectsPhoneNumbers: is not bound -!unknown-selector! UITableViewDelegate::tableView:accessoryTypeForRowWithIndexPath: bound - -# from docs: Important: UIActionSheetDelegate is deprecated in iOS 8. -!missing-protocol-conformance! UIApplication should conform to UIActionSheetDelegate -!missing-protocol-conformance! UIDocumentInteractionController should conform to UIActionSheetDelegate - -# from iOS 4.0 to 5.1 -!unknown-field! AVMediaTypeTimedMetadata bound - -# Apple docs: Available in iOS 3.0 through iOS 7.1 -!unknown-selector! NSManagedObject::observationInfo bound -!unknown-selector! NSManagedObject::setObservationInfo: bound - -# Apple docs: deprecated in iOS 3.1 -!unknown-selector! UIImagePickerController::allowsImageEditing bound -!unknown-selector! UIImagePickerController::setAllowsImageEditing: bound - -# Apple docs: Available in iOS 8.0 through iOS 8.2. -!unknown-field! SCNSceneSourceConvertToYUpKey bound -!unknown-field! SCNSceneSourceConvertUnitsToMetersKey bound - -# Apple headers: Deprecated in iOS 9 -!unknown-native-enum! ABPersonImageFormat bound - -# deprecated in iOS 3.0 -!unknown-selector! UIImagePickerControllerDelegate::imagePickerController:didFinishPickingImage:editingInfo: bound diff --git a/tests/xtro-sharpie/ios.pending b/tests/xtro-sharpie/ios.pending deleted file mode 100644 index 116e948206..0000000000 --- a/tests/xtro-sharpie/ios.pending +++ /dev/null @@ -1,272 +0,0 @@ -# iOS specific issues we need to look into - - -# AddressBook - -## constants were manually bound and this framework is deprecated (Contact) -## so it's not worth updating the binding code for them -!missing-field! kABPersonAddressCityKey not bound -!missing-field! kABPersonAddressCountryCodeKey not bound -!missing-field! kABPersonAddressCountryKey not bound -!missing-field! kABPersonAddressProperty not bound -!missing-field! kABPersonAddressStateKey not bound -!missing-field! kABPersonAddressStreetKey not bound -!missing-field! kABPersonAddressZIPKey not bound -!missing-field! kABPersonAlternateBirthdayCalendarIdentifierKey not bound -!missing-field! kABPersonAlternateBirthdayDayKey not bound -!missing-field! kABPersonAlternateBirthdayEraKey not bound -!missing-field! kABPersonAlternateBirthdayIsLeapMonthKey not bound -!missing-field! kABPersonAlternateBirthdayMonthKey not bound -!missing-field! kABPersonAlternateBirthdayProperty not bound -!missing-field! kABPersonAlternateBirthdayYearKey not bound -!missing-field! kABPersonAnniversaryLabel not bound -!missing-field! kABPersonAssistantLabel not bound -!missing-field! kABPersonBirthdayProperty not bound -!missing-field! kABPersonBrotherLabel not bound -!missing-field! kABPersonChildLabel not bound -!missing-field! kABPersonCreationDateProperty not bound -!missing-field! kABPersonDateProperty not bound -!missing-field! kABPersonDepartmentProperty not bound -!missing-field! kABPersonEmailProperty not bound -!missing-field! kABPersonFatherLabel not bound -!missing-field! kABPersonFirstNamePhoneticProperty not bound -!missing-field! kABPersonFirstNameProperty not bound -!missing-field! kABPersonFriendLabel not bound -!missing-field! kABPersonHomePageLabel not bound -!missing-field! kABPersonInstantMessageProperty not bound -!missing-field! kABPersonInstantMessageServiceAIM not bound -!missing-field! kABPersonInstantMessageServiceFacebook not bound -!missing-field! kABPersonInstantMessageServiceGaduGadu not bound -!missing-field! kABPersonInstantMessageServiceGoogleTalk not bound -!missing-field! kABPersonInstantMessageServiceICQ not bound -!missing-field! kABPersonInstantMessageServiceJabber not bound -!missing-field! kABPersonInstantMessageServiceKey not bound -!missing-field! kABPersonInstantMessageServiceMSN not bound -!missing-field! kABPersonInstantMessageServiceQQ not bound -!missing-field! kABPersonInstantMessageServiceSkype not bound -!missing-field! kABPersonInstantMessageServiceYahoo not bound -!missing-field! kABPersonInstantMessageUsernameKey not bound -!missing-field! kABPersonJobTitleProperty not bound -!missing-field! kABPersonKindOrganization not bound -!missing-field! kABPersonKindPerson not bound -!missing-field! kABPersonKindProperty not bound -!missing-field! kABPersonLastNamePhoneticProperty not bound -!missing-field! kABPersonLastNameProperty not bound -!missing-field! kABPersonManagerLabel not bound -!missing-field! kABPersonMiddleNamePhoneticProperty not bound -!missing-field! kABPersonMiddleNameProperty not bound -!missing-field! kABPersonModificationDateProperty not bound -!missing-field! kABPersonMotherLabel not bound -!missing-field! kABPersonNicknameProperty not bound -!missing-field! kABPersonNoteProperty not bound -!missing-field! kABPersonOrganizationProperty not bound -!missing-field! kABPersonParentLabel not bound -!missing-field! kABPersonPartnerLabel not bound -!missing-field! kABPersonPhoneHomeFAXLabel not bound -!missing-field! kABPersonPhoneIPhoneLabel not bound -!missing-field! kABPersonPhoneMainLabel not bound -!missing-field! kABPersonPhoneMobileLabel not bound -!missing-field! kABPersonPhoneOtherFAXLabel not bound -!missing-field! kABPersonPhonePagerLabel not bound -!missing-field! kABPersonPhoneProperty not bound -!missing-field! kABPersonPhoneWorkFAXLabel not bound -!missing-field! kABPersonPrefixProperty not bound -!missing-field! kABPersonRelatedNamesProperty not bound -!missing-field! kABPersonSisterLabel not bound -!missing-field! kABPersonSocialProfileProperty not bound -!missing-field! kABPersonSocialProfileServiceFacebook not bound -!missing-field! kABPersonSocialProfileServiceFlickr not bound -!missing-field! kABPersonSocialProfileServiceGameCenter not bound -!missing-field! kABPersonSocialProfileServiceKey not bound -!missing-field! kABPersonSocialProfileServiceLinkedIn not bound -!missing-field! kABPersonSocialProfileServiceMyspace not bound -!missing-field! kABPersonSocialProfileServiceSinaWeibo not bound -!missing-field! kABPersonSocialProfileServiceTwitter not bound -!missing-field! kABPersonSocialProfileURLKey not bound -!missing-field! kABPersonSocialProfileUserIdentifierKey not bound -!missing-field! kABPersonSocialProfileUsernameKey not bound -!missing-field! kABPersonSpouseLabel not bound -!missing-field! kABPersonSuffixProperty not bound -!missing-field! kABPersonURLProperty not bound -!missing-field! kABSourceNameProperty not bound -!missing-field! kABSourceTypeProperty not bound - - -# CoreMedia - -!missing-field! kCMMetadataKeySpace_HLSDateRange not bound - - -# CoreVideo - -!missing-field! kCVOpenGLESTextureCacheMaximumTextureAgeKey not bound - - -# ExternalAccessory - -## according to header comment (but not in attributes) -!extra-designated-initializer! EAWiFiUnconfiguredAccessoryBrowser::initWithDelegate:queue: is incorrectly decorated with an [DesignatedInitializer] attribute - - -# GameplayKit - -## Apple introduced those types in Xcode 7.1 and removed them afterward !?! -## they do work (intro tests checks them) but they are not part of the header files -!unknown-type! GKHybridStrategist bound -!unknown-type! GKMonteCarloStrategist bound -!unknown-type! GKQuadTree bound -!unknown-type! GKQuadTreeNode bound - - -# Metal - -## only on macOS (but removing would be a breaking change) -!unknown-native-enum! MTLSamplerBorderColor bound - - -# Speech -## iOS 10 beta 1 - use a non-public type in the signature https://trello.com/c/s6s6YKua -!missing-selector! SFSpeechRecognizer::prepareWithRequest: not bound - - -# OpenGLES - -!missing-field! kEAGLColorFormatRGB565 not bound -!missing-field! kEAGLColorFormatRGBA8 not bound -!missing-field! kEAGLColorFormatSRGBA8 not bound -!missing-field! kEAGLDrawablePropertyColorFormat not bound -!missing-field! kEAGLDrawablePropertyRetainedBacking not bound - - -# VideoToolbox - -## Apple headers bug, header file VTPixelTransferProperties.h not included by default (!TARGET_OS_IPHONE) -## but API are mentioned as available (and our intro tests results concurs) -!unknown-field! kVTDownsamplingMode_Average bound -!unknown-field! kVTDownsamplingMode_Decimate bound -!unknown-field! kVTPixelTransferPropertyKey_DestinationCleanAperture bound -!unknown-field! kVTPixelTransferPropertyKey_DestinationPixelAspectRatio bound -!unknown-field! kVTPixelTransferPropertyKey_DestinationYCbCrMatrix bound -!unknown-field! kVTPixelTransferPropertyKey_DownsamplingMode bound -!unknown-field! kVTPixelTransferPropertyKey_ScalingMode bound -!unknown-field! kVTScalingMode_CropSourceToCleanAperture bound -!unknown-field! kVTScalingMode_Letterbox bound -!unknown-field! kVTScalingMode_Normal bound -!unknown-field! kVTScalingMode_Trim bound - - -# static methods in protocols are problematic -!missing-selector! +UIViewControllerRestoration::viewControllerWithRestorationIdentifierPath:coder: not bound - - -# the only member exists in OSX 10.11 - but there are empty protocols so it must be reported (and ignored) -!missing-protocol! AVFragmentMinding not bound - -# Apple docs: This property is inherited from the UIView parent class. This class changes the default value of this property to NO. -!missing-selector! UIImageView::isUserInteractionEnabled not bound -!missing-selector! UIImageView::setUserInteractionEnabled: not bound -!missing-selector! UILabel::isUserInteractionEnabled not bound -!missing-selector! UILabel::setUserInteractionEnabled: not bound - -# added in iOS7 but there was another way to get this ending up with the same name -# so current code works better (before 7.0) but can't be overridden (likely a good thing) -!missing-selector! MPMediaEntity::persistentID not bound - -## UIBarButtonItem.Callback nested type, [UI|NS]*GestureRecognizer.Callback nested types -!unknown-type! Callback bound - -## Implemented in managed code -!missing-selector! UIColor::getHue:saturation:brightness:alpha: not bound -!missing-selector! UIColor::getRed:green:blue:alpha: not bound - - - - -# Apple renamed it from UILineBreakMode and we kept the old name -!missing-enum! NSLineBreakMode not bound - -# Apple renamed it from NSTextAlignment and we kept the old name -!missing-enum! NSTextAlignment not bound - - -# fixed in XAMCORE_4_0 - API break -!incorrect-protocol-member! UIDocumentMenuDelegate::documentMenuWasCancelled: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UIDynamicAnimatorDelegate::dynamicAnimatorDidPause: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UIDynamicAnimatorDelegate::dynamicAnimatorWillResume: is OPTIONAL and should NOT be abstract - - -# should we bother ? - -## *GetTypeID -!missing-pinvoke! CVMetalTextureCacheGetTypeID is not bound -!missing-pinvoke! CVMetalTextureGetTypeID is not bound -!missing-pinvoke! CVOpenGLESTextureCacheGetTypeID is not bound -!missing-pinvoke! CVOpenGLESTextureGetTypeID is not bound - - -# Intents API iOS 10 - -## INPayBillIntentHandling && INSearchForBillsIntentHandling are new protocols added in iOS 10.3. This two protocols -## were added to the existing Protocol INPaymentsDomainHandling so making this two required would be a breaking change -!incorrect-protocol-member! INPayBillIntentHandling::handlePayBill:completion: is REQUIRED and should be abstract -!incorrect-protocol-member! INSearchForBillsIntentHandling::handleSearchForBills:completion: is REQUIRED and should be abstract - - -# UIKit - -## HACK: those members are not *required* in ObjC but we made them -## abstract to have them inlined in UITextField and UITextView -## Even more confusing it that respondToSelecttor return NO on them -## even if it works in _real_ life (compare unit and introspection tests) -!incorrect-protocol-member! UITextInputTraits::autocapitalizationType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::autocorrectionType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::enablesReturnKeyAutomatically is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::isSecureTextEntry is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::keyboardAppearance is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::keyboardType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::returnKeyType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::spellCheckingType is OPTIONAL and should NOT be abstract - -## it's technically optional but there's no point in adopting the protocol if you do not provide the implemenation -## We should review the above ^ if we want to keep this when XAMCORE_4_0 becomes a thing -!incorrect-protocol-member! UIInputViewAudioFeedback::enableInputClicksWhenVisible is OPTIONAL and should NOT be abstract - -## Obsoleted selectors in very early versions of iOS (3.0) and removed in XAMCORE_3_0 -!extra-protocol-member! unexpected selector UIImagePickerControllerDelegate::imagePickerController:didFinishPickingImage:editingInfo: found -!extra-protocol-member! unexpected selector UITableViewDelegate::tableView:accessoryTypeForRowWithIndexPath: found - -## Special case from UIAccessibilityAction. We added it (completly) on UIResponser but magic tap is also available on app delegate according to docs -## See comments is uikit.cs for more info -!extra-protocol-member! unexpected selector UIApplicationDelegate::accessibilityPerformMagicTap found - -## Protocol Inlined Maybe we want to change this in XAMCORE_4_0 since this predates our Category support -!missing-protocol! UIResponderStandardEditActions not bound -!missing-protocol-conformance! UIResponder should conform to UIResponderStandardEditActions - -## @required members added to exixting interfaces (breaking change), fixed on XAMCORE_4_0 -!incorrect-protocol-member! UIViewControllerContextTransitioning::pauseInteractiveTransition is REQUIRED and should be abstract -!incorrect-protocol-member! UIViewControllerTransitionCoordinator::notifyWhenInteractionChangesUsingBlock: is REQUIRED and should be abstract -!incorrect-protocol-member! UIViewControllerTransitionCoordinatorContext::isInterruptible is REQUIRED and should be abstract -!incorrect-protocol-member! UIFocusEnvironment::preferredFocusEnvironments is REQUIRED and should be abstract -!incorrect-protocol-member! UITextDocumentProxy::documentInputMode is REQUIRED and should be abstract -!incorrect-protocol-member! UITextDocumentProxy::documentIdentifier is REQUIRED and should be abstract -!incorrect-protocol-member! UITextDocumentProxy::selectedText is REQUIRED and should be abstract -!incorrect-protocol-member! UILayoutSupport::bottomAnchor is REQUIRED and should be abstract -!incorrect-protocol-member! UILayoutSupport::heightAnchor is REQUIRED and should be abstract -!incorrect-protocol-member! UILayoutSupport::topAnchor is REQUIRED and should be abstract - -## Not bound intentionally, Factory method FromDisplayP3 is available and adding this as a ctor would make the api usage ugly since signature matches colorWithRed:green:blue:alpha: -!missing-selector! UIColor::initWithDisplayP3Red:green:blue:alpha: not bound - -## It seems that Apple added a setter but it seems it is a mistake on the newly added property radar:27929872 -!missing-selector! UIViewController::setDisablesAutomaticKeyboardDismissal: not bound - -## exception name, not clear if useful -!missing-field! UIApplicationInvalidInterfaceOrientationException not bound - -## fixed for XAMCORE_4_0 -!incorrect-protocol-member! UIDocumentPickerDelegate::documentPicker:didPickDocumentAtURL: is OPTIONAL and should NOT be abstract - -## https://bugzilla.xamarin.com/show_bug.cgi?id=59422 -!missing-pinvoke! UIContentSizeCategoryCompareToCategory is not bound -!missing-pinvoke! UIContentSizeCategoryIsAccessibilityCategory is not bound diff --git a/tests/xtro-sharpie/macOS-AVFoundation.ignore b/tests/xtro-sharpie/macOS-AVFoundation.ignore index cab57bc5a5..a7b73337ed 100644 --- a/tests/xtro-sharpie/macOS-AVFoundation.ignore +++ b/tests/xtro-sharpie/macOS-AVFoundation.ignore @@ -1,3 +1,9 @@ +# from iOS 4.0 to 5.1 +!unknown-field! AVMediaTypeTimedMetadata bound + + +## unsorted + !incorrect-protocol-member! AVFragmentMinding::isAssociatedWithFragmentMinder is REQUIRED and should be abstract !missing-field! AVMediaCharacteristicEasyToRead not bound !missing-field! AVVideoDecompressionPropertiesKey not bound @@ -19,12 +25,9 @@ !missing-selector! AVPlayerItem::isAuthorizationRequiredForPlayback not bound !missing-selector! AVPlayerItem::isContentAuthorizedForPlayback not bound !missing-selector! AVPlayerItem::mediaDataCollectors not bound -!missing-selector! AVPlayerItem::preferredMaximumResolution not bound !missing-selector! AVPlayerItem::removeMediaDataCollector: not bound !missing-selector! AVPlayerItem::requestContentAuthorizationAsynchronouslyWithTimeoutInterval:completionHandler: not bound -!missing-selector! AVPlayerItem::setPreferredMaximumResolution: not bound !missing-selector! AVPlayerItemOutput::itemTimeForCVTimeStamp: not bound -!unknown-field! AVMediaTypeTimedMetadata bound !unknown-native-enum! AVAudioSessionCategoryOptions bound !unknown-native-enum! AVAudioSessionErrorCode bound !unknown-native-enum! AVAudioSessionFlags bound diff --git a/tests/xtro-sharpie/macOS-AVFoundation.todo b/tests/xtro-sharpie/macOS-AVFoundation.todo new file mode 100644 index 0000000000..552d94660f --- /dev/null +++ b/tests/xtro-sharpie/macOS-AVFoundation.todo @@ -0,0 +1,2 @@ +!missing-selector! AVPlayerItem::preferredMaximumResolution not bound +!missing-selector! AVPlayerItem::setPreferredMaximumResolution: not bound diff --git a/tests/xtro-sharpie/macOS-AppKit.ignore b/tests/xtro-sharpie/macOS-AppKit.ignore index bae500762d..1b5f3c5e9c 100644 --- a/tests/xtro-sharpie/macOS-AppKit.ignore +++ b/tests/xtro-sharpie/macOS-AppKit.ignore @@ -1,6 +1,12 @@ -!duplicate-register! _NSDatePickerCellDelegate exists as both AppKit.NSDatePicker/_NSDatePickerCellDelegate and AppKit.NSDatePickerCell/_NSDatePickerCellDelegate -!duplicate-type-name! NSFileWrapperReadingOptions enum exists as both AppKit.NSFileWrapperReadingOptions and Foundation.NSFileWrapperReadingOptions -!duplicate-type-name! NSWritingDirection enum exists as both AppKit.NSWritingDirection and Foundation.NSWritingDirection +# https://bugzilla.xamarin.com/show_bug.cgi?id=30717 +!duplicate-register! _NSDatePickerCellDelegate exists as both AppKit.NSDatePickerCell/_NSDatePickerCellDelegate and AppKit.NSDatePicker/_NSDatePickerCellDelegate + +# Proxy class for NSGraphicsContext internal to AppKit +!unknown-type! NSPrintPreviewGraphicsContext bound + + +## unsorted + !extra-enum-native! NSEventSubtype !extra-protocol-member! unexpected selector NSApplicationDelegate::orderFrontStandardAboutPanel: found !extra-protocol-member! unexpected selector NSApplicationDelegate::orderFrontStandardAboutPanelWithOptions: found @@ -1264,7 +1270,6 @@ !unknown-native-enum! NSWindowLevel bound !unknown-native-enum! NSWindowStyle bound !unknown-type! NSMenuView bound -!unknown-type! NSPrintPreviewGraphicsContext bound !unknown-type! NSRemoteOpenPanel bound !unknown-type! NSRemoteSavePanel bound !wrong-enum-size! NSEventSubtype managed 8 vs native 2 diff --git a/tests/xtro-sharpie/macOS-CoreBluetooth.ignore b/tests/xtro-sharpie/macOS-CoreBluetooth.ignore index 7fcfd0c89d..dd77f972c6 100644 --- a/tests/xtro-sharpie/macOS-CoreBluetooth.ignore +++ b/tests/xtro-sharpie/macOS-CoreBluetooth.ignore @@ -1,9 +1,9 @@ ## old and different name for CBUUIDCharacteristicValidRangeString, removed in Xcode9 headers (27160443) !unknown-field! CBUUIDValidRangeString bound - -## unsorted - +## obsoleted (removed from headers) in iOS 8.4 !extra-protocol-member! unexpected selector CBCentralManagerDelegate::centralManager:didRetrieveConnectedPeripherals: found !extra-protocol-member! unexpected selector CBCentralManagerDelegate::centralManager:didRetrievePeripherals: found + +## obsoleted (removed from headers) in iOS 8.4 !extra-protocol-member! unexpected selector CBPeripheralDelegate::peripheralDidInvalidateServices: found diff --git a/tests/xtro-sharpie/macOS-Foundation.ignore b/tests/xtro-sharpie/macOS-Foundation.ignore index c6327e2063..3abc0b05f0 100644 --- a/tests/xtro-sharpie/macOS-Foundation.ignore +++ b/tests/xtro-sharpie/macOS-Foundation.ignore @@ -1,3 +1,5 @@ +!duplicate-type-name! NSFileWrapperReadingOptions enum exists as both Foundation.NSFileWrapperReadingOptions and AppKit.NSFileWrapperReadingOptions +!duplicate-type-name! NSWritingDirection enum exists as both Foundation.NSWritingDirection and AppKit.NSWritingDirection !extra-designated-initializer! NSScriptCommand::initWithCoder: is incorrectly decorated with an [DesignatedInitializer] attribute !extra-protocol-member! unexpected selector NSURLSessionDelegate::URLSessionDidFinishEventsForBackgroundURLSession: found !missing-designated-initializer! NSAffineTransform::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/macOS-Foundation.todo b/tests/xtro-sharpie/macOS-Foundation.todo new file mode 100644 index 0000000000..b1b8067fc9 --- /dev/null +++ b/tests/xtro-sharpie/macOS-Foundation.todo @@ -0,0 +1,15 @@ +!missing-designated-initializer! NSArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDate::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSISO8601DateFormatter::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSItemProvider::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOutputStream::initToMemory is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSString::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSThread::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSUUID::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/osx.ignore b/tests/xtro-sharpie/osx.ignore index 31768823af..ffbf7b7970 100644 --- a/tests/xtro-sharpie/osx.ignore +++ b/tests/xtro-sharpie/osx.ignore @@ -9,10 +9,6 @@ # fixed in XAMCORE_3_0 -## 8a6099b8027fa8e1ad1e032c731c7f750619303e -!duplicate-type-name! NSFileWrapperReadingOptions enum exists as both AppKit.NSFileWrapperReadingOptions and Foundation.NSFileWrapperReadingOptions -!duplicate-type-name! NSWritingDirection enum exists as both AppKit.NSWritingDirection and Foundation.NSWritingDirection - # Defined in NSObject (NSDeprecatedTextStorageDelegateInterface !extra-protocol-member! unexpected selector NSTextStorageDelegate::textStorageDidProcessEditing: found !extra-protocol-member! unexpected selector NSTextStorageDelegate::textStorageWillProcessEditing: found @@ -54,12 +50,6 @@ !extra-protocol-member! unexpected selector NSOpenSavePanelDelegate::panel:shouldShowFilename: found - -# Easily proven via man -!unknown-pinvoke! kevent bound -!unknown-pinvoke! kqueue bound -!unknown-pinvoke! _NSGetExecutablePath bound - # In header as old style unnamaed enum !unknown-native-enum! IKCellsStyle bound !unknown-native-enum! IKGroupStyle bound @@ -98,11 +88,8 @@ !unknown-field! NSOperationNumber bound !unknown-field! NSTableColumn bound !unknown-field! NSTextMovement bound -!unknown-field! PDFAnnotationHit bound !unknown-field! item bound -# Proxy class for NSGraphicsContext internal to AppKit -!unknown-type! NSPrintPreviewGraphicsContext bound # Not declared in header for macOS unlike iOS but in Security.framework anyway (via nm) @@ -154,7 +141,3 @@ !missing-selector! MTLRenderPassDepthAttachmentDescriptor::setDepthResolveFilter: not bound !missing-selector! MTLSamplerDescriptor::lodAverage not bound !missing-selector! MTLSamplerDescriptor::setLodAverage: not bound - -# Deprecated in the same version of OS X that CBCentral becomes available. The alternative (Identifier property) is bound and available. -!missing-selector! CBCentral::UUID not bound -!missing-selector! CBPeripheral::UUID not bound diff --git a/tests/xtro-sharpie/osx.pending b/tests/xtro-sharpie/osx.pending index 120c7fe87b..3afc473406 100644 --- a/tests/xtro-sharpie/osx.pending +++ b/tests/xtro-sharpie/osx.pending @@ -141,122 +141,6 @@ # --- End of AVFoundation - AVKit --- -# OSX only - API not exposed in XI even if it's in the header files -!missing-selector! NEVPNProtocol::identityReference is not bound -!missing-selector! NEVPNProtocol::setIdentityReference: is not bound - -# https://bugzilla.xamarin.com/show_bug.cgi?id=30717 -!duplicate-register! _NSDatePickerCellDelegate exists as both AppKit.NSDatePickerCell/_NSDatePickerCellDelegate and AppKit.NSDatePicker/_NSDatePickerCellDelegate - - -# should we bother ? - -## *GetTypeID -!missing-pinvoke! AXObserverGetTypeID is not bound -!missing-pinvoke! AXUIElementGetTypeID is not bound -!missing-pinvoke! AXValueGetTypeID is not bound -!missing-pinvoke! CFUserNotificationGetTypeID is not bound -!missing-pinvoke! CFXMLNodeGetTypeID is not bound -!missing-pinvoke! CFXMLParserGetTypeID is not bound -!missing-pinvoke! CGDisplayModeGetTypeID is not bound -!missing-pinvoke! CGDisplayStreamGetTypeID is not bound -!missing-pinvoke! CGDisplayStreamUpdateGetTypeID is not bound -!missing-pinvoke! CGEventGetTypeID is not bound -!missing-pinvoke! CGEventSourceGetTypeID is not bound -!missing-pinvoke! CGPSConverterGetTypeID is not bound -!missing-pinvoke! CMSDecoderGetTypeID is not bound -!missing-pinvoke! CMSEncoderGetTypeID is not bound -!missing-pinvoke! CSIdentityAuthorityGetTypeID is not bound -!missing-pinvoke! CSIdentityGetTypeID is not bound -!missing-pinvoke! CSIdentityQueryGetTypeID is not bound -!missing-pinvoke! CVDisplayLinkGetTypeID is not bound -!missing-pinvoke! CVOpenGLBufferGetTypeID is not bound -!missing-pinvoke! CVOpenGLBufferPoolGetTypeID is not bound -!missing-pinvoke! CVOpenGLTextureCacheGetTypeID is not bound -!missing-pinvoke! CVOpenGLTextureGetTypeID is not bound -!missing-pinvoke! ColorSyncCMMGetTypeID is not bound -!missing-pinvoke! ColorSyncProfileGetTypeID is not bound -!missing-pinvoke! ColorSyncTransformGetTypeID is not bound -!missing-pinvoke! DAApprovalSessionGetTypeID is not bound -!missing-pinvoke! DADiskGetTypeID is not bound -!missing-pinvoke! DASessionGetTypeID is not bound -!missing-pinvoke! DRBurnGetTypeID is not bound -!missing-pinvoke! DRBurnSessionGetTypeID is not bound -!missing-pinvoke! DRCDTextBlockGetTypeID is not bound -!missing-pinvoke! DRDeviceGetTypeID is not bound -!missing-pinvoke! DREraseGetTypeID is not bound -!missing-pinvoke! DREraseSessionGetTypeID is not bound -!missing-pinvoke! DRFileGetTypeID is not bound -!missing-pinvoke! DRFolderGetTypeID is not bound -!missing-pinvoke! DRNotificationCenterGetTypeID is not bound -!missing-pinvoke! DRTrackGetTypeID is not bound -!missing-pinvoke! FSFileOperationGetTypeID is not bound -!missing-pinvoke! FSFileSecurityGetTypeID is not bound -!missing-pinvoke! HIShapeGetTypeID is not bound -!missing-pinvoke! IOHIDDeviceGetTypeID is not bound -!missing-pinvoke! IOHIDElementGetTypeID is not bound -!missing-pinvoke! IOHIDManagerGetTypeID is not bound -!missing-pinvoke! IOHIDQueueGetTypeID is not bound -!missing-pinvoke! IOHIDTransactionGetTypeID is not bound -!missing-pinvoke! IOHIDValueGetTypeID is not bound -!missing-pinvoke! IOSurfaceGetTypeID is not bound -!missing-pinvoke! InkStrokeGetTypeID is not bound -!missing-pinvoke! InkTextGetTypeID is not bound -!missing-pinvoke! LSMMapGetTypeID is not bound -!missing-pinvoke! LSMResultGetTypeID is not bound -!missing-pinvoke! LSMTextGetTypeID is not bound -!missing-pinvoke! LSSharedFileListGetTypeID is not bound -!missing-pinvoke! LSSharedFileListItemGetTypeID is not bound -!missing-pinvoke! MDItemGetTypeID is not bound -!missing-pinvoke! MDLabelGetTypeID is not bound -!missing-pinvoke! MDQueryGetTypeID is not bound -!missing-pinvoke! ODContextGetTypeID is not bound -!missing-pinvoke! ODNodeGetTypeID is not bound -!missing-pinvoke! ODQueryGetTypeID is not bound -!missing-pinvoke! ODRecordGetTypeID is not bound -!missing-pinvoke! ODSessionGetTypeID is not bound -!missing-pinvoke! PasteboardGetTypeID is not bound -!missing-pinvoke! QLPreviewRequestGetTypeID is not bound -!missing-pinvoke! QLThumbnailGetTypeID is not bound -!missing-pinvoke! QLThumbnailRequestGetTypeID is not bound -!missing-pinvoke! SCBondStatusGetTypeID is not bound -!missing-pinvoke! SCDynamicStoreGetTypeID is not bound -!missing-pinvoke! SCNetworkConnectionGetTypeID is not bound -!missing-pinvoke! SCNetworkInterfaceGetTypeID is not bound -!missing-pinvoke! SCNetworkProtocolGetTypeID is not bound -!missing-pinvoke! SCNetworkServiceGetTypeID is not bound -!missing-pinvoke! SCNetworkSetGetTypeID is not bound -!missing-pinvoke! SCPreferencesGetTypeID is not bound -!missing-pinvoke! SKDocumentGetTypeID is not bound -!missing-pinvoke! SKIndexDocumentIteratorGetTypeID is not bound -!missing-pinvoke! SKIndexGetTypeID is not bound -!missing-pinvoke! SKSearchGetTypeID is not bound -!missing-pinvoke! SKSearchGroupGetTypeID is not bound -!missing-pinvoke! SKSearchResultsGetTypeID is not bound -!missing-pinvoke! SKSummaryGetTypeID is not bound -!missing-pinvoke! SecACLGetTypeID is not bound -!missing-pinvoke! SecAccessGetTypeID is not bound -!missing-pinvoke! SecCodeGetTypeID is not bound -!missing-pinvoke! SecDecryptTransformGetTypeID is not bound -!missing-pinvoke! SecDigestTransformGetTypeID is not bound -!missing-pinvoke! SecEncryptTransformGetTypeID is not bound -!missing-pinvoke! SecGroupTransformGetTypeID is not bound -!missing-pinvoke! SecIdentitySearchGetTypeID is not bound -!missing-pinvoke! SecKeychainGetTypeID is not bound -!missing-pinvoke! SecKeychainItemGetTypeID is not bound -!missing-pinvoke! SecKeychainSearchGetTypeID is not bound -!missing-pinvoke! SecPolicySearchGetTypeID is not bound -!missing-pinvoke! SecRequirementGetTypeID is not bound -!missing-pinvoke! SecStaticCodeGetTypeID is not bound -!missing-pinvoke! SecTaskGetTypeID is not bound -!missing-pinvoke! SecTransformGetTypeID is not bound -!missing-pinvoke! SecTrustedApplicationGetTypeID is not bound -!missing-pinvoke! TISInputSourceGetTypeID is not bound -!missing-pinvoke! TranslationGetTypeID is not bound -!missing-pinvoke! VTPixelTransferSessionGetTypeID is not bound -!missing-pinvoke! WSMethodInvocationGetTypeID is not bound -!missing-pinvoke! WSProtocolHandlerGetTypeID is not bound - # Used to remove hard to kill delegate API until XAMCORE_4_0 !extra-protocol-member! unexpected selector CBPeripheralDelegate::xamarin:selector:removed: found !extra-protocol-member! unexpected selector GKMatchDelegate::xamarin:selector:removed: found @@ -364,55 +248,12 @@ ## CoreLocation # False positives, not available on macOS as 10.12 # Mostly __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_X_Y); -!missing-type! CLBeacon not bound -!missing-selector! CLBeacon::accuracy not bound -!missing-selector! CLBeacon::major not bound -!missing-selector! CLBeacon::minor not bound -!missing-selector! CLBeacon::proximity not bound -!missing-selector! CLBeacon::proximityUUID not bound -!missing-selector! CLBeacon::rssi not bound !missing-protocol-member! CLLocationManagerDelegate::locationManager:didRangeBeacons:inRegion: not found -!missing-type! CLBeaconRegion not bound -!missing-selector! CLBeaconRegion::initWithProximityUUID:identifier: not bound -!missing-selector! CLBeaconRegion::initWithProximityUUID:major:identifier: not bound -!missing-selector! CLBeaconRegion::initWithProximityUUID:major:minor:identifier: not bound -!missing-selector! CLBeaconRegion::major not bound -!missing-selector! CLBeaconRegion::minor not bound -!missing-selector! CLBeaconRegion::notifyEntryStateOnDisplay not bound -!missing-selector! CLBeaconRegion::peripheralDataWithMeasuredPower: not bound -!missing-selector! CLBeaconRegion::proximityUUID not bound -!missing-selector! CLBeaconRegion::setNotifyEntryStateOnDisplay: not bound !missing-protocol-member! CLLocationManagerDelegate::locationManager:rangingBeaconsDidFailForRegion:withError: not found -!missing-type! CLFloor not bound -!missing-selector! CLFloor::level not bound -!missing-selector! CLLocation::floor not bound -!missing-type! CLVisit not bound -!missing-selector! CLVisit::arrivalDate not bound -!missing-selector! CLVisit::coordinate not bound -!missing-selector! CLVisit::departureDate not bound -!missing-selector! CLVisit::horizontalAccuracy not bound !missing-protocol-member! CLLocationManagerDelegate::locationManager:didVisit: not found !missing-protocol-member! CLLocationManagerDelegate::locationManager:didUpdateHeading: not found !missing-field! CLTimeIntervalMax not bound !missing-selector! CLLocation::getDistanceFrom: not bound -!missing-selector! CLLocationManager::activityType not bound -!missing-selector! CLLocationManager::setActivityType: not bound -!missing-selector! CLLocationManager::allowDeferredLocationUpdatesUntilTraveled:timeout: not bound -!missing-selector! CLLocationManager::allowsBackgroundLocationUpdates not bound -!missing-selector! CLLocationManager::setAllowsBackgroundLocationUpdates: not bound -!missing-selector! CLLocationManager::heading not bound -!missing-selector! CLLocationManager::headingAvailable not bound -!missing-selector! CLLocationManager::headingFilter not bound -!missing-selector! CLLocationManager::setHeadingFilter: not bound -!missing-selector! CLLocationManager::headingOrientation not bound -!missing-selector! CLLocationManager::setHeadingOrientation: not bound -!missing-selector! CLLocationManager::locationServicesEnabled not bound -!missing-selector! CLLocationManager::pausesLocationUpdatesAutomatically not bound -!missing-selector! CLLocationManager::setPausesLocationUpdatesAutomatically: not bound -!missing-selector! CLLocationManager::rangedRegions not bound -!missing-selector! CLLocationManager::startMonitoringForRegion:desiredAccuracy: not bound -!missing-selector! CLLocationManager::startRangingBeaconsInRegion: not bound -!missing-selector! CLLocationManager::stopRangingBeaconsInRegion: not bound # MediaPlayer API macOS 10.12.2 @@ -444,15 +285,3 @@ !missing-field! MTLDeviceRemovalRequestedNotification not bound !missing-field! MTLDeviceWasAddedNotification not bound !missing-field! MTLDeviceWasRemovedNotification not bound - -## These are not available on macOS even if xtro says so. -!missing-selector! EKCalendarItem::UUID not bound -!missing-selector! EKEvent::birthdayPersonID not bound -!missing-selector! EKEventStore::calendars not bound -!missing-selector! EKEventStore::removeEvent:span:error: not bound -!missing-selector! EKEventStore::saveEvent:span:error: not bound -!missing-selector! EKSource::calendars not bound - -#PDFKit -## Deprecated -!missing-selector! PDFAnnotation::initWithDictionary:forPage: not bound diff --git a/tests/xtro-sharpie/tvOS-AVFoundation.ignore b/tests/xtro-sharpie/tvOS-AVFoundation.ignore index b7f164bb1e..045c38273f 100644 --- a/tests/xtro-sharpie/tvOS-AVFoundation.ignore +++ b/tests/xtro-sharpie/tvOS-AVFoundation.ignore @@ -1,4 +1,11 @@ -!missing-protocol-member! AVAudioPlayerDelegate::audioPlayerEndInterruption:withFlags: not found -!missing-selector! AVPlayerItem::preferredMaximumResolution not bound -!missing-selector! AVPlayerItem::setPreferredMaximumResolution: not bound +## OSX only - but only the member is marked (not the protocol itself) +!missing-protocol! AVFragmentMinding not bound + +## this was tvos 10.2 in Xcode 8.3 and changed to iOS-only in Xcode9 betas +## it's still exposed by AVContentKeySessionDelegate which is available in tvos 10.2 !unknown-type! AVPersistableContentKeyRequest bound + + +## unsorted + +!missing-protocol-member! AVAudioPlayerDelegate::audioPlayerEndInterruption:withFlags: not found diff --git a/tests/xtro-sharpie/tvOS-AVFoundation.todo b/tests/xtro-sharpie/tvOS-AVFoundation.todo new file mode 100644 index 0000000000..552d94660f --- /dev/null +++ b/tests/xtro-sharpie/tvOS-AVFoundation.todo @@ -0,0 +1,2 @@ +!missing-selector! AVPlayerItem::preferredMaximumResolution not bound +!missing-selector! AVPlayerItem::setPreferredMaximumResolution: not bound diff --git a/tests/xtro-sharpie/tvOS-Foundation.ignore b/tests/xtro-sharpie/tvOS-Foundation.ignore index 9db4f74319..ffbf48a740 100644 --- a/tests/xtro-sharpie/tvOS-Foundation.ignore +++ b/tests/xtro-sharpie/tvOS-Foundation.ignore @@ -1,7 +1,13 @@ +## shown as available in iOS 9.3 in tvOS header files (from Xcode 7.3) so normally available in tvOS 9.2 +## In reality it's only available in the simulator, not on AppleTV devices (all fields are null) !missing-field! NSUbiquitousUserDefaultsCompletedInitialSyncNotification not bound !missing-field! NSUbiquitousUserDefaultsDidChangeAccountsNotification not bound !missing-field! NSUserDefaultsSizeLimitExceededNotification not bound -!missing-selector! +NSURLConnection::sendSynchronousRequest:returningResponse:error: not bound ## does not exists in iOS (or tvOS) as a type - but some API refers to it (messy) !unknown-type! NSPortMessage bound + + +## unsorted + +!missing-selector! +NSURLConnection::sendSynchronousRequest:returningResponse:error: not bound diff --git a/tests/xtro-sharpie/tvOS-Foundation.todo b/tests/xtro-sharpie/tvOS-Foundation.todo new file mode 100644 index 0000000000..b1b8067fc9 --- /dev/null +++ b/tests/xtro-sharpie/tvOS-Foundation.todo @@ -0,0 +1,15 @@ +!missing-designated-initializer! NSArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDate::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSISO8601DateFormatter::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSItemProvider::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOutputStream::initToMemory is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSString::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSThread::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSUUID::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/tvOS-GameKit.ignore b/tests/xtro-sharpie/tvOS-GameKit.ignore index eadb454c26..1f94e0d720 100644 --- a/tests/xtro-sharpie/tvOS-GameKit.ignore +++ b/tests/xtro-sharpie/tvOS-GameKit.ignore @@ -1,5 +1,15 @@ +## typedef is used + untyped enum in GKPeerPickerController.h: typedef NSUInteger GKPeerPickerConnectionType +!unknown-native-enum! GKPeerPickerConnectionType bound + +## GKVoiceChatService is not in tvOS so nothing uses GKVoiceChatClient +!missing-protocol! GKVoiceChatClient not bound + +## all members are not available so the protocol is empty +## however this is confusing because some protocols have no members (so it can't just be ignored) !missing-protocol! GKFriendRequestComposeViewControllerDelegate not bound !missing-protocol! GKSavedGameListener not bound + +## GKSession is not in the tvOS API but the GKSessionDelegate is not marked +## looks like mistakes as the API is not used anywhere else +## easier to add later, if needed, than remove !missing-protocol! GKSessionDelegate not bound -!missing-protocol! GKVoiceChatClient not bound -!unknown-native-enum! GKPeerPickerConnectionType bound diff --git a/tests/xtro-sharpie/tvOS-Metal.ignore b/tests/xtro-sharpie/tvOS-Metal.ignore new file mode 100644 index 0000000000..e10bbf91c4 --- /dev/null +++ b/tests/xtro-sharpie/tvOS-Metal.ignore @@ -0,0 +1,2 @@ +## only on macOS (but removing would be a breaking change) +!unknown-native-enum! MTLSamplerBorderColor bound diff --git a/tests/xtro-sharpie/tvOS-UIKit.ignore b/tests/xtro-sharpie/tvOS-UIKit.ignore index 21a6927afe..5e42e4f7fa 100644 --- a/tests/xtro-sharpie/tvOS-UIKit.ignore +++ b/tests/xtro-sharpie/tvOS-UIKit.ignore @@ -1,16 +1,28 @@ -!missing-designated-initializer! UISpringTimingParameters::init is missing an [DesignatedInitializer] attribute -!missing-enum! UIImpactFeedbackStyle not bound -!missing-enum! UINotificationFeedbackType not bound -!missing-enum! UIPreferredPresentationStyle not bound -!missing-protocol! UIActivityItemSource not bound -!missing-protocol! UIPreviewInteractionDelegate not bound -!missing-protocol-member! UIApplicationDelegate::application:handleIntent:completionHandler: not found +## lack of availabilty macros on NSItemProvder.PreferredPresentationStyle - intro says they are not available !missing-selector! NSItemProvider::preferredPresentationStyle not bound !missing-selector! NSItemProvider::setPreferredPresentationStyle: not bound +## and that also means the (enum/returned) type is unused +!missing-enum! UIPreferredPresentationStyle not bound + +## Added on UIAccessibility !missing-selector! NSObject::accessibilityHeaderElements not bound !missing-selector! NSObject::setAccessibilityHeaderElements: not bound -!missing-selector! UIInputViewController::requestSupplementaryLexiconWithCompletion: not bound -!missing-selector! UIScrollView::pinchGestureRecognizer not bound + +## Intent not yet available on tvOS +!missing-protocol-member! UIApplicationDelegate::application:handleIntent:completionHandler: not found + +## Headers says it is available but none of its members or implementor class are available +!missing-protocol! UIPreviewInteractionDelegate not bound + +## enums only exposed from properties marked with UIKIT_CLASS_AVAILABLE_IOS_ONLY(10_0) +!missing-enum! UIImpactFeedbackStyle not bound +!missing-enum! UINotificationFeedbackType not bound + +## Marked as not in tvOS in Xcode 8.2 beta 1 but it's a breaking change and it's fixed only in XAMCORE_4_0 +!unknown-native-enum! UICloudSharingPermissionOptions bound + +## headers are unclear (added in iOS9.1) but Apple web documentation does not show those members +## and several only make sense for the stylus touches !missing-selector! UITouch::altitudeAngle not bound !missing-selector! UITouch::azimuthAngleInView: not bound !missing-selector! UITouch::azimuthUnitVectorInView: not bound @@ -19,7 +31,23 @@ !missing-selector! UITouch::estimationUpdateIndex not bound !missing-selector! UITouch::preciseLocationInView: not bound !missing-selector! UITouch::precisePreviousLocationInView: not bound + +## the signature use UILexicon which is not part of tvOS +!missing-selector! UIInputViewController::requestSupplementaryLexiconWithCompletion: not bound + +## the UIActivityItemSource protocol is not marked as unavailable but all it's members use UIActivityViewController which is not allowed on tvOS +!missing-protocol! UIActivityItemSource not bound + +## confusing header wrt categories, defined in: UIAdaptivePresentations (UIViewController) +## UIPopoverPresentationController, the returned type, is not available in tvOS !missing-selector! UIViewController::popoverPresentationController not bound -!unknown-native-enum! UICloudSharingPermissionOptions bound + +## property not decorated as unavailable but UIPinchGestureRecognizer, the returned type, is not available in tvOS +!missing-selector! UIScrollView::pinchGestureRecognizer not bound + + +## unsorted + +!missing-designated-initializer! UISpringTimingParameters::init is missing an [DesignatedInitializer] attribute !unknown-native-enum! UILineBreakMode bound !unknown-native-enum! UITextAlignment bound diff --git a/tests/xtro-sharpie/tvOS-UIKit.todo b/tests/xtro-sharpie/tvOS-UIKit.todo new file mode 100644 index 0000000000..69f6ba246c --- /dev/null +++ b/tests/xtro-sharpie/tvOS-UIKit.todo @@ -0,0 +1,12 @@ +!missing-designated-initializer! NSLayoutManager::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSShadow::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIBarButtonItem::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIBarItem::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIBezierPath::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UICollectionViewLayout::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UICubicTimingParameters::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIImageAsset::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIKeyCommand::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UIMotionEffect::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UITabBarItem::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! UITraitCollection::init is missing an [DesignatedInitializer] attribute \ No newline at end of file diff --git a/tests/xtro-sharpie/tvos.ignore b/tests/xtro-sharpie/tvos.ignore deleted file mode 100644 index 9f5cd253eb..0000000000 --- a/tests/xtro-sharpie/tvos.ignore +++ /dev/null @@ -1,192 +0,0 @@ -# AVFoundation - -## OSX only - but only the member is marked (not the protocol itself) -!missing-protocol! AVFragmentMinding not bound - -## OSX only - category "AVFragmentedAsset (AVFragmentedAssetTrackInspection)" is not decorated -## but AVFragmentedAsset is only available on 10.11 (so it does not build) -!missing-selector! AVFragmentedAsset::trackWithTrackID: not bound -!missing-selector! AVFragmentedAsset::tracksWithMediaCharacteristic: not bound -!missing-selector! AVFragmentedAsset::tracksWithMediaType: not bound - -## AVCaptureDevice_AVCaptureDeviceAuthorization category over AVCaptureDevice - not in tvOS -!missing-selector! +AVCaptureDevice::authorizationStatusForMediaType: not bound -!missing-selector! +AVCaptureDevice::requestAccessForMediaType:completionHandler: not bound - -## AVCaptureDevice_AVCaptureDeviceColorSpaceSupport category over AVCaptureDevice - not in tvOS -!missing-selector! AVCaptureDevice::activeColorSpace not bound -!missing-selector! AVCaptureDevice::setActiveColorSpace: not bound - -## AVCaptureDevice_AVCaptureDeviceExposure category over AVCaptureDevice - not in tvOS -!missing-selector! AVCaptureDevice::ISO not bound -!missing-selector! AVCaptureDevice::exposureDuration not bound -!missing-selector! AVCaptureDevice::exposureTargetBias not bound -!missing-selector! AVCaptureDevice::exposureTargetOffset not bound -!missing-selector! AVCaptureDevice::lensAperture not bound -!missing-selector! AVCaptureDevice::maxExposureTargetBias not bound -!missing-selector! AVCaptureDevice::minExposureTargetBias not bound -!missing-selector! AVCaptureDevice::setExposureTargetBias:completionHandler: not bound -!missing-selector! AVCaptureDevice::setExposureModeCustomWithDuration:ISO:completionHandler: not bound - -## AVCaptureDevice_AVCaptureDeviceFlash -!missing-selector! AVCaptureDevice::flashMode not bound -!missing-selector! AVCaptureDevice::isFlashActive not bound -!missing-selector! AVCaptureDevice::isFlashAvailable not bound -!missing-selector! AVCaptureDevice::isFlashModeSupported: not bound -!missing-selector! AVCaptureDevice::setFlashMode: not bound - -## AVCaptureDevice_AVCaptureDeviceFocus category over AVCaptureDevice - not in tvOS -!missing-selector! AVCaptureDevice::autoFocusRangeRestriction not bound -!missing-selector! AVCaptureDevice::isAutoFocusRangeRestrictionSupported not bound -!missing-selector! AVCaptureDevice::isSmoothAutoFocusEnabled not bound -!missing-selector! AVCaptureDevice::isSmoothAutoFocusSupported not bound -!missing-selector! AVCaptureDevice::lensPosition not bound -!missing-selector! AVCaptureDevice::setAutoFocusRangeRestriction: not bound -!missing-selector! AVCaptureDevice::setFocusModeLockedWithLensPosition:completionHandler: not bound -!missing-selector! AVCaptureDevice::setSmoothAutoFocusEnabled: not bound -!missing-selector! AVCaptureDevice::isLockingFocusWithCustomLensPositionSupported not bound -!missing-selector! AVCaptureDevice::isLockingWhiteBalanceWithCustomDeviceGainsSupported not bound - -## AVCaptureDevice_AVCaptureDeviceHighDynamicRangeSupport -!missing-selector! AVCaptureDevice::automaticallyAdjustsVideoHDREnabled not bound -!missing-selector! AVCaptureDevice::isVideoHDREnabled not bound -!missing-selector! AVCaptureDevice::setAutomaticallyAdjustsVideoHDREnabled: not bound -!missing-selector! AVCaptureDevice::setVideoHDREnabled: not bound - -## AVCaptureDevice_AVCaptureDeviceLowLightBoost -!missing-selector! AVCaptureDevice::automaticallyEnablesLowLightBoostWhenAvailable not bound -!missing-selector! AVCaptureDevice::isLowLightBoostEnabled not bound -!missing-selector! AVCaptureDevice::isLowLightBoostSupported not bound -!missing-selector! AVCaptureDevice::setAutomaticallyEnablesLowLightBoostWhenAvailable: not bound - -## AVCaptureDevice_AVCaptureDeviceSubjectAreaChangeMonitoring -!missing-selector! AVCaptureDevice::isSubjectAreaChangeMonitoringEnabled not bound -!missing-selector! AVCaptureDevice::setSubjectAreaChangeMonitoringEnabled: not bound - -## AVCaptureDevice_AVCaptureDeviceTorch -!missing-selector! AVCaptureDevice::isTorchActive not bound -!missing-selector! AVCaptureDevice::isTorchAvailable not bound -!missing-selector! AVCaptureDevice::setTorchModeOnWithLevel:error: not bound -!missing-selector! AVCaptureDevice::torchLevel not bound - -## AVCaptureDevice_AVCaptureDeviceVideoZoom -!missing-selector! AVCaptureDevice::isRampingVideoZoom not bound -!missing-selector! AVCaptureDevice::rampToVideoZoomFactor:withRate: not bound -!missing-selector! AVCaptureDevice::videoZoomFactor not bound -!missing-selector! AVCaptureDevice::setVideoZoomFactor: not bound - -## AVCaptureDevice_AVCaptureDeviceWhiteBalance -!missing-selector! AVCaptureDevice::chromaticityValuesForDeviceWhiteBalanceGains: not bound -!missing-selector! AVCaptureDevice::deviceWhiteBalanceGains not bound -!missing-selector! AVCaptureDevice::deviceWhiteBalanceGainsForChromaticityValues: not bound -!missing-selector! AVCaptureDevice::deviceWhiteBalanceGainsForTemperatureAndTintValues: not bound -!missing-selector! AVCaptureDevice::grayWorldDeviceWhiteBalanceGains not bound -!missing-selector! AVCaptureDevice::maxWhiteBalanceGain not bound -!missing-selector! AVCaptureDevice::setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:completionHandler: not bound -!missing-selector! AVCaptureDevice::temperatureAndTintValuesForDeviceWhiteBalanceGains: not bound - -## AVCaptureStillImageOutput_BracketedCaptureMethods category over AVCaptureStillImageOutput - not in tvOS (and deprecated) -!missing-selector! AVCaptureStillImageOutput::captureStillImageBracketAsynchronouslyFromConnection:withSettingsArray:completionHandler: not bound -!missing-selector! AVCaptureStillImageOutput::isLensStabilizationDuringBracketedCaptureEnabled not bound -!missing-selector! AVCaptureStillImageOutput::isLensStabilizationDuringBracketedCaptureSupported not bound -!missing-selector! AVCaptureStillImageOutput::maxBracketedCaptureStillImageCount not bound -!missing-selector! AVCaptureStillImageOutput::prepareToCaptureStillImageBracketFromConnection:withSettingsArray:completionHandler: not bound -!missing-selector! AVCaptureStillImageOutput::setLensStabilizationDuringBracketedCaptureEnabled: not bound - - -# Foundation - -## shown as available in iOS 9.3 in tvOS header files (from Xcode 7.3) so normally available in tvOS 9.2 -## In reality it's only available in the simulator, not on AppleTV devices (all fields are null) -!missing-field! NSUbiquitousUserDefaultsCompletedInitialSyncNotification not bound -!missing-field! NSUbiquitousUserDefaultsDidChangeAccountsNotification not bound -!missing-field! NSUserDefaultsSizeLimitExceededNotification not bound - - -# GameKit - -## all members are not available so the protocol is empty -## however this is confusing because some protocols have no members (so it can't just be ignored) -!missing-protocol! GKFriendRequestComposeViewControllerDelegate not bound -!missing-protocol! GKSavedGameListener not bound - -## GKSession is not in the tvOS API but the GKSessionDelegate is not marked -## looks like mistakes as the API is not used anywhere else -## easier to add later, if needed, than remove -!missing-protocol! GKSessionDelegate not bound -!missing-selector! GKSessionDelegate::session:connectionWithPeerFailed:withError: not bound -!missing-selector! GKSessionDelegate::session:didFailWithError: not bound -!missing-selector! GKSessionDelegate::session:didReceiveConnectionRequestFromPeer: not bound -!missing-selector! GKSessionDelegate::session:peer:didChangeState: not bound - -## GKVoiceChatService is not in tvOS so nothing uses GKVoiceChatClient -!missing-protocol! GKVoiceChatClient not bound -!missing-selector! GKVoiceChatClient::participantID not bound -!missing-selector! GKVoiceChatClient::voiceChatService:didNotStartWithParticipantID:error: not bound -!missing-selector! GKVoiceChatClient::voiceChatService:didReceiveInvitationFromParticipantID:callID: not bound -!missing-selector! GKVoiceChatClient::voiceChatService:didStartWithParticipantID: not bound -!missing-selector! GKVoiceChatClient::voiceChatService:didStopWithParticipantID:error: not bound -!missing-selector! GKVoiceChatClient::voiceChatService:sendData:toParticipantID: not bound -!missing-selector! GKVoiceChatClient::voiceChatService:sendRealTimeData:toParticipantID: not bound - -## type is not available in tvOS but it's defined multiple times in the headers (so it gets picked up without the __TVOS_UNAVAILABLE) -!missing-selector! GKFriendRequestComposeViewController::addRecipientPlayers: not bound - - -# UIKit - -## Implemented in managed code -!missing-selector! UIColor::getHue:saturation:brightness:alpha: not bound -!missing-selector! UIColor::getRed:green:blue:alpha: not bound - -## the UIActivityItemSource protocol is not marked as unavailable but all it's members use -## UIActivityViewController which is not allowed on tvOS -!missing-protocol! UIActivityItemSource not bound -!missing-selector! UIActivityItemSource::activityViewController:dataTypeIdentifierForActivityType: not bound -!missing-selector! UIActivityItemSource::activityViewController:itemForActivityType: not bound -!missing-selector! UIActivityItemSource::activityViewController:subjectForActivityType: not bound -!missing-selector! UIActivityItemSource::activityViewController:thumbnailImageForActivityType:suggestedSize: not bound -!missing-selector! UIActivityItemSource::activityViewControllerPlaceholderItem: not bound - -## HACK (as documented in uikit.cs) -!incorrect-protocol-member! UITextInputTraits::setAutocapitalizationType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setAutocorrectionType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setEnablesReturnKeyAutomatically: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setKeyboardAppearance: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setKeyboardType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setReturnKeyType: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setSecureTextEntry: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::setSpellCheckingType: is OPTIONAL and should NOT be abstract - -## We only define tintColor on UIView, not on the subclasses (not needed for us) -!missing-selector! UIButton::setTintColor: not bound -!missing-selector! UIButton::tintColor not bound -!missing-selector! UIImageView::setTintColor: not bound -!missing-selector! UIImageView::tintColor not bound -!missing-selector! UINavigationBar::setTintColor: not bound -!missing-selector! UINavigationBar::tintColor not bound -!missing-selector! UISearchBar::setTintColor: not bound -!missing-selector! UISearchBar::tintColor not bound -!missing-selector! UISegmentedControl::setTintColor: not bound -!missing-selector! UISegmentedControl::tintColor not bound -!missing-selector! UITabBar::setTintColor: not bound -!missing-selector! UITabBar::tintColor not bound -!missing-selector! UITableViewHeaderFooterView::setTintColor: not bound -!missing-selector! UITableViewHeaderFooterView::tintColor not bound - -## lack of availabilty macros on NSItemProvder.PreferredPresentationStyle - intro says they are not available -!missing-selector! NSItemProvider::preferredPresentationStyle not bound -!missing-selector! NSItemProvider::setPreferredPresentationStyle: not bound -## and that also means the (enum/returned) type is unused -!missing-enum! UIPreferredPresentationStyle not bound - -## Added on UIAccessibility -!missing-selector! NSObject::accessibilityHeaderElements not bound -!missing-selector! NSObject::setAccessibilityHeaderElements: not bound - - -# OpenTK - -## never been exposed in XI either -!missing-pinvoke! CVOpenGLESTextureCacheGetTypeID is not bound -!missing-pinvoke! CVOpenGLESTextureGetTypeID is not bound diff --git a/tests/xtro-sharpie/tvos.pending b/tests/xtro-sharpie/tvos.pending deleted file mode 100644 index 97cf454a95..0000000000 --- a/tests/xtro-sharpie/tvos.pending +++ /dev/null @@ -1,164 +0,0 @@ -# AVFoundation - -## there's no *Capture* possibility on AppleTV - looks like an Apple mistake -!missing-field! AVCaptureExposureDurationCurrent not bound -!missing-field! AVCaptureExposureTargetBiasCurrent not bound -!missing-field! AVCaptureISOCurrent not bound -!missing-field! AVCaptureLensPositionCurrent not bound -!missing-field! AVCaptureMaxAvailableTorchLevel not bound -!missing-field! AVCaptureWhiteBalanceGainsCurrent not bound - -## this was tvos 10.2 in Xcode 8.3 and changed to iOS-only in Xcode9 betas -## it's still exposed by AVContentKeySessionDelegate which is available in tvos 10.2 -!unknown-type! AVPersistableContentKeyRequest bound - - -# CloudKit - -## Apple added the API / headers but they are not included by default (so xtro do not have it) -!unknown-type! CKFetchWebAuthTokenOperation bound - - -# CoreMedia - -## kCMFormatDescription* are not bound for iOS either (common.unclassified) -!missing-field! kCMFormatDescriptionYCbCrMatrix_DCI_P3 not bound -!missing-field! kCMFormatDescriptionYCbCrMatrix_P3_D65 not bound - - -# GameplayKit - -## Xcode 7.1 added those types - but they are not in Xcode 7.2 SDK ??? Apple merge conflict -!unknown-type! GKHybridStrategist bound -!unknown-type! GKMonteCarloStrategist bound -!unknown-type! GKQuadTree bound -!unknown-type! GKQuadTreeNode bound - - -# Metal - -## new Apple abstract member (breaking change) fixed in XAMCORE_4_0 -!incorrect-protocol-member! MTLRenderCommandEncoder::setDepthClipMode: is REQUIRED and should be abstract - -## only on macOS (but removing would be a vreaking change) -!unknown-native-enum! MTLSamplerBorderColor bound - - - - -# Security - -## Xcode 8 beta (tvOS 10) marked them with __TVOS_UNAVAILABLE so we'll not expose them in 9.x -!missing-pinvoke! SecAddSharedWebCredential is not bound -!missing-pinvoke! SecCreateSharedWebCredentialPassword is not bound -!missing-pinvoke! SecRequestSharedWebCredential is not bound -!missing-field! kSecSharedPassword not bound - - -# UIKit - -# TODO: MUST BE FIXED by SR0 or SR1 of iOS 10 related bug https://bugzilla.xamarin.com/show_bug.cgi?id=43579 -!missing-protocol-member! UITextFieldDelegate::textFieldDidEndEditing:reason: not found -!missing-protocol-member! UITextViewDelegate::textView:shouldInteractWithTextAttachment:inRange:interaction: not found -!missing-protocol-member! UITextViewDelegate::textView:shouldInteractWithURL:inRange:interaction: not found - -## Apple docs: This property is inherited from the UIView parent class. This class changes the default value of this property to NO. -!missing-selector! UIImageView::isUserInteractionEnabled not bound -!missing-selector! UIImageView::setUserInteractionEnabled: not bound -!missing-selector! UILabel::isUserInteractionEnabled not bound -!missing-selector! UILabel::setUserInteractionEnabled: not bound - -## headers are unclear (added in iOS9.1) but Apple web documentation does not show those members -## and several only make sense for the stylus touches -!missing-selector! UITouch::altitudeAngle not bound -!missing-selector! UITouch::azimuthAngleInView: not bound -!missing-selector! UITouch::azimuthUnitVectorInView: not bound -!missing-selector! UITouch::estimatedProperties not bound -!missing-selector! UITouch::estimatedPropertiesExpectingUpdates not bound -!missing-selector! UITouch::estimationUpdateIndex not bound -!missing-selector! UITouch::preciseLocationInView: not bound -!missing-selector! UITouch::precisePreviousLocationInView: not bound - -## confusing header wrt categories, defined in: UIAdaptivePresentations (UIViewController) -## UIPopoverPresentationController, the returned type, is not available in tvOS -!missing-selector! UIViewController::popoverPresentationController not bound - -## property not decorated as unavailable but -## UIPinchGestureRecognizer, the returned type, is not available in tvOS -!missing-selector! UIScrollView::pinchGestureRecognizer not bound - -## the signature use UILexicon which is not part of tvOS -!missing-selector! UIInputViewController::requestSupplementaryLexiconWithCompletion: not bound - -## the [Sealed] attributes removes the [Export] one so it seems missing (but it's not) -!missing-selector! UIGestureRecognizer::ignorePress:forEvent: not bound - -## UIAccessibilityContainer is an informal protocol -## that we bound as a protocol but is (objc encoding) a category -!missing-selector! NSObject::accessibilityElementAtIndex: not bound -!missing-selector! NSObject::accessibilityElements not bound -!missing-selector! NSObject::indexOfAccessibilityElement: not bound -!missing-selector! NSObject::setAccessibilityElements: not bound - -## It's a ObjC Category / .NET static type so it's assumed the selector is for an instance -## and as it's a really static (both ways). That fails at xtro verification (can't know it's -## static). That's weird construct with managed helper method (so it looks ok) -!missing-selector! +NSAttributedString::attributedStringWithAttachment: not bound - -## fixed in XAMCORE_4_0 - API break -!incorrect-protocol-member! UIDynamicAnimatorDelegate::dynamicAnimatorDidPause: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UIDynamicAnimatorDelegate::dynamicAnimatorWillResume: is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UILayoutSupport::bottomAnchor is REQUIRED and should be abstract -!incorrect-protocol-member! UILayoutSupport::heightAnchor is REQUIRED and should be abstract -!incorrect-protocol-member! UILayoutSupport::topAnchor is REQUIRED and should be abstract - -## it's technically optional but there's no point in adopting the protocol if you do not provide the implemenation -!incorrect-protocol-member! UIInputViewAudioFeedback::enableInputClicksWhenVisible is OPTIONAL and should NOT be abstract - -## static method cannot be overriden "normally" they must be re-exposed with [Export] -!incorrect-protocol-member! +UIPopoverBackgroundViewMethods::arrowBase is REQUIRED and should be abstract -!incorrect-protocol-member! +UIPopoverBackgroundViewMethods::arrowHeight is REQUIRED and should be abstract -!incorrect-protocol-member! +UIPopoverBackgroundViewMethods::contentViewInsets is REQUIRED and should be abstract - -## hack to get them inlined into UITextView and UITextField -!incorrect-protocol-member! UITextInputTraits::autocapitalizationType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::autocorrectionType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::enablesReturnKeyAutomatically is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::isSecureTextEntry is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::keyboardAppearance is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::keyboardType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::returnKeyType is OPTIONAL and should NOT be abstract -!incorrect-protocol-member! UITextInputTraits::spellCheckingType is OPTIONAL and should NOT be abstract - -## Headers says it is available but none of its members or implementor class are available -!missing-protocol! UIPreviewInteractionDelegate not bound - -## Header says they are available in tvOS but intro says nope nope nope radar:27929711 -## Undefined _OBJC_CLASS_$_UICloudSharingController -!missing-protocol! UICloudSharingControllerDelegate not bound -!missing-type! UICloudSharingController not bound -!missing-selector! UICloudSharingController::availablePermissions not bound -!missing-selector! UICloudSharingController::delegate not bound -!missing-selector! UICloudSharingController::initWithPreparationHandler: not bound -!missing-selector! UICloudSharingController::initWithShare:container: not bound -!missing-selector! UICloudSharingController::setAvailablePermissions: not bound -!missing-selector! UICloudSharingController::setDelegate: not bound -!missing-selector! UICloudSharingController::share not bound - -## It seems that Apple added a setter but it seems it is a mistake on the newly added property radar:27929872 -!missing-selector! UIViewController::setDisablesAutomaticKeyboardDismissal: not bound - -## enums only exposed from properties marked with UIKIT_CLASS_AVAILABLE_IOS_ONLY(10_0) -!missing-enum! UIImpactFeedbackStyle not bound -!missing-enum! UINotificationFeedbackType not bound - -## Marked as not in tvOS in Xcode 8.2 beta 1 but it's a breaking change and it's fixed only in XAMCORE_4_0 -!unknown-native-enum! UICloudSharingPermissionOptions bound - -## Intent not yet available on tvOS -!missing-protocol-member! UIApplicationDelegate::application:handleIntent:completionHandler: not found - -## CoreNFC has just enums available in Xcode 9 Beta 1 -!missing-enum! NFCReaderError not bound -!missing-enum! NFCTagType not bound -!missing-enum! NFCTypeNameFormat not bound \ No newline at end of file diff --git a/tests/xtro-sharpie/watchOS-Foundation.ignore b/tests/xtro-sharpie/watchOS-Foundation.ignore index 6d9a404cb5..c56153cb4c 100644 --- a/tests/xtro-sharpie/watchOS-Foundation.ignore +++ b/tests/xtro-sharpie/watchOS-Foundation.ignore @@ -1,2 +1,5 @@ ## does not exists in iOS (or watchOS) as a type - but some API refers to it (messy) !unknown-type! NSPortMessage bound + +## type was not marked as unavailable before Xcode9 +!unknown-type! NSUbiquitousKeyValueStore bound diff --git a/tests/xtro-sharpie/watchOS-Foundation.todo b/tests/xtro-sharpie/watchOS-Foundation.todo new file mode 100644 index 0000000000..b1b8067fc9 --- /dev/null +++ b/tests/xtro-sharpie/watchOS-Foundation.todo @@ -0,0 +1,15 @@ +!missing-designated-initializer! NSArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDate::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSISO8601DateFormatter::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSItemProvider::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableArray::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableDictionary::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSMutableSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOrderedSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSOutputStream::initToMemory is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSSet::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSString::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSThread::init is missing an [DesignatedInitializer] attribute +!missing-designated-initializer! NSUUID::init is missing an [DesignatedInitializer] attribute diff --git a/tests/xtro-sharpie/watchOS-Intents.ignore b/tests/xtro-sharpie/watchOS-Intents.ignore index 29b636f9be..3a29cace69 100644 --- a/tests/xtro-sharpie/watchOS-Intents.ignore +++ b/tests/xtro-sharpie/watchOS-Intents.ignore @@ -1,5 +1,14 @@ -!missing-enum! INBookRestaurantReservationIntentCode not bound +## Deprecated so not exposing it into Xamarin.Watch.dll +##!missing-selector! INRequestRideIntent::initWithPickupLocation:dropOffLocation:rideOptionName:partySize:paymentMethod: not bound !missing-selector! INRideDriver::initWithPersonHandle:nameComponents:displayName:image:rating:phoneNumber: not bound + +## False positive the class INBookRestaurantReservationIntentResponse is not available on watchOS +!missing-enum! INBookRestaurantReservationIntentCode not bound + +## Bound with no availability information, removing them is a breaking change +## but I am not sure if they should be in WatchOS since they are from last year +## and seems that intro did not complain, also there are others INCar* that are +## explicitly available in WatchOS !unknown-type! INCarAirCirculationModeResolutionResult bound !unknown-type! INCarAudioSourceResolutionResult bound !unknown-type! INCarDefrosterResolutionResult bound diff --git a/tests/xtro-sharpie/watchOS-UIKit.todo b/tests/xtro-sharpie/watchOS-UIKit.todo new file mode 100644 index 0000000000..5514ead7b2 --- /dev/null +++ b/tests/xtro-sharpie/watchOS-UIKit.todo @@ -0,0 +1 @@ +!missing-designated-initializer! UIBezierPath::init is missing an [DesignatedInitializer] attribute \ No newline at end of file diff --git a/tests/xtro-sharpie/watchos.ignore b/tests/xtro-sharpie/watchos.ignore deleted file mode 100644 index d2eed4dfa0..0000000000 --- a/tests/xtro-sharpie/watchos.ignore +++ /dev/null @@ -1,17 +0,0 @@ -# UNLIKELY TO BE EVER FIXED - - -# UIKit - -## Implemented in managed code -!missing-selector! UIColor::getHue:saturation:brightness:alpha: not bound -!missing-selector! UIColor::getRed:green:blue:alpha: not bound - -## Not implemented (ctor signature conflict) but there's a static method available that does the job -!missing-selector! UIColor::initWithHue:saturation:brightness:alpha: not bound - - -# Apple internals (we do not expose them) - -!missing-field! _NSConstantStringClassReference not bound - diff --git a/tests/xtro-sharpie/watchos.pending b/tests/xtro-sharpie/watchos.pending deleted file mode 100644 index e76b9d1e74..0000000000 --- a/tests/xtro-sharpie/watchos.pending +++ /dev/null @@ -1,67 +0,0 @@ -# TO BE FIXED - but maybe only in the far future / profiles - - -# Foundation - -## type was not marked as unavailable before Xcode9 -!unknown-type! NSUbiquitousKeyValueStore bound - - - -# Intents - -## Deprecated so not exposing it into Xamarin.Watch.dll -!missing-selector! INRequestRideIntent::initWithPickupLocation:dropOffLocation:rideOptionName:partySize:paymentMethod: not bound -!missing-selector! INRideDriver::initWithHandle:displayName:image:rating:phoneNumber: not bound -!missing-selector! INRideDriver::initWithHandle:nameComponents:image:rating:phoneNumber: not bound -!missing-selector! INRideDriver::initWithPersonHandle:nameComponents:displayName:image:rating:phoneNumber: not bound -!missing-selector! INRideOption::identifier not bound -!missing-selector! INRideOption::setIdentifier: not bound - -## False positive the class INBookRestaurantReservationIntentResponse is not available on watchOS -!missing-enum! INBookRestaurantReservationIntentCode not bound - -## INPayBillIntentHandling && INSearchForBillsIntentHandling are new protocols added in iOS 10.3. This two protocols -## were added to the existing Protocol INPaymentsDomainHandling so making this two required would be a breaking change -!incorrect-protocol-member! INPayBillIntentHandling::handlePayBill:completion: is REQUIRED and should be abstract -!incorrect-protocol-member! INSearchForBillsIntentHandling::handleSearchForBills:completion: is REQUIRED and should be abstract - -## Waiting on a radar https://trello.com/c/h8xBlKTt -!missing-selector! +INPreferences::requestSiriAuthorization: not bound - -## Bound with no availability information, removing them is a breaking change -## but I am not sure if they should be in WatchOS since they are from last year -## and seems that intro did not complain, also there are others INCar* that are -## explicitly available in WatchOS -!unknown-type! INCarAirCirculationModeResolutionResult bound -!unknown-type! INCarAudioSourceResolutionResult bound -!unknown-type! INCarDefrosterResolutionResult bound -!unknown-type! INCarSeatResolutionResult bound -!unknown-type! INRadioTypeResolutionResult bound -!unknown-type! INRelativeReferenceResolutionResult bound -!unknown-type! INRelativeSettingResolutionResult bound - -## Added and removed in watchOS 4 -!missing-selector! +INNotebookItemTypeResolutionResult::disambiguationWithValuesToDisambiguate: not bound - - -# UIKit - -## Not bound intentionally, Factory method FromDisplayP3 is available and adding this as a ctor would make the api usage ugly since signature matches colorWithRed:green:blue:alpha: -!missing-selector! UIColor::initWithDisplayP3Red:green:blue:alpha: not bound - - -# others - -## might not be usable unless our ToString output is parsable as an input (includes locale issues) -!missing-pinvoke! CFUUIDCreateFromString is not bound -!missing-pinvoke! CGAffineTransformFromString is not bound -!missing-pinvoke! CGPointFromString is not bound -!missing-pinvoke! CGRectFromString is not bound -!missing-pinvoke! CGSizeFromString is not bound -!missing-pinvoke! NSStringFromCGAffineTransform is not bound -!missing-pinvoke! NSStringFromCGPoint is not bound -!missing-pinvoke! NSStringFromCGRect is not bound -!missing-pinvoke! NSStringFromCGSize is not bound -!missing-pinvoke! NSStringFromUIOffset is not bound -!missing-pinvoke! UIOffsetFromString is not bound diff --git a/tests/xtro-sharpie/xtro-report/Reporter.cs b/tests/xtro-sharpie/xtro-report/Reporter.cs index 5caa4619a8..47520c968c 100644 --- a/tests/xtro-sharpie/xtro-report/Reporter.cs +++ b/tests/xtro-sharpie/xtro-report/Reporter.cs @@ -90,6 +90,8 @@ namespace Extrospection { static string InputDirectory { get; set; } static string ReportFolder { get; set; } + static List Frameworks = new List (); + static readonly string [] Platforms = new [] { "iOS", "tvOS", "watchOS", "macOS" }; public static bool ProcessFramework (string framework) @@ -145,6 +147,14 @@ namespace Extrospection { return count; } + static void AddFramework (string file) + { + var filename = Path.GetFileNameWithoutExtension (file); + var fx = filename.Substring (filename.IndexOf ('-') + 1); + if (!Frameworks.Contains (fx)) + Frameworks.Add (fx); + } + public static int Main (string [] args) { InputDirectory = args.Length == 0 ? "." : args [0]; @@ -154,7 +164,6 @@ namespace Extrospection { int width = 100 / ((full ? 2 : 1) + (full ? 3 : 2) * Platforms.Length); - var frameworks = new List (); var allfiles = new List (); ReportFolder = args.Length > 1 ? args [1] : "report"; @@ -176,17 +185,14 @@ namespace Extrospection { log.WriteLine (""); log.WriteLine (""); - if (full) { + if (full) log.WriteLine ($"Common"); - foreach (var platform in Platforms) { + foreach (var platform in Platforms) { + if (full) log.WriteLine ($"{platform}"); - var files = Directory.GetFiles (InputDirectory, $"{platform}-*.ignore"); - foreach (var file in files) { - var filename = Path.GetFileNameWithoutExtension (file); - var fx = filename.Substring (filename.IndexOf ('-') + 1); - if (!frameworks.Contains (fx)) - frameworks.Add (fx); - } + var files = Directory.GetFiles (InputDirectory, $"{platform}-*.ignore"); + foreach (var file in files) { + AddFramework (file); } } foreach (var platform in Platforms) { @@ -194,10 +200,11 @@ namespace Extrospection { var files = Directory.GetFiles (InputDirectory, $"{platform}-*.unclassified"); foreach (var file in files) { allfiles.Add (file); - var filename = Path.GetFileNameWithoutExtension (file); - var fx = filename.Substring (filename.IndexOf ('-') + 1); - if (!frameworks.Contains (fx)) - frameworks.Add (fx); + AddFramework (file); + } + var todos = Directory.GetFiles (InputDirectory, $"{platform}-*.todo"); + foreach (var file in todos) { + AddFramework (file); } } foreach (var platform in Platforms) @@ -216,8 +223,8 @@ namespace Extrospection { var todo = new int [Platforms.Length]; int errors = 0; - frameworks.Sort (); - foreach (var fx in frameworks) { + Frameworks.Sort (); + foreach (var fx in Frameworks) { if (Filter (fx)) continue; log.WriteLine (""); @@ -250,8 +257,8 @@ namespace Extrospection { } } for (int i = 0; i < Platforms.Length; i++) { - string filename = $"{InputDirectory}/{Platforms [i]}-{fx}.unclassified"; - var count = ProcessFile (filename); + string filename = $"{Platforms [i]}-{fx}.unclassified"; + var count = ProcessFile (Path.Combine (InputDirectory, filename)); log.Write ("-"); @@ -262,8 +269,8 @@ namespace Extrospection { errors += count; } for (int i = 0; i < Platforms.Length; i++) { - string filename = $"{InputDirectory}/{Platforms [i]}-{fx}.todo"; - var count = ProcessFile (filename); + string filename = $"{Platforms [i]}-{fx}.todo"; + var count = ProcessFile (Path.Combine (InputDirectory, filename)); log.Write ("-"); diff --git a/tests/xtro-sharpie/xtro-sanity/Properties/AssemblyInfo.cs b/tests/xtro-sharpie/xtro-sanity/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..5dd3b0da4d --- /dev/null +++ b/tests/xtro-sharpie/xtro-sanity/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("xtro-sanity")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] diff --git a/tests/xtro-sharpie/xtro-sanity/Sanitizer.cs b/tests/xtro-sharpie/xtro-sanity/Sanitizer.cs new file mode 100644 index 0000000000..f0768b5f55 --- /dev/null +++ b/tests/xtro-sharpie/xtro-sanity/Sanitizer.cs @@ -0,0 +1,215 @@ +using System; +using System.Collections.Generic; +using System.IO; + +namespace Extrospection { + class Sanitizer { + + static readonly string [] Platforms = new [] { "iOS", "tvOS", "watchOS", "macOS" }; + + static bool IsEntry (string line) + { + return line.Length > 0 && line [0] == '!'; + } + + // Entries are correct if each line + // * is empty; or + // * starts with a '!' (entries); or + // * starts with a "#" (comments) except for + // * "#!" since it's a commented entry (and should not be committed) + static void CorrectEntries (List entries, string filename) + { + foreach (var entry in entries) { + if (IsEntry (entry)) + continue; + if (entry.Length == 0) + continue; + if (entry [0] != '#') { + Log ($"?bad-entry? '{entry}' in '{filename}'"); + } else if (entry [1] == '!') { + Log ($"?bad-comment? '{entry}' in '{filename}'"); + } + } + } + + // Comments can be duplicated but not entries + static void UniqueEntries (List entries, string filename) + { + for (int i = 0; i < entries.Count; i++) { + var entry = entries [i]; + if (!IsEntry (entry)) + continue; + for (int j = i + 1; j < entries.Count; j++) { + if (entry == entries [j]) + Log ($"?dupe-entry? {entry} in '{filename}'"); + } + } + } + + // it's either common (for all/most) or platform specific - not both + static void NoDuplicateInCommonIgnores () + { + foreach (var kvp in commons) { + var fx = kvp.Key; + var common = kvp.Value; + foreach (var platform in Platforms) { + var p = Path.Combine (directory, $"{platform}-{fx}.ignore"); + if (!File.Exists (p)) + continue; + foreach (var entry in File.ReadAllLines (p)) { + if (!IsEntry (entry)) + continue; + if (!common.Contains (entry)) + continue; + Log ($"?dupe-common? Entry '{entry}' in both 'common-{fx}.ignore' and '{Path.GetFileName (p)}' files"); + } + } + } + } + + // it's either something in our todo list or something we can ignore - not both + static void NoIgnoredTodo () + { + foreach (var file in Directory.GetFiles (directory, "*.todo")) { + var last = file.LastIndexOf ('-'); + var fx = file.Substring (last + 1, file.Length - last - 6); + // check if it's in common or in the same platform + if (commons.TryGetValue (fx, out var common)) { + foreach (var entry in File.ReadAllLines (file)) { + if (!IsEntry (entry)) + continue; + if (common.Contains (entry)) + Log ($"?dupe-todo? Entry '{entry}' in both 'common-{fx}.ignore' and '{Path.GetFileName (file)}' files"); + } + } + var platform = Path.ChangeExtension (file, ".ignore"); + if (File.Exists (platform)) { + var specific = new List (File.ReadAllLines (platform)); + foreach (var entry in File.ReadAllLines (file)) { + if (!IsEntry (entry)) + continue; + if (specific.Contains (entry)) + Log ($"?dupe-todo? Entry '{entry}' in both '{Path.GetFileName (platform)}' and '{Path.GetFileName (file)}' files"); + } + } + } + } + + static string directory; + static Dictionary> commons = new Dictionary> (); + static int count; + + public static void Log (string s) + { + Console.WriteLine (s); + count++; + } + + public static int Main (string [] args) + { + directory = args.Length == 0 ? "." : args [0]; + + // cache stuff + foreach (var file in Directory.GetFiles (directory, "common-*.ignore")) { + var path = Path.GetFileName (file); + var fx = path.Substring (7, path.Length - 14); + var common = new List (File.ReadAllLines (file)); + commons.Add (fx, common); + } + + // *.ignore validations + + // basic sanity for ignores + foreach (var kvp in commons) { + var fx = kvp.Key; + var common = kvp.Value; + CorrectEntries (common, $"common-{fx}.ignore"); + } + foreach (var file in Directory.GetFiles (directory, "*.ignore")) { + var filename = Path.GetFileName (file); + // already processed from cache - don't reload them + if (filename.StartsWith ("common-", StringComparison.Ordinal)) + continue; + var entries = new List (File.ReadAllLines (file)); + CorrectEntries (entries, filename); + } + + // uniqueness - check that each .ignore file has no duplicate + foreach (var kvp in commons) { + var fx = kvp.Key; + var common = kvp.Value; + UniqueEntries (common, $"common-{fx}.ignore"); + } + foreach (var file in Directory.GetFiles (directory, "*.ignore")) { + var entries = new List (File.ReadAllLines (file)); + UniqueEntries (entries, Path.GetFileName (file)); + } + + // platform specific ignore entries should *not* be duplicated in common-*.ignore + NoDuplicateInCommonIgnores (); + + // TODO entries present in all platforms .ignore files should be moved to common + + // ignored entries should all exists in the unfiltered .unclassified (raw) + // * common-{fx}.ignored must be part of _at least_ one *-{fx}.raw file + foreach (var kvp in commons) { + var fx = kvp.Key; + var common = kvp.Value; + //ExistingCommonEntries (common, $"common-{fx}.ignore"); + List [] raws = new List [Platforms.Length]; + for (int i=0; i < raws.Length; i++) { + var fname = Path.Combine (directory, $"{Platforms[i]}-{fx}.raw"); + if (File.Exists (fname)) + raws [i] = new List (File.ReadAllLines (fname)); + else + raws [i] = new List (); + } + foreach (var entry in common) { + if (!entry.StartsWith ("!", StringComparison.Ordinal)) + continue; + bool found = false; + foreach (var platform in raws) { + found = platform.Contains (entry); + if (found) + break; + } + if (!found) + Log ($"?unknown-entry? {entry} in 'common-{fx}.ignore'"); + } + } + // * a platform ignore must existing in it's corresponding raw file + foreach (var file in Directory.GetFiles (directory, "*.ignore")) { + var shortname = Path.GetFileName (file); + if (shortname.StartsWith ("common-", StringComparison.Ordinal)) + continue; + // FIXME temporary hack for old data files + if (!shortname.Contains ("-")) + continue; + var rawfile = Path.ChangeExtension (file, ".raw"); + var raws = new List (File.ReadAllLines (rawfile)); + foreach (var entry in File.ReadAllLines (file)) { + if (!entry.StartsWith ("!", StringComparison.Ordinal)) + continue; + if (raws.Contains (entry)) + continue; + Log ($"?unknown-entry? {entry} in '{shortname}'"); + } + } + + // *.todo validations + + // entries in .todo files should *not* be present in *.ignore files + NoIgnoredTodo (); + + // TODO entries in .todo should be found in .raw files + + if (count == 0) + Console.WriteLine ("Sanity check passed"); + else + Console.WriteLine ($"Sanity check failed ({count})"); + + // useful when updating stuff locally - we report but we don't fail + return Environment.GetEnvironmentVariable ("XTRO_SANITY_SKIP") == "1" ? 0 : count; + } + } +} diff --git a/tests/xtro-sharpie/xtro-sanity/xtro-sanity.csproj b/tests/xtro-sharpie/xtro-sanity/xtro-sanity.csproj new file mode 100644 index 0000000000..be72025d7a --- /dev/null +++ b/tests/xtro-sharpie/xtro-sanity/xtro-sanity.csproj @@ -0,0 +1,39 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {E4D9B627-EF24-43AF-B6F2-60F38694C905} + Exe + xtrosanity + xtro-sanity + v4.6.1 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + true + + + true + bin\Release + prompt + 4 + true + + + + + + + + + + \ No newline at end of file diff --git a/tests/xtro-sharpie/xtro-sharpie.sln b/tests/xtro-sharpie/xtro-sharpie.sln index 6ed7070900..f169617c3b 100644 --- a/tests/xtro-sharpie/xtro-sharpie.sln +++ b/tests/xtro-sharpie/xtro-sharpie.sln @@ -5,6 +5,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xtro-sharpie", "xtro-sharpi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xtro-report", "xtro-report\xtro-report.csproj", "{F3CFAA8D-3D2D-4F7F-9C71-5488CFEB5EB3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xtro-sanity", "xtro-sanity\xtro-sanity.csproj", "{E4D9B627-EF24-43AF-B6F2-60F38694C905}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -19,5 +21,9 @@ Global {F3CFAA8D-3D2D-4F7F-9C71-5488CFEB5EB3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F3CFAA8D-3D2D-4F7F-9C71-5488CFEB5EB3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F3CFAA8D-3D2D-4F7F-9C71-5488CFEB5EB3}.Release|Any CPU.Build.0 = Release|Any CPU + {E4D9B627-EF24-43AF-B6F2-60F38694C905}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E4D9B627-EF24-43AF-B6F2-60F38694C905}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E4D9B627-EF24-43AF-B6F2-60F38694C905}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E4D9B627-EF24-43AF-B6F2-60F38694C905}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal