xazax.hun added inline comments.

================
Comment at: clang-tidy/modernize/ReplaceUncaughtExceptionCheck.cpp:59
+  if (!BeginLoc.isMacroID()) {
+    Diag << FixItHint::CreateInsertion(BeginLoc.getLocWithOffset(TextLength),
+                                       "s");
----------------
aaron.ballman wrote:
> JonasToth wrote:
> > koldaniel wrote:
> > > JonasToth wrote:
> > > > Could the location not simply be `EndLoc`?
> > > As I could see, when EndLoc was used in Diag (diag(..) of 
> > > CreateInsertion(...) methods,  it still pointed to the beginning of the 
> > > token marking the whole call. So if the CreateInsertion function looked 
> > > like this: 
> > > 
> > >   Diag << FixItHint::CreateInsertion(EndLoc.getLocWithOffset(TextLength), 
> > > "s");
> > > 
> > > had the same effect after applying the fix its as
> > > 
> > >     Diag << 
> > > FixItHint::CreateInsertion(BeginLoc.getLocWithOffset(TextLength), "s");
> > > 
> > > for calls like 'uncaught_exception()' (without std:: namespace written at 
> > > the beginning, because it increases TextLength, and in case of EndLoc the 
> > > offset will be counted from the beginning of the function name, not the 
> > > namespace identifier).
> > Thats odd. You could do a Replacement with `getSourceRange` probably. 
> > Sounds more inefficient, but might be shorter in Code.
> This fixit can break code if the code disallows narrowing conversions. e.g.,
> ```
> bool b{std::uncaught_exception()};
> ```
> In this case, the fixit will take the deprecated code and make it ill-formed 
> instead. Perhaps a better fix-it would be to transform the code into 
> `(std::uncaught_exceptions() > 0)` to keep the resulting expression type a 
> `bool` and still not impact operator precedence?
Good point, but this kind of fix it is a bit ugly. Maybe skipping the fixit in 
narrowing cases or only generate the more complicated replacement in the 
narrowing case would be nicer. 


================
Comment at: test/clang-tidy/modernize-replace-uncaught-exception.cpp:16
+template <typename T>
+int doSomething(T t) { 
+    return t();
----------------
It would be great to have a test where the template parameter is a function 
pointer and it is called with `uncaught_exception`. And with a check fixes make 
sure that the definition of the template is untouched.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D40787



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

Reply via email to