Skip to content

Commit a28f265

Browse files
committed
fix: dependency extraction for templates
1 parent 7820d6a commit a28f265

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

src/lib/AST/ASTVisitor.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,9 @@ class ASTVisitor
462462
Decl* D,
463463
SymbolID& id)
464464
{
465+
if(TemplateDecl* TD = D->getDescribedTemplate())
466+
D = TD;
467+
465468
if(D->isImplicit() ||
466469
isa<TemplateTemplateParmDecl>(D) ||
467470
isa<BuiltinTemplateDecl>(D))
@@ -502,6 +505,9 @@ class ASTVisitor
502505
}
503506
while((DC = DC->getParent()));
504507

508+
if(TemplateDecl* TD = Outer->getDescribedTemplate())
509+
Outer = TD;
510+
505511
// add the adjusted declaration to the set of dependencies
506512
if(! isa<NamespaceDecl, TranslationUnitDecl>(Outer))
507513
dependencies_.insert(Outer);

test-files/old-tests/dependency-propagation.xml

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,26 @@
99
</base>
1010
</struct>
1111
<namespace name="N" id="rjlMNXAaWNMkQYMTJzRA1DR0DiE=">
12-
<alias name="C" id="1aINBgFfB9zQVkEDJdB0DyLWTmQ=">
13-
<file path="dependency-propagation.cpp" line="10" class="def"/>
14-
<type id="YZjBn7yW7NyL8yCKqswVvbiptNM=" name="N::B&lt;T&gt;"/>
15-
</alias>
16-
<alias name="B" id="YZjBn7yW7NyL8yCKqswVvbiptNM=">
17-
<file path="dependency-propagation.cpp" line="7" class="def"/>
18-
<type id="P3wHAbrIf4CGxTZs+lXT5a3t2K0=" name="N::A&lt;T&gt;"/>
19-
</alias>
20-
<struct name="A" id="P3wHAbrIf4CGxTZs+lXT5a3t2K0=">
21-
<file path="dependency-propagation.cpp" line="4" class="def"/>
22-
</struct>
12+
<template>
13+
<tparam name="T" class="type"/>
14+
<alias name="C" id="1aINBgFfB9zQVkEDJdB0DyLWTmQ=">
15+
<file path="dependency-propagation.cpp" line="10" class="def"/>
16+
<type id="YZjBn7yW7NyL8yCKqswVvbiptNM=" name="N::B&lt;T&gt;"/>
17+
</alias>
18+
</template>
19+
<template>
20+
<tparam name="T" class="type"/>
21+
<alias name="B" id="YZjBn7yW7NyL8yCKqswVvbiptNM=">
22+
<file path="dependency-propagation.cpp" line="7" class="def"/>
23+
<type id="P3wHAbrIf4CGxTZs+lXT5a3t2K0=" name="N::A&lt;T&gt;"/>
24+
</alias>
25+
</template>
26+
<template>
27+
<tparam name="T" class="type"/>
28+
<struct name="A" id="P3wHAbrIf4CGxTZs+lXT5a3t2K0=">
29+
<file path="dependency-propagation.cpp" line="4" class="def"/>
30+
</struct>
31+
</template>
2332
</namespace>
2433
</namespace>
2534
</mrdocs>

0 commit comments

Comments
 (0)