================ @@ -2838,6 +2838,18 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase { /// immediately following this class. template <typename T> const T *getAs() const; + /// Look through sugar for an instance of TemplateSpecializationType which + /// is not a type alias. + const TemplateSpecializationType * + getAsNonAliasTemplateSpecializationType() const; + + const TemplateSpecializationType * + castAsNonAliasTemplateSpecializationType() const { + auto TST = getAsNonAliasTemplateSpecializationType(); ---------------- mizvekov wrote:
Yeah this automates a part of analysis with sugar which is very easy to get wrong. If you are looking for a class template specialization and you want to get its as-written arguments, then you have to deal with the fact that you might encounter along the way a TST from an alias template (or builtin template) that might be pointing to anything, even an `int`, so it's very easy to get mixed up here. https://github.com/llvm/llvm-project/pull/135916 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits