================ @@ -4887,9 +4887,18 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, cast<AutoType>(T)->getKeyword() != AutoTypeKeyword::Auto || cast<AutoType>(T)->isConstrained())) { - S.Diag(D.getDeclSpec().getTypeSpecTypeLoc(), - diag::err_trailing_return_without_auto) - << T << D.getDeclSpec().getSourceRange(); + SourceLocation Loc = D.getDeclSpec().getTypeSpecTypeLoc(); + SourceRange SR = D.getDeclSpec().getSourceRange(); + if (Loc.isInvalid()) { + TypeSourceInfo *TSI = nullptr; + S.GetTypeFromParser(FTI.getTrailingReturnType(), &TSI); + if (TSI) { + TypeLoc TSILoc = TSI->getTypeLoc(); + Loc = TSILoc.getBeginLoc(); + SR = TSILoc.getSourceRange(); + } + } + S.Diag(Loc, diag::err_trailing_return_without_auto) << T << SR; ---------------- a-tarasyuk wrote:
To confirm, should it attach to `B` and use the range of the _trailing return type_? I followed the GCC approach, which was the pointed in the issue - https://godbolt.org/z/esz9K5M95. https://github.com/llvm/llvm-project/pull/115786 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits