================ @@ -3162,30 +3213,11 @@ void ASTContext::adjustDeducedFunctionResultType(FunctionDecl *FD, /// and preserved. Other type sugar (for instance, typedefs) is not. QualType ASTContext::getFunctionTypeWithExceptionSpec( QualType Orig, const FunctionProtoType::ExceptionSpecInfo &ESI) const { - // Might have some parens. - if (const auto *PT = dyn_cast<ParenType>(Orig)) - return getParenType( - getFunctionTypeWithExceptionSpec(PT->getInnerType(), ESI)); - - // Might be wrapped in a macro qualified type. - if (const auto *MQT = dyn_cast<MacroQualifiedType>(Orig)) - return getMacroQualifiedType( - getFunctionTypeWithExceptionSpec(MQT->getUnderlyingType(), ESI), - MQT->getMacroIdentifier()); - - // Might have a calling-convention attribute. - if (const auto *AT = dyn_cast<AttributedType>(Orig)) - return getAttributedType( - AT->getAttrKind(), - getFunctionTypeWithExceptionSpec(AT->getModifiedType(), ESI), - getFunctionTypeWithExceptionSpec(AT->getEquivalentType(), ESI)); - - // Anything else must be a function type. Rebuild it with the new exception - // specification. - const auto *Proto = Orig->castAs<FunctionProtoType>(); - return getFunctionType( - Proto->getReturnType(), Proto->getParamTypes(), - Proto->getExtProtoInfo().withExceptionSpec(ESI)); + return adjustType(Orig, [&](QualType Ty) { + const auto *Proto = Ty->castAs<FunctionProtoType>(); ---------------- AaronBallman wrote:
This one is fine because an exception specification means we're not in C and so the function always has a prototype. https://github.com/llvm/llvm-project/pull/85325 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits