48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions %s
 | |
| typedef signed char BOOL;
 | |
| typedef struct _NSZone NSZone;
 | |
| 
 | |
| @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
 | |
| 
 | |
| @protocol NSObject
 | |
| - (BOOL)isEqual:(id)object;
 | |
| @end
 | |
| 
 | |
| @protocol NSCopying
 | |
| - (id)copyWithZone:(NSZone *)zone;
 | |
| @end
 | |
| 
 | |
| @protocol NSCoding
 | |
| - (void)encodeWithCoder:(NSCoder *)aCoder;
 | |
| @end
 | |
| 
 | |
| @interface NSObject <NSObject> {}
 | |
| @end
 | |
| 
 | |
| @class NSData, NSArray, NSDictionary, NSCharacterSet, NSData, NSURL, NSError, NSLocale;
 | |
| 
 | |
| @interface NSException : NSObject <NSCopying, NSCoding> {}
 | |
| @end
 | |
| 
 | |
| @class ASTNode, XCRefactoringParser, Transform, TransformInstance, XCRefactoringSelectionInfo;
 | |
| 
 | |
| @interface XCRefactoringTransformation : NSObject {}
 | |
| @end
 | |
| 
 | |
| @implementation XCRefactoringTransformation
 | |
| - (NSDictionary *)setUpInfoForTransformKey:(NSString *)transformKey outError:(NSError **)outError {
 | |
|     @try {}
 | |
|     // the exception name is optional (weird)
 | |
|     @catch (NSException *) {}
 | |
| }
 | |
| @end
 | |
| 
 | |
| int foo() {
 | |
|   struct s { int a, b; } agg, *pagg;
 | |
| 
 | |
|   @throw 42; // expected-error {{@throw requires an Objective-C object type ('int' invalid)}}
 | |
|   @throw agg; // expected-error {{@throw requires an Objective-C object type ('struct s' invalid)}}
 | |
|   @throw pagg; // expected-error {{@throw requires an Objective-C object type ('struct s *' invalid)}}
 | |
|   @throw; // expected-error {{@throw (rethrow) used outside of a @catch block}}
 | |
| }
 |