r184165 - r184100 Fix -- Updated test cases for contextual conversion

Larisse Voufo lvoufo at google.com
Mon Jun 17 20:11:01 PDT 2013


On Mon, Jun 17, 2013 at 6:40 PM, Richard Smith <richard at metafoo.co.uk>wrote:

> On Mon, Jun 17, 2013 at 6:27 PM, Larisse Voufo <lvoufo at google.com> wrote:
> > Author: lvoufo
> > Date: Mon Jun 17 20:27:47 2013
> > New Revision: 184165
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=184165&view=rev
> > Log:
> > r184100 Fix -- Updated test cases for contextual conversion
> >
> > Modified:
> >     cfe/trunk/lib/Sema/SemaExprCXX.cpp
> >     cfe/trunk/test/SemaCXX/cxx1y-contextual-conversion-tweaks.cpp
> >     cfe/trunk/test/SemaCXX/cxx98-compat-pedantic.cpp
> >
> > Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=184165&r1=184164&r2=184165&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original)
> > +++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Mon Jun 17 20:27:47 2013
> > @@ -1205,9 +1205,9 @@ Sema::BuildCXXNew(SourceRange Range, boo
> >                                                 AA_Converting);
> >
> >        if (!isSFINAEContext())
> > -       // Diagnose the compatibility of this conversion.
> > -       Diag(StartLoc, diag::warn_cxx98_compat_array_size_conversion)
> > -         << ArraySize->getType() << 0 << Context.getSizeType();
> > +        // Diagnose the compatibility of this conversion.
> > +        Diag(StartLoc, diag::warn_cxx98_compat_array_size_conversion)
> > +          << ArraySize->getType() << 0 << "'size_t'";
>
> This warning is firing in too many cases. For instance:
>
>   int *p = new int[1];
>
> triggers it. This should only warn if the source type is a class type.
> Also, you don't need the SFINAE context check here.
>

Ok. Fixed. (cf. r184167).


>
> >      } else {
> >        class SizeConvertDiagnoser : public ICEConvertDiagnoser {
> >        protected:
> >
> > Modified: cfe/trunk/test/SemaCXX/cxx1y-contextual-conversion-tweaks.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx1y-contextual-conversion-tweaks.cpp?rev=184165&r1=184164&r2=184165&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/test/SemaCXX/cxx1y-contextual-conversion-tweaks.cpp
> (original)
> > +++ cfe/trunk/test/SemaCXX/cxx1y-contextual-conversion-tweaks.cpp Mon
> Jun 17 20:27:47 2013
> > @@ -154,4 +154,24 @@ namespace extended_examples_cxx1y {
> >  //expected-error at 143 {{cannot initialize object parameter of type
> 'extended_examples_cxx1y::D' with an expression of type
> 'extended_examples_cxx1y::D'}}
> >  #endif
> >
> > -// FIXME: Extend with more examples, including [expr.const] and
> [expr.new].
> > +namespace extended_examples_array_bounds {
> > +
> > +  typedef decltype(sizeof(int)) size_t;
> > +
> > +  struct Foo {
> > +    operator size_t();   // @162
> > +    operator unsigned short();  // @163
> > +  };
> > +
> > +  void bar() {
> > +    Foo x;
> > +    int *p = new int[x];        // @168
> > +  }
> > +}
> > +
> > +#ifdef CXX1Y
> > +#else
> > +//expected-error at 168 {{ambiguous conversion of array size expression
> of type 'extended_examples_array_bounds::Foo' to an integral or enumeration
> type}}
> > +//expected-note at 162 {{conversion to integral type 'size_t'}}
> > +//expected-note at 163 {{conversion to integral type 'unsigned short'
> declared here}}
> > +#endif
> >
> > Modified: cfe/trunk/test/SemaCXX/cxx98-compat-pedantic.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx98-compat-pedantic.cpp?rev=184165&r1=184164&r2=184165&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/test/SemaCXX/cxx98-compat-pedantic.cpp (original)
> > +++ cfe/trunk/test/SemaCXX/cxx98-compat-pedantic.cpp Mon Jun 17 20:27:47
> 2013
> > @@ -34,7 +34,7 @@ struct ConvertToInt {
> >  };
> >  int *ArraySizeConversion = new int[ConvertToInt()];
> >  #ifdef CXX1Y2
> > -// expected-warning at -2 {{implicit conversion from array size
> expression of type 'ConvertToInt' to integral type}} // 'unsigned long' is
> incompatible with C++98}}
> > +// expected-warning at -2 {{implicit conversion from array size
> expression of type 'ConvertToInt' to integral type 'size_t' is incompatible
> with C++98}}
> >  #else
> >  // expected-warning at -4 {{implicit conversion from array size
> expression of type 'ConvertToInt' to integral type 'int' is incompatible
> with C++98}}
> >  #endif
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130617/cf148ab9/attachment.html>


More information about the cfe-commits mailing list