[PATCH] D112374: [clang] Implement ElaboratedType sugaring for types written bare
Matheus Izvekov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 14 03:04:53 PDT 2022
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
More information about the cfe-commits
mailing list