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
This commit is contained in:
Steve Naroff 2008-05-30 23:23:16 +00:00
Родитель cd5f4aaf0c
Коммит 799a6a6850
2 изменённых файлов: 71 добавлений и 0 удалений

Просмотреть файл

@ -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:

Просмотреть файл

@ -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