Author: d0k Date: Fri Sep 7 02:25:23 2018 New Revision: 341643 URL: http://llvm.org/viewvc/llvm-project?rev=341643&view=rev Log: [clang-tidy] Abseil: Allow macros inside of absl to use internal absl things
Modified: clang-tools-extra/trunk/clang-tidy/abseil/AbseilMatcher.h clang-tools-extra/trunk/test/clang-tidy/Inputs/absl/strings/internal-file.h clang-tools-extra/trunk/test/clang-tidy/abseil-no-internal-dependencies.cpp Modified: clang-tools-extra/trunk/clang-tidy/abseil/AbseilMatcher.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/abseil/AbseilMatcher.h?rev=341643&r1=341642&r2=341643&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/abseil/AbseilMatcher.h (original) +++ clang-tools-extra/trunk/clang-tidy/abseil/AbseilMatcher.h Fri Sep 7 02:25:23 2018 @@ -33,7 +33,7 @@ AST_POLYMORPHIC_MATCHER( isInAbseilFile, AST_POLYMORPHIC_SUPPORTED_TYPES(Decl, Stmt, TypeLoc, NestedNameSpecifierLoc)) { auto &SourceManager = Finder->getASTContext().getSourceManager(); - SourceLocation Loc = Node.getBeginLoc(); + SourceLocation Loc = SourceManager.getSpellingLoc(Node.getBeginLoc()); if (Loc.isInvalid()) return false; const FileEntry *FileEntry = Modified: clang-tools-extra/trunk/test/clang-tidy/Inputs/absl/strings/internal-file.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/Inputs/absl/strings/internal-file.h?rev=341643&r1=341642&r2=341643&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/Inputs/absl/strings/internal-file.h (original) +++ clang-tools-extra/trunk/test/clang-tidy/Inputs/absl/strings/internal-file.h Fri Sep 7 02:25:23 2018 @@ -31,3 +31,5 @@ class FriendUsageInternal { namespace absl { void OpeningNamespaceInternally() { strings_internal::InternalFunction(); } } // namespace absl + +#define USE_INTERNAL(x) absl::strings_internal::Internal##x() Modified: clang-tools-extra/trunk/test/clang-tidy/abseil-no-internal-dependencies.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/abseil-no-internal-dependencies.cpp?rev=341643&r1=341642&r2=341643&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/abseil-no-internal-dependencies.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/abseil-no-internal-dependencies.cpp Fri Sep 7 02:25:23 2018 @@ -37,3 +37,11 @@ namespace absl { SomeContainer b; std::string Str = absl::StringsFunction("a"); } // namespace absl + +#define USE_EXTERNAL(x) absl::strings_internal::Internal##x() + +void MacroUse() { + USE_INTERNAL(Function); // no-warning + USE_EXTERNAL(Function); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not reference any 'internal' namespaces; those implementation details are reserved to Abseil +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits