forked from OSchip/llvm-project
parent
9c148c8fc2
commit
324de7ba46
|
@ -458,6 +458,8 @@ DIAG(err_objc_property_requires_object, ERROR,
|
|||
"property with '%0' attribute must be of object type")
|
||||
DIAG(err_property_type, ERROR,
|
||||
"property cannot have array or function type %0")
|
||||
DIAG(err_property_not_found, ERROR,
|
||||
"property %0 not found on object of type %1")
|
||||
DIAG(err_objc_directive_only_in_protocol, ERROR,
|
||||
"directive may only be specified in protocols only")
|
||||
DIAG(err_missing_catch_finally, ERROR,
|
||||
|
|
|
@ -1348,6 +1348,9 @@ ActOnMemberReferenceExpr(ExprTy *Base, SourceLocation OpLoc,
|
|||
return new ObjCKVCRefExpr(Getter, Getter->getResultType(), Setter,
|
||||
MemberLoc, BaseExpr);
|
||||
}
|
||||
|
||||
return Diag(MemberLoc, diag::err_property_not_found) <<
|
||||
&Member << BaseType;
|
||||
}
|
||||
// Handle properties on qualified "id" protocols.
|
||||
const ObjCQualifiedIdType *QIdTy;
|
||||
|
@ -1364,6 +1367,9 @@ ActOnMemberReferenceExpr(ExprTy *Base, SourceLocation OpLoc,
|
|||
OpLoc, MemberLoc, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return Diag(MemberLoc, diag::err_property_not_found) <<
|
||||
&Member << BaseType;
|
||||
}
|
||||
// Handle 'field access' to vectors, such as 'V.xx'.
|
||||
if (BaseType->isExtVectorType() && OpKind == tok::period) {
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
// RUN: clang -fsyntax-only -verify %s
|
||||
|
||||
// PR3234
|
||||
|
||||
@protocol NSCopying @end
|
||||
@interface NSObject @end
|
||||
|
||||
void f1(NSObject *o)
|
||||
{
|
||||
o.foo; // expected-error{{property 'foo' not found on object of type 'NSObject *'}}
|
||||
}
|
||||
|
||||
void f2(id<NSCopying> o)
|
||||
{
|
||||
o.foo; // expected-error{{property 'foo' not found on object of type 'id<NSCopying>'}}
|
||||
}
|
||||
|
||||
void f3(id o)
|
||||
{
|
||||
o.foo; // expected-error{{member reference base type 'id' is not a structure or union}}
|
||||
}
|
||||
|
Loading…
Reference in New Issue