コード例 #1
0
 public override void VisitObjCCategoryDecl(ObjCCategoryDecl decl, VisitKind visitKind)
 {
     if (visitKind != VisitKind.Enter)
     {
         return;
     }
     foreach (var d in decl.Methods)
     {
         Visit(d);
     }
 }
コード例 #2
0
        public override void VisitObjCCategoryDecl(ObjCCategoryDecl decl, VisitKind visitKind)
        {
            if (visitKind != VisitKind.Enter)
            {
                return;
            }

            var categoryName = decl.Name;

            if (categoryName == null)
            {
                return;
            }

            // check availability macros to see if the API is available on the OS and not deprecated
            if (!decl.IsAvailable())
            {
                return;
            }

            var framework = Helpers.GetFramework(decl);

            if (framework == null)
            {
                return;
            }

            var ciName = decl.ClassInterface.Name;

            if (!type_map_copy.TryGetValue(ciName, out var td))
            {
                // other checks can't be done without an actual type to inspect
                return;
            }

            // check protocols
            foreach (var protocol in decl.Protocols)
            {
                var pname = protocol.Name;
                if (!ImplementProtocol(pname, td))
                {
                    Log.On(framework).Add($"!missing-protocol-conformance! {ciName} should conform to {pname} (defined in '{categoryName}' category)");
                }
            }
        }
コード例 #3
0
        static string GetCategoryBase(ObjCCategoryDecl category)
        {
            // I really dislike doing this
            switch (category.Name)
            {
            case "UIResponderStandardEditActions":
                // we inlined this protocol in UIResponder but Apple has it on NSObject
                return("UIResponder");

            case "UIAccessibility":
                // we inlined this protocol in UIView... but Apple has it on NSObject
                return("UIView");

            case "UIAccessibilityAction":
                // we inlined this protocol in UIResponder but Apple has it on NSObject
                return("UIResponder");

            default:
                return(Helpers.GetManagedName(category.ClassInterface.Name));
            }
        }
コード例 #4
0
 public override void VisitObjCCategoryDecl(ObjCCategoryDecl decl, VisitKind visitKind) => VisitItem(decl, visitKind);