rsmith added a comment. This change looks like it introduces a regression itself: given
template<typename T> struct A {}; template<typename T> using B = A<T*>; B<int> bi; ... requesting the template arguments for the type `B<int>` changes from producing `int` to producing `int*` with this patch, which seems to directly oppose the intentions of https://reviews.llvm.org/D26663. If the intent of this libclang function is to request the template arguments of the type as written, this change is wrong. If the intent is to request the template arguments of the desugared type, then https://reviews.llvm.org/D26663 is wrong. But either way, it seems that reversing the order of these checks causes us to produce inconsistent results. Another example of the inconsistency: template<typename T> using C = T; With this patch, requesting the template arguments for `C<int>` gives `int` but requesting the template arguments of `C<A<void>>` gives `void` rather than `A<void>`. Repository: rL LLVM https://reviews.llvm.org/D32348 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits