diff options
| author | Olivier Goffart <ogoffart@woboq.com> | 2014-08-04 17:28:05 +0000 |
|---|---|---|
| committer | Olivier Goffart <ogoffart@woboq.com> | 2014-08-04 17:28:05 +0000 |
| commit | 4c182c8bb10cb8131389ec1be4b0f9d3e3d03089 (patch) | |
| tree | e88b7706f62fd96c58c24113440119403fda83fa /clang/lib/Sema | |
| parent | 5002fb5337785a8e1051eb218bd6640472244118 (diff) | |
| download | bcm5719-llvm-4c182c8bb10cb8131389ec1be4b0f9d3e3d03089.tar.gz bcm5719-llvm-4c182c8bb10cb8131389ec1be4b0f9d3e3d03089.zip | |
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
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaPseudoObject.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp index c8d34f84e1b..fac7774734c 100644 --- a/clang/lib/Sema/SemaPseudoObject.cpp +++ b/clang/lib/Sema/SemaPseudoObject.cpp @@ -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(); |

