stephanemoore added a comment. I did some digging and I believe there are two approaches that we can take to extend `isDerivedFrom` to support Objective-C classes.
**Option 1: Match on Common Ancestor Declaration Type**: Convert `isDerivedFrom` to match on the common ancestor declaration type, `NamedDecl`, and return `false` for declaration types other than `CXXRecordDecl` and `ObjCInterfaceDecl`. Advantages: • Largely works in-place without requiring major changes to matchers built on top of `isDerivedFrom`. Disadvantages: • Allows nonsensical matchers, e.g., `functionDecl(isDerivedFrom("X"))`. **Option 2: Convert to Polymorphic Matcher**: Convert `isDerivedFrom` to a polymorphic matcher supporting `CXXRecordDecl` and `ObjCInterfaceDecl`. Advantages: • Restricts usage of `isDerivedFrom` to `CXXRecordDecl` and `ObjCInterfaceDecl`. Disadvantages: • Potentially requires many or all matchers using `isDerivedFrom` to refactor to adapt to the polymorphic matcher interface. **Evaluation** I have been going back and forth as to which approach is superior. Option 1 promotes source stability at the cost of usability while option 2 seems to promote usability at the cost of source stability. I exported a portrayal of option 1 for consideration as it required less invasive changes. I can see arguments supporting both approaches. What do you think? Which of the two approaches do you think we should go with? Is there another approach that I have not thought of? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D60543/new/ https://reviews.llvm.org/D60543 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits