forked from OSchip/llvm-project
Patch to warn when discarding objective-c pointer type qualifiers
Still some refactoring to do. llvm-svn: 90830
This commit is contained in:
parent
a929407244
commit
4569f69558
|
@ -4434,6 +4434,16 @@ Sema::CheckAssignmentConstraints(QualType lhsType, QualType rhsType) {
|
|||
if (rhsType->isObjCObjectPointerType()) {
|
||||
if (lhsType->isObjCBuiltinType() || rhsType->isObjCBuiltinType())
|
||||
return Compatible;
|
||||
QualType lhptee =
|
||||
lhsType->getAs<ObjCObjectPointerType>()->getPointeeType();
|
||||
QualType rhptee =
|
||||
rhsType->getAs<ObjCObjectPointerType>()->getPointeeType();
|
||||
// make sure we operate on the canonical type
|
||||
lhptee = Context.getCanonicalType(lhptee);
|
||||
rhptee = Context.getCanonicalType(rhptee);
|
||||
if (!lhptee.isAtLeastAsQualifiedAs(rhptee))
|
||||
return CompatiblePointerDiscardsQualifiers;
|
||||
|
||||
if (Context.typesAreCompatible(lhsType, rhsType))
|
||||
return Compatible;
|
||||
if (lhsType->isObjCQualifiedIdType() || rhsType->isObjCQualifiedIdType())
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
// RUN: clang-cc -fsyntax-only -verify %s
|
||||
|
||||
typedef signed char BOOL;
|
||||
|
||||
@interface NSString
|
||||
- (BOOL)isEqualToString:(NSString *)aString;
|
||||
@end
|
||||
|
||||
static const NSString * Identifier1 = @"Identifier1";
|
||||
static NSString const * Identifier2 = @"Identifier2";
|
||||
static NSString * const Identifier3 = @"Identifier3";
|
||||
|
||||
int main () {
|
||||
|
||||
[@"Identifier1" isEqualToString:Identifier1]; // expected-warning {{sending 'NSString const *' discards qualifiers, expected 'NSString *'}}
|
||||
[@"Identifier2" isEqualToString:Identifier2]; // expected-warning {{sending 'NSString const *' discards qualifiers, expected 'NSString *'}}
|
||||
[@"Identifier3" isEqualToString:Identifier3];
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue