Skip to content

Commit 474032d

Browse files
committed
fix: repopulating TArg doesn't push back
1 parent 6e12444 commit 474032d

File tree

4 files changed

+23
-19
lines changed

4 files changed

+23
-19
lines changed

src/lib/AST/ASTVisitor.hpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,7 @@ class ASTVisitor
684684
std::vector<Polymorphic<TArg>>& result,
685685
Range&& args)
686686
{
687+
std::size_t i = 0;
687688
for (TemplateArgument const& arg : args)
688689
{
689690
if (arg.getIsDefaulted())
@@ -699,8 +700,13 @@ class ASTVisitor
699700
}
700701
else
701702
{
702-
result.emplace_back(toTArg(arg));
703+
if (i + 1 > result.size())
704+
{
705+
result.emplace_back();
706+
}
707+
result[i] = toTArg(arg);
703708
}
709+
++i;
704710
}
705711
}
706712

test-files/golden-tests/symbols/record/class-template-specializations-3.adoc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ struct link:#A-0e[A]&lt;float&gt;;
702702
|===
703703
| Name
704704
| link:#A-01-B-07[`B`]
705-
| link:#A-01-B-08[`B&lt;double, double&gt;`]
705+
| link:#A-01-B-08[`B&lt;double&gt;`]
706706
|===
707707

