diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2014-09-15 21:19:39 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2014-09-15 21:19:39 +0000 |
| commit | df91c927e8223260b39b61b50b2487c1a6a88d44 (patch) | |
| tree | 57733d7271304f0c1b5b93cc74a15f860f143f6d /clang/lib/Sema | |
| parent | b67140b81245c4c3c428225ba2a928b105ee00ef (diff) | |
| download | bcm5719-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.cpp | 4 |
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); |

