r214722 - Highlight the offending function parameter when the format_arg argument refers to an invalid function parameter type.

David Blaikie dblaikie at gmail.com
Mon Aug 4 09:34:43 PDT 2014


Test case? (I know we don't rigorously test the ranges specified in a
diagnostic, but if we're fixing a bug in it, it might be worthwhile -
I think they're sometimes tested with the machine readable diagnostic
format)

On Mon, Aug 4, 2014 at 8:17 AM, Aaron Ballman <aaron at aaronballman.com> wrote:
> Author: aaronballman
> Date: Mon Aug  4 10:17:29 2014
> New Revision: 214722
>
> URL: http://llvm.org/viewvc/llvm-project?rev=214722&view=rev
> Log:
> Highlight the offending function parameter when the format_arg argument refers to an invalid function parameter type.
>
> Modified:
>     cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>
> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=214722&r1=214721&r2=214722&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Mon Aug  4 10:17:29 2014
> @@ -2362,10 +2362,9 @@ static void handleFormatArgAttr(Sema &S,
>        !isCFStringType(Ty, S.Context) &&
>        (!Ty->isPointerType() ||
>         !Ty->getAs<PointerType>()->getPointeeType()->isCharType())) {
> -    // FIXME: Should highlight the actual expression that has the wrong type.
>      S.Diag(Attr.getLoc(), diag::err_format_attribute_not)
> -    << (not_nsstring_type ? "a string type" : "an NSString")
> -       << IdxExpr->getSourceRange();
> +        << (not_nsstring_type ? "a string type" : "an NSString")
> +        << IdxExpr->getSourceRange() << getFunctionOrMethodParamRange(D, 0);
>      return;
>    }
>    Ty = getFunctionOrMethodResultType(D);
> @@ -2373,10 +2372,9 @@ static void handleFormatArgAttr(Sema &S,
>        !isCFStringType(Ty, S.Context) &&
>        (!Ty->isPointerType() ||
>         !Ty->getAs<PointerType>()->getPointeeType()->isCharType())) {
> -    // FIXME: Should highlight the actual expression that has the wrong type.
>      S.Diag(Attr.getLoc(), diag::err_format_attribute_result_not)
> -    << (not_nsstring_type ? "string type" : "NSString")
> -       << IdxExpr->getSourceRange();
> +        << (not_nsstring_type ? "string type" : "NSString")
> +        << IdxExpr->getSourceRange() << getFunctionOrMethodParamRange(D, 0);
>      return;
>    }
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list