1// RUN: %check_clang_tidy %s google-objc-avoid-throwing-exception %t -- -- -I %S/Inputs/ 2 3@class NSString; 4 5@interface NSException 6 7+ (void)raise:(NSString *)name format:(NSString *)format; 8+ (void)raise:(NSString *)name format:(NSString *)format arguments:(NSString *)args; // using NSString type since va_list cannot be recognized here 9 10@end 11 12@interface NotException 13 14+ (void)raise:(NSString *)name format:(NSString *)format; 15 16@end 17 18@implementation Foo 19- (void)f { 20 NSString *foo = @"foo"; 21 @throw foo; 22 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: pass in NSError ** instead of throwing exception to indicate Objective-C errors [google-objc-avoid-throwing-exception] 23} 24 25#include "system-header-throw.h" 26 27#define THROW(e) @throw e 28 29#define RAISE [NSException raise:@"example" format:@"fmt"] 30 31- (void)f2 { 32 [NSException raise:@"TestException" format:@"Test"]; 33 // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: pass in NSError ** instead of throwing exception to indicate Objective-C errors [google-objc-avoid-throwing-exception] 34 [NSException raise:@"TestException" format:@"Test %@" arguments:@"bar"]; 35 // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: pass in NSError ** instead of throwing exception to indicate Objective-C errors [google-objc-avoid-throwing-exception] 36 [NotException raise:@"NotException" format:@"Test"]; 37 38 NSException *e; 39 SYS_THROW(e); 40 41 SYS_RAISE; 42 43 THROW(e); 44 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: pass in NSError ** instead of throwing exception to indicate Objective-C errors [google-objc-avoid-throwing-exception] 45 46 RAISE; 47 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: pass in NSError ** instead of throwing exception to indicate Objective-C errors [google-objc-avoid-throwing-exception] 48} 49@end 50 51