r220992 - C++-11 [qoi]. Do not warn on missing 'verride' on use of

Nico Weber thakis at chromium.org
Fri Oct 31 16:28:29 PDT 2014


Thanks!

Here's an example where the method name isn't from a macro expansion, but
it's still a macro argument. Could the warning be suppressed here too?

..\..\win8/metro_driver/chrome_app_view_ash.h(65,15) :  warning(clang):
'Initialize' overrides a member function but is not marked 'override'
[-Winconsistent-missing-override]
  IFACEMETHOD(Initialize)(winapp::Core::ICoreApplicationView* view);
              ^
C:\b\depot_tools\win_toolchain\vs2013_files\win8sdk/Include/um\combaseapi.h(217,58)
:  note(clang): expanded from macro 'IFACEMETHOD'
#define IFACEMETHOD(method)         __override STDMETHOD(method)
                                                         ^
C:\b\depot_tools\win_toolchain\vs2013_files\win8sdk/Include/um\combaseapi.h(205,89)
:  note(clang): expanded from macro 'STDMETHOD'
#define STDMETHOD(method)        virtual COM_DECLSPEC_NOTHROW HRESULT
STDMETHODCALLTYPE method

            ^
C:\b\depot_tools\win_toolchain\vs2013_files\win8sdk/Include/winrt/Windows.ApplicationModel.Core.h(1179,59)
:  note(clang): overridden virtual function is here
                        virtual HRESULT STDMETHODCALLTYPE Initialize(
                                                          ^

On Fri, Oct 31, 2014 at 12:56 PM, Fariborz Jahanian <fjahanian at apple.com>
wrote:

> Author: fjahanian
> Date: Fri Oct 31 14:56:27 2014
> New Revision: 220992
>
> URL: http://llvm.org/viewvc/llvm-project?rev=220992&view=rev
> Log:
> C++-11 [qoi]. Do not warn on missing 'verride' on use of
> macros in user code when macros themselves are defined
> in a system header. rdar://18295240
>
> Added:
>     cfe/trunk/test/SemaCXX/Inputs/override-system-header.h
>     cfe/trunk/test/SemaCXX/override-in-system-header.cpp
> Modified:
>     cfe/trunk/lib/Sema/SemaDeclCXX.cpp
>
> Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=220992&r1=220991&r2=220992&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Fri Oct 31 14:56:27 2014
> @@ -1905,6 +1905,12 @@ void Sema::DiagnoseAbsenceOfOverrideCont
>        isa<CXXDestructorDecl>(MD))
>      return;
>
> +  if (MD->getLocation().isMacroID()) {
> +    SourceLocation MacroLoc =
> getSourceManager().getSpellingLoc(MD->getLocation());
> +    if (getSourceManager().isInSystemHeader(MacroLoc))
> +      return;
> +  }
> +
>    if (MD->size_overridden_methods() > 0) {
>      Diag(MD->getLocation(),
> diag::warn_function_marked_not_override_overriding)
>        << MD->getDeclName();
>
> Added: cfe/trunk/test/SemaCXX/Inputs/override-system-header.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/Inputs/override-system-header.h?rev=220992&view=auto
>
> ==============================================================================
> --- cfe/trunk/test/SemaCXX/Inputs/override-system-header.h (added)
> +++ cfe/trunk/test/SemaCXX/Inputs/override-system-header.h Fri Oct 31
> 14:56:27 2014
> @@ -0,0 +1,3 @@
> +// override-system-header.h to test out 'override' warning.
> +// rdar://18295240
> +#define END_COM_MAP virtual unsigned AddRef(void) = 0;
>
> Added: cfe/trunk/test/SemaCXX/override-in-system-header.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/override-in-system-header.cpp?rev=220992&view=auto
>
> ==============================================================================
> --- cfe/trunk/test/SemaCXX/override-in-system-header.cpp (added)
> +++ cfe/trunk/test/SemaCXX/override-in-system-header.cpp Fri Oct 31
> 14:56:27 2014
> @@ -0,0 +1,17 @@
> +// RUN: %clang_cc1 -std=c++11 -isystem %S/Inputs %s -verify
> +// expected-no-diagnostics
> +// rdar://18295240
> +
> +#include <override-system-header.h>
> +
> +struct A
> +{
> +  virtual void x();
> +  END_COM_MAP;
> +};
> +
> +struct B : A
> +{
> +  virtual void x() override;
> +  END_COM_MAP;
> +};
>
>
> _______________________________________________
> 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/20141031/d843540f/attachment.html>


More information about the cfe-commits mailing list