Skip to content

Commit d3f4129

Browse files
committed
meta: Use Policy.NeverIncludeTypeForTemplateArgument.
This solves problems caused by some code paths producing normalized name with unexpectedly added type suffix after on integral non-type template parameters. This fixes root-project#18363
1 parent 0a0e7a9 commit d3f4129

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

core/clingutils/src/TClingUtils.cxx

+6
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,8 @@ bool TClingLookupHelper::GetPartiallyDesugaredNameWithScopeHandling(const std::s
635635
// TMetaUtils::GetNormalizedName, we just do the 'strip leading std' and fix
636636
// white space.
637637
clang::PrintingPolicy policy(fInterpreter->getCI()->getASTContext().getPrintingPolicy());
638+
// For now we do not want the integral type suffixes in the normalized name.
639+
policy.NeverIncludeTypeForTemplateArgument = true;
638640
policy.SuppressTagKeyword = true; // Never get the class or struct keyword
639641
policy.SuppressScope = true; // Force the scope to be coming from a clang::ElaboratedType.
640642
// The scope suppression is required for getting rid of the anonymous part of the name of a class defined in an anonymous namespace.
@@ -1411,6 +1413,8 @@ void ROOT::TMetaUtils::GetQualifiedName(std::string &qual_name, const clang::Nam
14111413
{
14121414
llvm::raw_string_ostream stream(qual_name);
14131415
clang::PrintingPolicy policy( cl.getASTContext().getPrintingPolicy() );
1416+
// For now we do not want the integral type suffixes in the normalized name.
1417+
policy.NeverIncludeTypeForTemplateArgument = true;
14141418
policy.SuppressTagKeyword = true; // Never get the class or struct keyword
14151419
policy.SuppressUnwrittenScope = true; // Don't write the inline or anonymous namespace names.
14161420

@@ -4161,6 +4165,8 @@ void ROOT::TMetaUtils::GetNormalizedName(std::string &norm_name, const clang::Qu
41614165

41624166
clang::ASTContext &ctxt = interpreter.getCI()->getASTContext();
41634167
clang::PrintingPolicy policy(ctxt.getPrintingPolicy());
4168+
// For now we do not want the integral type suffixes in the normalized name.
4169+
policy.NeverIncludeTypeForTemplateArgument = true;
41644170
policy.SuppressTagKeyword = true; // Never get the class or struct keyword
41654171
policy.SuppressScope = true; // Force the scope to be coming from a clang::ElaboratedType.
41664172
policy.AnonymousTagLocations = false; // Do not extract file name + line number for anonymous types.

0 commit comments

Comments
 (0)