forked from OSchip/llvm-project
Fix crash when assiging to a property with an invalid type
This is a regression from clang 3.4 Set the result to ExprError and returns true, rather than simply returns false because errors have been reported already and returning false show a confusing error llvm-svn: 214734
This commit is contained in:
parent
5002fb5337
commit
4c182c8bb1
|
@ -845,7 +845,12 @@ bool ObjCPropertyOpBuilder::tryBuildGetOfReference(Expr *op,
|
|||
if (!S.getLangOpts().CPlusPlus) return false;
|
||||
|
||||
findGetter();
|
||||
assert(Getter && "property has no setter and no getter!");
|
||||
if (!Getter) {
|
||||
// The property has no setter and no getter! This can happen if the type is
|
||||
// invalid. Error have already been reported.
|
||||
result = ExprError();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Only do this if the getter returns an l-value reference type.
|
||||
QualType resultType = Getter->getReturnType();
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
|
||||
|
||||
@interface I
|
||||
{
|
||||
A* response; // expected-error {{unknown type name 'A'}}
|
||||
}
|
||||
@end
|
||||
@interface I ()
|
||||
@property A* response; // expected-error {{unknown type name 'A'}}
|
||||
@end
|
||||
@implementation I
|
||||
@synthesize response;
|
||||
- (void) foo :(A*) a // expected-error {{expected a type}}
|
||||
{
|
||||
self.response = a;
|
||||
}
|
||||
@end
|
||||
|
||||
|
Loading…
Reference in New Issue