diff options
author | Johannes Altmanninger <aclopte@gmail.com> | 2017-08-22 08:59:13 +0000 |
---|---|---|
committer | Johannes Altmanninger <aclopte@gmail.com> | 2017-08-22 08:59:13 +0000 |
commit | bc7d817c225f9e6df34b5d5a8276b45985e08ce3 (patch) | |
tree | f33aad75ce000831f39eb3dd67faee9e727f2ec3 | |
parent | 2b955ffaed14af72b381fc7ee389c3deaaf9c6d8 (diff) | |
download | bcm5719-llvm-bc7d817c225f9e6df34b5d5a8276b45985e08ce3.tar.gz bcm5719-llvm-bc7d817c225f9e6df34b5d5a8276b45985e08ce3.zip |
[clang-diff] Fix getRelativeName
Handle the case when DeclContext is null.
llvm-svn: 311434
-rw-r--r-- | clang/lib/Tooling/ASTDiff/ASTDiff.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Tooling/ASTDiff/ASTDiff.cpp b/clang/lib/Tooling/ASTDiff/ASTDiff.cpp index 2dcd1a28563..747c67ecdcb 100644 --- a/clang/lib/Tooling/ASTDiff/ASTDiff.cpp +++ b/clang/lib/Tooling/ASTDiff/ASTDiff.cpp @@ -372,7 +372,10 @@ int SyntaxTree::Impl::findPositionInParent(NodeId Id, bool Shifted) const { std::string SyntaxTree::Impl::getRelativeName(const NamedDecl *ND, const DeclContext *Context) const { + std::string Val = ND->getQualifiedNameAsString(); std::string ContextPrefix; + if (!Context) + return Val; if (auto *Namespace = dyn_cast<NamespaceDecl>(Context)) ContextPrefix = Namespace->getQualifiedNameAsString(); else if (auto *Record = dyn_cast<RecordDecl>(Context)) @@ -380,7 +383,6 @@ SyntaxTree::Impl::getRelativeName(const NamedDecl *ND, else if (AST.getLangOpts().CPlusPlus11) if (auto *Tag = dyn_cast<TagDecl>(Context)) ContextPrefix = Tag->getQualifiedNameAsString(); - std::string Val = ND->getQualifiedNameAsString(); // Strip the qualifier, if Val refers to somthing in the current scope. // But leave one leading ':' in place, so that we know that this is a // relative path. @@ -404,7 +406,7 @@ static const DeclContext *getEnclosingDeclContext(ASTContext &AST, return D->getDeclContext(); S = P.get<Stmt>(); } - llvm_unreachable("Could not find Decl ancestor."); + return nullptr; } std::string SyntaxTree::Impl::getNodeValue(NodeId Id) const { |