[PATCH] -Woverloaded-virtual

Aaron Ballman aaron at aaronballman.com
Wed Jul 30 13:30:20 PDT 2014


I believe the following patch addresses a slight deficiency in our
-Woverloaded-virtual warning check. Specifically, it causes the
following code to warn (which matches GCC's behavior):

struct base {
  virtual void foo(int I) {}
  virtual void foo(char C) {}
};

struct derived : public base {
  void foo(int I2) override {}
};

It does this by continuing to check other methods instead of early
returning out of processing them when an exact signature match is
encountered. I believe this is an improvement because it catches
problems like:

derived d;
d.foo('1');

Where derived::foo(int) is called when the user may expect
base::foo(char) to be called.

~Aaron
-------------- next part --------------
A non-text attachment was scrubbed...
Name: virtual.patch
Type: application/octet-stream
Size: 2117 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140730/473c5faa/attachment.obj>


More information about the cfe-commits mailing list