1// UNSUPPORTED: target={{.*}}-aix{{.*}} 2// RUN: rm -rf %t 3// RUN: split-file %s %t 4// RUN: %clang_cc1 -fsyntax-only -I%t/include %t/test.m \ 5// RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache -fmodule-name=CheckOverride 6 7// Test that if we have the same method in a different module, it's not an 8// override as it is the same method and it has the same DeclContext but a 9// different object in the memory. 10 11 12//--- include/CheckOverride.h 13@interface NSObject 14@end 15 16@interface CheckOverrideInterfaceOnly: NSObject 17- (void)potentialOverrideInterfaceOnly; 18@end 19 20@interface CheckOverrideCategoryOnly: NSObject 21@end 22@interface CheckOverrideCategoryOnly(CategoryOnly) 23- (void)potentialOverrideCategoryOnly; 24@end 25 26@interface CheckOverrideImplementationOfInterface: NSObject 27- (void)potentialOverrideImplementationOfInterface; 28@end 29 30@interface CheckOverrideImplementationOfCategory: NSObject 31@end 32@interface CheckOverrideImplementationOfCategory(CategoryImpl) 33- (void)potentialOverrideImplementationOfCategory; 34@end 35 36//--- include/Redirect.h 37// Ensure CheckOverride is imported as the module despite all `-fmodule-name` flags. 38#import <CheckOverride.h> 39 40//--- include/module.modulemap 41module CheckOverride { 42 header "CheckOverride.h" 43} 44module Redirect { 45 header "Redirect.h" 46 export * 47} 48 49//--- test.m 50#import <CheckOverride.h> 51#import <Redirect.h> 52 53@implementation CheckOverrideImplementationOfInterface 54- (void)potentialOverrideImplementationOfInterface {} 55@end 56 57@implementation CheckOverrideImplementationOfCategory 58- (void)potentialOverrideImplementationOfCategory {} 59@end 60 61void triggerOverrideCheck(CheckOverrideInterfaceOnly *intfOnly, 62 CheckOverrideCategoryOnly *catOnly, 63 CheckOverrideImplementationOfInterface *intfImpl, 64 CheckOverrideImplementationOfCategory *catImpl) { 65 [intfOnly potentialOverrideInterfaceOnly]; 66 [catOnly potentialOverrideCategoryOnly]; 67 [intfImpl potentialOverrideImplementationOfInterface]; 68 [catImpl potentialOverrideImplementationOfCategory]; 69} 70