Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Full type name qualification fails for function types / argument types #8469

Open
Axel-Naumann opened this issue Jun 17, 2021 · 0 comments
Open

Comments

@Axel-Naumann
Copy link
Member

Axel-Naumann commented Jun 17, 2021

The underlying bug of #8387 is the lack of full qualification of the argument types of function types: with

namespace N {
  struct S {};
  using Func_t = int(S*);
}

TClass::GetClass("vector<Func_t>") should fully qualify the name to "vector<int(N::S*)>" but instead leaves it at "vector<int(S*)>": cling/lib/Utils/AST.cpp's GetPartiallyDesugaredTypeImpl() checks whether the type is a TemplateSpecializationType and iterates over the template args, but it doesn't check whether it's a FunctionProtoType to iterate over the argument types.

That's a bug which might be relevant for cases like this:

template <class ACTION>
class ICanBeSerializedJustFine {
  ACTION fAction; ///<!
  int fSerializeThis;
};

Note: this relates (was discovered through) #8387

@Axel-Naumann Axel-Naumann changed the title Name normalization (fully-qualified) fails for function types / argument types Full type name qualification fails for function types / argument types Jun 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants