[cfe-commits] [PATCH] Begin to implement the C++0x narrowing error (issue4698047)

Jeffrey Yasskin jyasskin at google.com
Mon Jul 18 09:54:56 PDT 2011


I've attached the latest version of this patch.

On Wed, Jul 13, 2011 at 9:23 PM,  <jyasskin at gmail.com> wrote:
> Reviewers: ,
>
> Message:
> Diff at http://codereview.appspot.com/download/issue4698047_7001.diff,
> but the up to date version will always be at
> http://codereview.appspot.com/4698047.
>
> Description:
> This patch implements as much of the narrowing conversion error
> specified by [dcl.init.list] as is possible without generalized
> initializer lists or full constant expression support, and emits a
> c++0x-compat warning in C++98 mode.
>
> I haven't done much with this code before, so let me know if there are
> better ways to do pieces of this, or if I've attached the logic in
> completely the wrong place.
>
> The FixIt currently uses a typedef's basename without qualification,
> which is likely to be incorrect on some code. I'm not sure I'll need
> anything more correct to clean up Google's codebase, but if you want me
> to fix it up I'd like to do that in a separate change.
>
> The "has the same value after a round-trip through another type" logic
> is messier than I'd like, but cleaning it up appears to need more
> methods on types like APInt and APFloat, which I'd like to postpone
> until another change too. If I'm just missing existing facilities,
> please point them out.
>
> Because I named the CXX0xCompat DiagGroup, I migrated all the existing
> c++-compat warnings to it, which fixed the names of two of the warnings.
>
> The warning is on by default, but it's quite noisy on existing C++98
> codebases. Let me know if it should be off by default.
>
> The diagnostics for constants that can't be narrowed include strings
> like "Int: 999" for APValues. We should fix this by adding an
> operator<<(Diag, APValue) overload, but again, in another change.
>
> Please review this at http://codereview.appspot.com/4698047/
>
> Affected files:
>   M     include/clang/Basic/DiagnosticGroups.td
>   M     include/clang/Basic/DiagnosticSemaKinds.td
>   M     include/clang/Sema/Initialization.h
>   M     include/clang/Sema/Sema.h
>   M     lib/Sema/SemaInit.cpp
>   A     test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp
>   M     test/Parser/objc-init.m
>   M     test/SemaTemplate/instantiate-c99.cpp
>   M     test/SemaTemplate/instantiate-expr-4.cpp
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cxx0x_narrowing_error.diff
Type: application/octet-stream
Size: 28612 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20110718/b5af31c4/attachment.obj>


More information about the cfe-commits mailing list