data: template class/function scope locations

* Added source locations of template parameters to the scope of template classes and functions to improve context availability in the code view.
This commit is contained in:
malte_langkabel
2015-10-21 19:56:47 +02:00
parent 1382356a39
commit c06beb21cb
+24 -2
View File
@@ -876,7 +876,18 @@ ParseLocation ASTVisitor::getParseLocationOfFunctionBody(const clang::FunctionDe
{
if (decl->hasBody() && decl->isThisDeclarationADefinition())
{
return getParseLocation(decl->getSourceRange());
clang::SourceRange range;
clang::FunctionTemplateDecl* templateDecl = decl->getDescribedFunctionTemplate();
if (templateDecl)
{
range = templateDecl->getSourceRange();
}
else
{
range = decl->getSourceRange();
}
return getParseLocation(range);
}
return ParseLocation();
@@ -886,7 +897,18 @@ ParseLocation ASTVisitor::getParseLocationOfRecordBody(clang::CXXRecordDecl* dec
{
if (decl->hasDefinition() && decl->isThisDeclarationADefinition())
{
return getParseLocation(decl->getDefinition()->getSourceRange());
clang::SourceRange range;
clang::ClassTemplateDecl* templateDecl = decl->getDescribedClassTemplate();
if (templateDecl)
{
range = templateDecl->getSourceRange();
}
else
{
range = decl->getDefinition()->getSourceRange();
}
return getParseLocation(range);
}
return ParseLocation();