<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVE1v2zAM_TX2hUjg2k4cH3xolwXLod2ADdhugT7oWKsseZLcLv31o-N8tWuHYQMEW6Skp8dHUtzKXRXNbm7tk9KaQe_RQzRP7j5v1rfvv3z4uCQDWiacBQbahmi2jNJFE0Lno-w6Slc0PDInmtr-nFq3JbsdwSYCTXBMn3ZE2epHlC0vsNN5xwL5aVZCsKDaTmNLx-gygS4wZeBeGQm2hgflQs80tBgaK_00SpZRcn34zpNxiK47eNJM1RJr-PZp83V9d3ICkFMZhDOLDQUUdh0OHI6XDDZsNj5IwbQ-nUbt8V-gzgBGqvoZ8zT7DeUFoPEOfa8Dgb6I9hLoKw7Jg9Ao_1xJbkNDcnJGq6N2wAZFH9A5JXGfxj9KKTTzHlbWQlTcjC64ZEsrxHJglx2Wo2J5nl9g3DBHt0HXc63E3yCeWL4O_ZoOZLZWojPqCSekyOQEQYX82JDSHlgYdTqWlrDDDa_LcExTccgnzYCOOpS9kYz09cqIQXeEujciKGuGdaYdMrmjEqHQaTPQuRMTgqCee4MmNdjb0a2pCoqL26P0Hewoh_Tj_RAVGzfYe7YD5kGNZqOkRAMcmyHigeu-paewHoQw93uXViagA9_YXktQW2Mdgu9FA4JqZxrLKpNlVrKY9VRFrvLMi4YZ9hT3TlfPn4StCk3Pp8K2ZGj9cPxNOme_oyBWK-V9PzBfzbIyL-OmKq_qBeIsyXLGk9kC86wuirKec1anRZLzWDNODTg8V1GaGnyEPQTNSbP4_xmoKk1SGlflVTYr8ny6qAvOF6zMOc_LLMuiPMGWKT0dcIa3LnbVHpL3W0-LWvngz4tU8SQi4p4wMQwqaKzeyDq1xUHxx4YyRWk_1huVLdVT7WxLXTy-xPGeebWn_Qu1yMYB>53949</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            modernize-use-override: ignore when `virtual` is from a macro 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          saschanaz
      </td>
    </tr>
</table>

<pre>
    [Mozilla uses `NS_IMETHOD` macro a lot](https://searchfox.org/mozilla-central/search?q=NS_IMETHOD&path=) to implement a certain kind of virtual methods.

```cpp
#ifdef XP_WIN
#  define NS_IMETHOD_(type) virtual type __stdcall
#else
#  define NS_IMETHOD_(type) virtual type
#endif

#define NS_IMETHOD NS_IMETHOD_(nsresult)
```

We use this to implement both a base method and overrides:

```cpp
class Foo {
  NS_IMETHOD Foo();
};

class Bar: public Foo {
  NS_IMETHOD Foo() override;
};
```

`modernize-use-override` whines at this kind of code:

```
'virtual' is redundant since the function is already declared 'override' [modernize-use-override]
```

It's redundant, yes, but that's okay as it's hidden behind the macro. I think the linter should ignore such case.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVE1v2zAM_TX2hUjgWE5cH3xolwXLod2ADehugSzRsVZZ8iS5XfrrR8f5atcOwwDBFknp8fGJUmXlrozmN7f2WWnNoffoIVokd18369uP3z59XpIBLRfOAgdtQzRfRulVE0LnI3YdpSsaHrkTTW1_Ta3bkt2OYBOBJjiuTysitvoZseUFdrroeCA_zQoIFlTbaWxpGyUT6AJXBh6UkWBreFQu9FxDi6Gx0k-jZBkl14fvIhmH6LqDJ2WqlljD9y-b-_XdyQlATmUQziw2VFDYdThwOCYZbNhsfJCCa33ajdrj_0CdAYxU9QvmKfsD5RWg8Q59rwOBvqr2Eugeh8OD0Cj_UsnKhobkrDhFR-2AD4o-onNK4v4Y_yql0Nx7WFkLUX4zuuCSLUWI5cCOHcJRvjzPLzBuuKNs0PWVVuJfEE8s34Z-SwcyWyvRGfWME1JkcoKgRn5qSGkPPIw6HVtL2CHD2zIcjyk_nCfNgLY6lL2RnPT1yohBd4S6NyIoa4Y41w653FGLUOm0GGjfiQlB0J17hyZdsPerW1MX5BfZo_QD7OgM6Vf1Q1V8XGAf-A64BzWajZISDVTYDBUPXPdXegrrQQjzsHdpZQI68I3ttQS1NdYh-F40IKh3prEsmSxYweOggsbyHfp0voetTw2lJP5H4Uh_EqZ2tqV2HJ-UuHe6fPmYbFVo-moqbEuG1o_H36Rz9gcKqmelvO-HmldzVmRF3JQoZnPBKqxZvshlxliS1PM0YzOZJ8iEjDWv6OoOD12UpgafYA9Bc1I7VmWapDRmxYzN8yybXtV5VV3xIquqrGCMRVmCLVd6OvAY3rjYlXtKVb_1FNTKB38OUqeTAoj7dITPe7p0rvTci4Yb_hzvk5d78r8BAlywbg">