of problems with Objective-C object completion. To go along with the LLVM/Clang-side fixes, we have a variety of Objective-C improvements. Fixes include: - It is now possible to run expressions when stopped in an Objective-C class method and have "self" act just like "self" would act in the class method itself (i.e., [self classMethod] works without casting the return type if debug info is present). To accomplish this, the expression masquerades as a class method added by a category. - Objective-C objects can now provide methods and properties and methods to Clang on demand (i.e., the ASTImporter sets hasExternalVisibleDecls on Objective-C interface objects). - Objective-C built-in types, which had long been a bone of contention (should we be using "id"? "id*"?), are now fetched correctly using accessor functions on ClangASTContext. We inhibit searches for them in the debug information. There are also a variety of logging fixes, and I made two changes to the test suite: - Enabled a test case for Objective-C properties in the current translation unit. - Added a test case for calling Objective-C class methods when stopped in a class method. llvm-svn: 144607
30 lines
547 B
Objective-C
30 lines
547 B
Objective-C
#import <Foundation/Foundation.h>
|
|
|
|
@interface Foo : NSObject
|
|
+(void) doSomethingWithString: (NSString *) string;
|
|
-(void) doSomethingWithNothing;
|
|
@end
|
|
|
|
@implementation Foo
|
|
+(void) doSomethingWithString: (NSString *) string
|
|
{
|
|
NSLog (@"String is: %@.", string); // Set breakpoint here.
|
|
}
|
|
|
|
+(int) doSomethingElseWithString: (NSString *) string
|
|
{
|
|
NSLog (@"String is still: %@.", string);
|
|
return [string length];
|
|
}
|
|
|
|
-(void) doSomethingWithNothing
|
|
{
|
|
}
|
|
@end
|
|
|
|
int main()
|
|
{
|
|
[Foo doSomethingWithString: @"Some string I have in mind."];
|
|
return 0;
|
|
}
|