From 36058d6b06ced951180163eb66f5d3fa48597d7a Mon Sep 17 00:00:00 2001 From: Andreas Fertig Date: Mon, 16 Feb 2026 10:38:13 +0100 Subject: [PATCH 1/2] Fixed missing namespace if the type appears as a template parameter. --- CodeGenerator.cpp | 2 +- tests/Namespace2Test.cpp | 17 ++++++++++ tests/Namespace2Test.expect | 32 +++++++++++++++++++ tests/NonTypeTemplateParameterPackTest.cerr | 11 ------- tests/NonTypeTemplateParameterPackTest.expect | 2 +- 5 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 tests/Namespace2Test.cpp create mode 100644 tests/Namespace2Test.expect delete mode 100644 tests/NonTypeTemplateParameterPackTest.cerr diff --git a/CodeGenerator.cpp b/CodeGenerator.cpp index 4ad899ef..dae468ac 100644 --- a/CodeGenerator.cpp +++ b/CodeGenerator.cpp @@ -4635,7 +4635,7 @@ void CodeGenerator::InsertTemplateArg(const TemplateArgument& arg) case TemplateArgument::Template: [[fallthrough]]; case TemplateArgument::TemplateExpansion: if(const auto* tmplDecl = arg.getAsTemplateOrTemplatePattern().getAsTemplateDecl()) { - mOutputFormatHelper.Append(GetName(*tmplDecl)); + mOutputFormatHelper.Append(GetName(*tmplDecl, QualifiedName::Yes)); } else if(const auto* depName = arg.getAsTemplateOrTemplatePattern().getAsDependentTemplateName(); depName->isIdentifier()) { diff --git a/tests/Namespace2Test.cpp b/tests/Namespace2Test.cpp new file mode 100644 index 00000000..ba611b22 --- /dev/null +++ b/tests/Namespace2Test.cpp @@ -0,0 +1,17 @@ +class Test +{ +public: + template + class my_array {}; + + // two type template parameters and one template template parameter: + template typename C = my_array> + class Map + { + }; +}; + + +int main(){ + Test::Map<> a; +} diff --git a/tests/Namespace2Test.expect b/tests/Namespace2Test.expect new file mode 100644 index 00000000..002a7602 --- /dev/null +++ b/tests/Namespace2Test.expect @@ -0,0 +1,32 @@ +class Test +{ + + public: + template + class my_array + { + }; + + template