Lines Matching defs:QT
251 // Determines if any intermediate type in desugaring QualType QT is of
253 bool isSugaredTemplateParameter(QualType QT) {
254 static auto PeelWrapper = [](QualType QT) {
257 QualType Peeled = QT->getPointeeType();
258 return Peeled.isNull() ? QT : Peeled;
268 // However, getPointeeType could leap over our interests: The QT::getAs<T>()
272 // For example, given a QT that represents `std::vector<int *>::value_type`:
280 // Applying `getPointeeType` to QT results in 'int', a child of our target
286 if (QT->getAs<SubstTemplateTypeParmType>())
288 QualType Desugared = QT->getLocallyUnqualifiedSingleStepDesugaredType();
289 if (Desugared != QT)
290 QT = Desugared;
291 else if (auto Peeled = PeelWrapper(Desugared); Peeled != QT)
292 QT = Peeled;
301 std::optional<QualType> desugar(ASTContext &AST, QualType QT) {
303 auto Desugared = clang::desugarForDiagnostic(AST, QT, ShouldAKA);
309 // Apply a series of heuristic methods to determine whether or not a QualType QT
312 // parameter QT.
316 QualType maybeDesugar(ASTContext &AST, QualType QT) {
320 if (isSugaredTemplateParameter(QT))
321 return desugar(AST, QT).value_or(QT);
324 if (QT->isDecltypeType())
325 return QT.getCanonicalType();
326 if (const AutoType *AT = QT->getContainedAutoType())
329 return QT.getCanonicalType();
331 return QT;