[PATCH] D60151: [clang-tidy] Add using SmallSet to LLVM.h to fix bug in typedef in llvm checkers.

Don Hinton via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 3 08:02:54 PDT 2019


hintonda added a comment.

In D60151#1453099 <https://reviews.llvm.org/D60151#1453099>, @alexfh wrote:

> The change looks fine, but I don't understand the description of this revision. Could you clarify which checkers you're talking about and which bug you observe?


Sorry for not being clearer in my original description.

The error can be triggered by opening up a new `llvm` namespace under `clang::tidy` prior to referencing `llvm::SmallSet`, which would happened if a new llvm checker that gets included in `LLVMTidyModule.cpp` before `HeaderGuardCheck.h` -- `HeaderGuardCheck.h` includes `HeaderFileExternsions.h` prior to opening the new `llvm` namespace.  Here's the error message you'd get:

  llvm-project/clang-tools-extra/clang-tidy/llvm/../utils/../utils/HeaderFileExtensionsUtils.h:24:9: error: no template named 'SmallSet' in namespace 'clang::tidy::llvm'; did you mean '::llvm::SmallSet'?
  typedef llvm::SmallSet<llvm::StringRef, 5> HeaderFileExtensionsSet;
          ^~~~~~~~~~~~~~
          ::llvm::SmallSet
  llvm-project/llvm/include/llvm/ADT/SmallSet.h:134:7: note: '::llvm::SmallSet' declared here
  class SmallSet {
        ^
  llvm-project/clang-tools-extra/clang-tidy/llvm/../utils/../utils/HeaderFileExtensionsUtils.h:24:30: error: no member named 'StringRef' in namespace 'clang::tidy::llvm'
  typedef llvm::SmallSet<llvm::StringRef, 5> HeaderFileExtensionsSet;
                         ~~~~~~^
  2 errors generated.

Here's the one line contrived change needed to demonstrate the error produced above, which is the same effect of including an `llvm` checker header before including this file:

  --- a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h
  +++ b/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h
  @@ -16,6 +16,7 @@
  
   namespace clang {
   namespace tidy {
  +namespace llvm {}
   namespace utils {
  
   typedef llvm::SmallSet<llvm::StringRef, 5> HeaderFileExtensionsSet;


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D60151





More information about the cfe-commits mailing list