evelez7 added a comment.
We didn't handle inheriting from a template parameter, but now we do by
serializing the relationship. The parameter does not produce a target USR so it
falls back to its name.
================
Comment at: clang/include/clang/ExtractAPI/DeclarationFragments.h:191
+class Template {
+ struct TemplateParameter {
----------------
dang wrote:
> This is really a model type and should live either in it's own file or in
> API.h
Moved to API.h
================
Comment at: clang/lib/ExtractAPI/DeclarationFragments.cpp:754
+ Fragments.append(TemplateParam->getTypeConstraint()
+ ->getNamedConcept()
+ ->getName()
----------------
dang wrote:
> is this clang-format formatted?
Yes.
================
Comment at: clang/lib/ExtractAPI/DeclarationFragments.cpp:784
+ dyn_cast<TemplateTypeParmDecl>(TemplateParameters[i]);
+ if (TypeParameter.compare("type-parameter-" +
+ std::to_string(Parameter->getDepth()) + "-" +
----------------
dang wrote:
> Kinda sad we have to do this. I guess there is no easy way to change the AST
> to support this?
I've just realized that we could just take the the template parameter and
insert it arbitrarily but it could easily be the incorrect partial
specialization. We'd still need to determine which argument corresponds to the
template param.
One optimization is to check if there is only one new param in a partial
specialization so that a var template's type is automatically known if it is
the new template param, i.e. template<typename T> T x<T, int>
The unfortunate reality is that template parameters are actual Decls
(TemplateTypeParmDecl, which do hold the generic's correct name), and
TemplateArguments are not. Calling TemplateArgument.getAsDecl() or
getAsTemplate always result in assertion errors (when the arg is a template
param) since there are no analogous structures. There'd have to be a
TemplateTypeArgDecl.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D157076/new/
https://reviews.llvm.org/D157076
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits