]> granicus.if.org Git - clang/commit
Better diagnostic for static override when methods are thiscall by default
authorHans Wennborg <hans@hanshq.net>
Wed, 11 Dec 2013 17:42:11 +0000 (17:42 +0000)
committerHans Wennborg <hans@hanshq.net>
Wed, 11 Dec 2013 17:42:11 +0000 (17:42 +0000)
commit60b4b7da3728709aff5055d8b7aa19b6f9864873
treed39b12f721f9249d95a819d040ec372c77088d4f
parentf9f813c7d03c54e4ec93f76d8714e12047ca6582
Better diagnostic for static override when methods are thiscall by default

Methods are thiscall by default in the MS ABI, and also in MinGW targetting GCC 4.7 or later.

This changes the diagnostic from the technically correct but hard to understand:

  virtual function 'foo' has different calling convention attributes ('void ()') than the function it overrides (which has calling convention 'void () __attribute__((thiscall))')

to the more intuitive and also correct:

  'static' member function 'foo' overrides a virtual function

We already have a test for this. Let's just run it in both ABI modes.

Differential Revision: http://llvm-reviews.chandlerc.com/D2375

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@197055 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaDeclCXX.cpp
test/SemaCXX/virtual-override.cpp