diff options
author | Steve Naroff <snaroff@apple.com> | 2008-05-30 23:23:16 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2008-05-30 23:23:16 +0000 |
commit | 799a6a6850af625946bb8d88ca960bb6604e3858 (patch) | |
tree | 427d30b61307e0416da1aba98a63330f68efdc29 | |
parent | cd5f4aaf0c219189878126d556f35e38fdb8afa1 (diff) |
Teach Expr::isLvalue() about ObjC properties. For now, all properties are writable. Added a FIXME for another day.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51800 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AST/Expr.cpp | 2 | ||||
-rw-r--r-- | test/Sema/objc-property-6.m | 69 |
2 files changed, 71 insertions, 0 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index eb9add9e12..6b0eb048b9 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -405,6 +405,8 @@ Expr::isLvalueResult Expr::isLvalue() const { return LV_Valid; case ObjCIvarRefExprClass: // ObjC instance variables are lvalues. return LV_Valid; + case ObjCPropertyRefExprClass: // FIXME: check if read-only property. + return LV_Valid; case PreDefinedExprClass: return LV_Valid; case CXXDefaultArgExprClass: diff --git a/test/Sema/objc-property-6.m b/test/Sema/objc-property-6.m new file mode 100644 index 0000000000..a51994d3d4 --- /dev/null +++ b/test/Sema/objc-property-6.m @@ -0,0 +1,69 @@ +// RUN: clang -fsyntax-only -verify %s +# 1 "<command line>" +# 1 "/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h" 1 3 +typedef signed char BOOL; +typedef unsigned int NSUInteger; +typedef struct _NSZone NSZone; + +@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; + +@protocol NSObject +- (BOOL)isEqual:(id)object; ++ class; +@end + +@protocol NSCopying +- (id)copyWithZone:(NSZone *)zone; +@end + +@protocol NSMutableCopying +- (id)mutableCopyWithZone:(NSZone *)zone; +@end + +@protocol NSCoding +- (void)encodeWithCoder:(NSCoder *)aCoder; +@end + +@interface NSObject <NSObject> {} +@end + +typedef struct {} NSFastEnumerationState; + +@protocol NSFastEnumeration +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len; +@end + +@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> +- (NSUInteger)count; +@end + +@interface NSMutableArray : NSArray +- (void)addObject:(id)anObject; ++ (id)arrayWithCapacity:(int)numItems; +@end + +@interface NSBundle : NSObject {} ++ (NSBundle *)bundleForClass:(Class)aClass; +- (NSString *)bundlePath; +- (void)setBundlePath:(NSString *)x; +@end + +@interface NSException : NSObject <NSCopying, NSCoding> {} +@end + +@class NSArray, NSDictionary, NSError, NSString, NSURL; + +@interface DTPlugInManager : NSObject +@end + +@implementation DTPlugInManager ++ (DTPlugInManager *)defaultPlugInManager { + @try { + NSMutableArray *plugInPaths = [NSMutableArray arrayWithCapacity:100]; + NSBundle *frameworkBundle = [NSBundle bundleForClass:[DTPlugInManager class]]; + frameworkBundle.bundlePath = 0; + [plugInPaths addObject:frameworkBundle.bundlePath]; + } + @catch (NSException *exception) {} +} +@end |