mizvekov added a comment.

In D112374#3650749 <https://reviews.llvm.org/D112374#3650749>, @glandium wrote:

> FWIW, this change also broke this check in Firefox's clang plugin: 
> https://searchfox.org/mozilla-central/rev/0d11f3660945ce35c49501bb44bc4f82bb2b503c/build/clang-plugin/NoPrincipalGetURI.cpp

Thanks for the report!

I think this is a combination of 1) and 2) from above post 
(https://reviews.llvm.org/D112374#3650056).

I believe that hasType(asString()) is supposed to match the type as-written. 
The fact that it did not so for unqualified names is what this patch is fixing.

Can you confirm that this `NoPrincipalGetURI` matcher would, in clang version 
without this patch here, fail to match if you had rewritten the `GetUri` method 
to use a qualified name? Something like this:

From:

  nsIPrincipal *getURI();

To:

  ::nsIPrincipal *getURI();

Ie qualify with the global namespace or something equivalent that works in the 
Firefox codebase?

I believe that matching to the canonical type would be the simplest fix for 
that bug:

On mozilla-central/build/clang-plugin/NoPrincipalGetURI.cpp change from:

  anyOf(on(hasType(asString("class nsIPrincipal *"))),
        on(hasType(asString("class nsIPrincipal")))),

To:

  anyOf(on(hasType(hasCanonicalType(asString("class nsIPrincipal *")))),
        on(hasType(hasCanonicalType(asString("class nsIPrincipal"))))),

Ie nest the `asString` matcher inside a `hasCanonicalType` matcher.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112374/new/

https://reviews.llvm.org/D112374

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

Reply via email to