708708
[#A-01-B-07]
@@ -719,7 +719,7 @@ struct B;
719719
----
720720

721721
[#A-01-B-08]
722-
== link:#A-01[A&lt;float&gt;]::link:#A-0e-B-07[B]&lt;double, double&gt;
722+
== link:#A-01[A&lt;float&gt;]::link:#A-0e-B-07[B]&lt;double&gt;
723723

724724
=== Synopsis
725725

@@ -728,7 +728,7 @@ Declared in `&lt;class&hyphen;template&hyphen;specializations&hyphen;3&period;cp
728728
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
729729
----
730730
template&lt;&gt;
731-
struct link:#A-0e-B-07[B]&lt;double, double&gt;;
731+
struct link:#A-0e-B-07[B]&lt;double&gt;;
732732
----
733733

734734
=== Types
@@ -738,11 +738,11 @@ struct link:#A-0e-B-07[B]&lt;double, double&gt;;
738738
| Name
739739
| link:#A-01-B-08-C[`C`]
740740
| link:#A-01-B-08-D-0ae[`D`]
741-
| link:#A-01-B-08-D-0af[`D&lt;bool, bool&gt;`]
741+
| link:#A-01-B-08-D-0af[`D&lt;bool&gt;`]
742742
|===
743743

744744
[#A-01-B-08-C]
745-
== link:#A-01[A&lt;float&gt;]::link:#A-01-B-08[B&lt;double, double&gt;]::C
745+
== link:#A-01[A&lt;float&gt;]::link:#A-01-B-08[B&lt;double&gt;]::C
746746

747747
=== Synopsis
748748

@@ -754,7 +754,7 @@ struct C;
754754
----
755755

756756
[#A-01-B-08-D-0ae]
757-
== link:#A-01[A&lt;float&gt;]::link:#A-01-B-08[B&lt;double, double&gt;]::D
757+
== link:#A-01[A&lt;float&gt;]::link:#A-01-B-08[B&lt;double&gt;]::D
758758

759759
=== Synopsis
760760

@@ -767,7 +767,7 @@ struct D;
767767
----
768768

769769
[#A-01-B-08-D-0af]
770-
== link:#A-01[A&lt;float&gt;]::link:#A-01-B-08[B&lt;double, double&gt;]::link:#A-0e-B-00-D-09[D]&lt;bool, bool&gt;
770+
== link:#A-01[A&lt;float&gt;]::link:#A-01-B-08[B&lt;double&gt;]::link:#A-0e-B-00-D-09[D]&lt;bool&gt;
771771

772772
=== Synopsis
773773

@@ -776,7 +776,7 @@ Declared in `&lt;class&hyphen;template&hyphen;specializations&hyphen;3&period;cp
776776
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
777777
----
778778
template&lt;&gt;
779-
struct link:#A-0e-B-00-D-09[D]&lt;bool, bool&gt;;
779+
struct link:#A-0e-B-00-D-09[D]&lt;bool&gt;;
780780
----
781781

782782
[#E]

test-files/golden-tests/symbols/record/class-template-specializations-3.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ <h2>Types</h2>
994994
<tbody>
995995
<tr>
996996
<td><a href="#A-01-B-07"><code>B</code></a> </td></tr><tr>
997-
<td><a href="#A-01-B-08"><code>B&lt;double, double&gt;</code></a> </td></tr>
997+
<td><a href="#A-01-B-08"><code>B&lt;double&gt;</code></a> </td></tr>
998998
</tbody>
999999
</table>
10001000

@@ -1021,7 +1021,7 @@ <h3>Synopsis</h3>
10211021
</div>
10221022
<div>
10231023
<div>
1024-
<h2 id="A-01-B-08"><a href="#A-01-B-08">A&lt;float&gt;::B&lt;double, double&gt;</a></h2>
1024+
<h2 id="A-01-B-08"><a href="#A-01-B-08">A&lt;float&gt;::B&lt;double&gt;</a></h2>
10251025
</div>
10261026
<div>
10271027
<h3>Synopsis</h3>
@@ -1030,7 +1030,7 @@ <h3>Synopsis</h3>
10301030
<pre>
10311031
<code class="source-code cpp">
10321032
template&lt;&gt;
1033-
struct <a href="#A-0e-B-07">B</a>&lt;double, double&gt;;
1033+
struct <a href="#A-0e-B-07">B</a>&lt;double&gt;;
10341034
</code>
10351035
</pre>
10361036
</div>
@@ -1045,7 +1045,7 @@ <h2>Types</h2>
10451045
<tr>
10461046
<td><a href="#A-01-B-08-C"><code>C</code></a> </td></tr><tr>
10471047
<td><a href="#A-01-B-08-D-0ae"><code>D</code></a> </td></tr><tr>
1048-
<td><a href="#A-01-B-08-D-0af"><code>D&lt;bool, bool&gt;</code></a> </td></tr>
1048+
<td><a href="#A-01-B-08-D-0af"><code>D&lt;bool&gt;</code></a> </td></tr>
10491049
</tbody>
10501050
</table>
10511051

@@ -1054,7 +1054,7 @@ <h2>Types</h2>
10541054
</div>
10551055
<div>
10561056
<div>
1057-
<h2 id="A-01-B-08-C"><a href="#A-01-B-08-C">A&lt;float&gt;::B&lt;double, double&gt;::C</a></h2>
1057+
<h2 id="A-01-B-08-C"><a href="#A-01-B-08-C">A&lt;float&gt;::B&lt;double&gt;::C</a></h2>
10581058
</div>
10591059
<div>
10601060
<h3>Synopsis</h3>
@@ -1071,7 +1071,7 @@ <h3>Synopsis</h3>
10711071
</div>
10721072
<div>
10731073
<div>
1074-
<h2 id="A-01-B-08-D-0ae"><a href="#A-01-B-08-D-0ae">A&lt;float&gt;::B&lt;double, double&gt;::D</a></h2>
1074+
<h2 id="A-01-B-08-D-0ae"><a href="#A-01-B-08-D-0ae">A&lt;float&gt;::B&lt;double&gt;::D</a></h2>
10751075
</div>
10761076
<div>
10771077
<h3>Synopsis</h3>
@@ -1089,7 +1089,7 @@ <h3>Synopsis</h3>
10891089
</div>
10901090
<div>
10911091
<div>
1092-
<h2 id="A-01-B-08-D-0af"><a href="#A-01-B-08-D-0af">A&lt;float&gt;::B&lt;double, double&gt;::D&lt;bool, bool&gt;</a></h2>
1092+
<h2 id="A-01-B-08-D-0af"><a href="#A-01-B-08-D-0af">A&lt;float&gt;::B&lt;double&gt;::D&lt;bool&gt;</a></h2>
10931093
</div>
10941094
<div>
10951095
<h3>Synopsis</h3>
@@ -1098,7 +1098,7 @@ <h3>Synopsis</h3>
10981098
<pre>
10991099
<code class="source-code cpp">
11001100
template&lt;&gt;
1101-
struct <a href="#A-0e-B-00-D-09">D</a>&lt;bool, bool&gt;;
1101+
struct <a href="#A-0e-B-00-D-09">D</a>&lt;bool&gt;;
11021102
</code>
11031103
</pre>
11041104
</div>

test-files/golden-tests/symbols/record/class-template-specializations-3.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,6 @@
239239
</struct>
240240
</template>
241241
<template class="explicit" id="dKDSVrZun8skBV/NUCmJyCUOvJA=">
242-
<targ class="type" type="double"/>
243242
<targ class="type" type="double"/>
244243
<struct name="B" id="gNJJgsCrBHI+de6/WxRWfc6QUSQ=">
245244
<file short-path="class-template-specializations-3.cpp" source-path="class-template-specializations-3.cpp" line="17" class="def"/>
@@ -253,7 +252,6 @@
253252
</struct>
254253
</template>
255254
<template class="explicit" id="mlI5CyZeYMi0hLKKprnY2lkWYuI=">
256-
<targ class="type" type="bool"/>
257255
<targ class="type" type="bool"/>
258256
<struct name="D" id="rzmzIDLemEwnRqvVCiQsLO9rHE4=">
259257
<file short-path="class-template-specializations-3.cpp" source-path="class-template-specializations-3.cpp" line="25" class="def"/>

0 commit comments

Comments
 (0)