mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 23:06:34 +00:00

For the given C++ code: ``` template <typename T> class Foo { T Member; }; template <template <typename T> class TemplateType> class Bar { TemplateType<int> Int; }; template <template <template <typename> class> class TemplateTemplateType> class Baz { TemplateTemplateType<Foo> Foo; }; typedef Baz<Bar> Example; Example TT; ``` The '--attribute=encoded' option, will produce the logical view: ``` {Class} 'Foo<int>' {Encoded} <int> {Class} 'Bar<Foo>' {Encoded} <> <-- Missing the template argument info (Foo) {Class} 'Baz<Bar>' {Encoded} <> <-- Missing the template argument info (Bar) ``` When the template argument is another template it is not included in the {Encoded} field. The correct output should be: ``` {Class} 'Foo<int>' {Encoded} <int> {Class} 'Bar<Foo>' {Encoded} <Foo> {Class} 'Baz<Bar>' {Encoded} <Bar> ```