jfb added inline comments.

================
Comment at: test/Sema/warn-int-in-bool-context.c:26
+  r = a << 7;   // expected-warning {{'<<' in boolean context; did you mean 
'<'?}}
+  r = ONE << b; // expected-warning {{'<<' in boolean context; did you mean 
'<'?}}
+
----------------
xbolva00 wrote:
> jfb wrote:
> > xbolva00 wrote:
> > > jfb wrote:
> > > > I'm not sure the "did you mean" part is helpful. Do we have data 
> > > > showing that this is what people actually mean?
> > > No, no data, just what GCC suggests.
> > I would drop it without knowing that it's actually what people usually mean.
> Leave just “<<' in boolean context“ seems not ideal for me as a diag message. 
> 
> Or is it ok for you?
As [I said above](https://reviews.llvm.org/D63082#inline-585063), I don't think 
you should say "boolean context". It's not something people will understand. 
Here we're assigning to a boolean, say that.


================
Comment at: test/Sema/warn-unreachable.c:147
+  // expected-warning@+1 {{'*' in boolean context, the expression will always 
evaluate to 'false'}}
   if (0 * x) calledFun(); // expected-warning {{will never be executed}}
 }
----------------
xbolva00 wrote:
> jfb wrote:
> > xbolva00 wrote:
> > > jfb wrote:
> > > > It seems like here the "will never be executed" warning is more useful. 
> > > > Do we want to emit both?
> > > Useful but -Wunreachable-code is disabled by default (not part of -Wall).
> > I don't think we want two diagnostics when one will do.
> I will drop mul handling then..
No, my feedback isn't about multiplication in particular. My feedback is that 
it's not useful to have both warnings. We should just emit a single warning, 
and it should be maximally helpful. Here it's useful to say that `calledFunc() 
will never be executed because 0*x is always false`.


================
Comment at: test/SemaCXX/warn-int-in-bool-context.cpp:96
+
+  if (f == apple || orange) // expected-warning {{enum constant in boolean 
context}}
+    return a;
----------------
xbolva00 wrote:
> xbolva00 wrote:
> > @aaron.ballman : In C (but not in C++ ugh?) mode we have: 'use of logical 
> > '||' with constant operand' here..
> > 
> > /home/xbolva00/LLVM/llvm/tools/clang/test/SemaCXX/warn-int-in-bool-context.cpp:106:18:
> >  warning: use of logical '||' with constant operand
> >   if (f == apple || orange) // expected-warning {{enum constant in boolean 
> > context}}
> >                  ^  ~~~~~~
> > /home/xbolva00/LLVM/llvm/tools/clang/test/SemaCXX/warn-int-in-bool-context.cpp:106:18:
> >  note: use '|' for a bitwise operation
> >   if (f == apple || orange) // expected-warning {{enum constant in boolean 
> > context}}
> >                  ^~
> >                  |
> > /home/xbolva00/LLVM/llvm/tools/clang/test/SemaCXX/warn-int-in-bool-context.cpp:106:21:
> >  warning: enum constant in boolean context
> >   if (f == apple || orange) // expected-warning {{enum constant in boolean 
> > context}}
> > 
> > 
> > 
> > 
> What is your opinion here (^^) , @jfb ?
> 
> Thanks.
C, C++, ObjC, and ObjC++ should emit different diagnostics here. That being 
said, none of these diagnostics are particular easy to understand. I don't 
think we should ever say "boolean context" anywhere.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63082/new/

https://reviews.llvm.org/D63082



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to