summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2018-05-16 17:00:24 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2018-05-16 17:00:24 +0000
commitc39e85d12cc5a174c51fd046b13a66255b342034 (patch)
treecf5d54a1608d5d7c3fb7d595b23dec1ce6a1bdcf
parent11fd14c1ac219fcf0cebe1760dc459d1d5f20d87 (diff)
downloadbcm5719-llvm-c39e85d12cc5a174c51fd046b13a66255b342034.tar.gz
bcm5719-llvm-c39e85d12cc5a174c51fd046b13a66255b342034.zip
[Modules] Do not diagnose missing import in recovery mode if there isn't a decl to lookup
Clang often tries to create implicit module import for error recovery, which does a great job helping out with diagnostics. However, sometimes clang does not have enough information given that it's using an invalid context to move on. Be more strict in those cases to avoid crashes. We hit crash on invalids because of this but unfortunately there are no testcases and I couldn't manage to create one. The crashtrace however indicates pretty clear why it's happening. rdar://problem/39313933 llvm-svn: 332491
-rw-r--r--clang/lib/Sema/SemaType.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index b51d49461fe..7e8f9b19e3d 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -7613,7 +7613,7 @@ bool Sema::RequireCompleteTypeImpl(SourceLocation Loc, QualType T,
// If the user is going to see an error here, recover by making the
// definition visible.
bool TreatAsComplete = Diagnoser && !isSFINAEContext();
- if (Diagnoser)
+ if (Diagnoser && SuggestedDef)
diagnoseMissingImport(Loc, SuggestedDef, MissingImportKind::Definition,
/*Recover*/TreatAsComplete);
return !TreatAsComplete;
OpenPOWER on IntegriCloud