summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2014-09-15 21:19:39 +0000
committerFariborz Jahanian <fjahanian@apple.com>2014-09-15 21:19:39 +0000
commitdf91c927e8223260b39b61b50b2487c1a6a88d44 (patch)
tree57733d7271304f0c1b5b93cc74a15f860f143f6d /clang/lib/Sema
parentb67140b81245c4c3c428225ba2a928b105ee00ef (diff)
downloadbcm5719-llvm-df91c927e8223260b39b61b50b2487c1a6a88d44.tar.gz
bcm5719-llvm-df91c927e8223260b39b61b50b2487c1a6a88d44.zip
Objective-C. Prevents a crash generating AST for a
a property assignment due to numerous user errors. Cannot come up with a reasonable test case due to array of user errors before the crash point. rdar://17813651. llvm-svn: 217825
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/SemaPseudoObject.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp
index 7bfe3337494..5e92d5d07c5 100644
--- a/clang/lib/Sema/SemaPseudoObject.cpp
+++ b/clang/lib/Sema/SemaPseudoObject.cpp
@@ -406,6 +406,10 @@ PseudoOpBuilder::buildAssignmentOperation(Scope *Sc, SourceLocation opcLoc,
BinaryOperatorKind opcode,
Expr *LHS, Expr *RHS) {
assert(BinaryOperator::isAssignmentOp(opcode));
+
+ // Recover from user error
+ if (isa<UnresolvedLookupExpr>(RHS))
+ return ExprError();
Expr *syntacticLHS = rebuildAndCaptureObject(LHS);
OpaqueValueExpr *capturedRHS = capture(RHS);
OpenPOWER on IntegriCloud