This revision was automatically updated to reflect the committed changes. Closed by commit rG4f6d69846747: [AST] Fix location call storage with common last-invocation (authored by stephenkelly).
Changed prior to commit: https://reviews.llvm.org/D100548?vs=337713&id=337917#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D100548/new/ https://reviews.llvm.org/D100548 Files: clang/lib/Tooling/NodeIntrospection.cpp clang/unittests/Introspection/IntrospectionTest.cpp Index: clang/unittests/Introspection/IntrospectionTest.cpp =================================================================== --- clang/unittests/Introspection/IntrospectionTest.cpp +++ clang/unittests/Introspection/IntrospectionTest.cpp @@ -45,6 +45,31 @@ #define STRING_LOCATION_PAIR(INSTANCE, LOC) Pair(#LOC, INSTANCE->LOC) +TEST(Introspection, SourceLocations_CallContainer) { + SourceLocationMap slm; + SharedLocationCall Prefix; + slm.insert(std::make_pair( + SourceLocation(), + llvm::makeIntrusiveRefCnt<LocationCall>(Prefix, "getSourceRange"))); + EXPECT_EQ(slm.size(), 1u); + + auto callTypeLoc = + llvm::makeIntrusiveRefCnt<LocationCall>(Prefix, "getTypeLoc"); + slm.insert(std::make_pair( + SourceLocation(), + llvm::makeIntrusiveRefCnt<LocationCall>(callTypeLoc, "getSourceRange"))); + EXPECT_EQ(slm.size(), 2u); +} + +TEST(Introspection, SourceLocations_CallChainFormatting) { + SharedLocationCall Prefix; + auto chainedCall = llvm::makeIntrusiveRefCnt<LocationCall>( + llvm::makeIntrusiveRefCnt<LocationCall>(Prefix, "getTypeLoc"), + "getSourceRange"); + EXPECT_EQ(LocationCallFormatterCpp::format(*chainedCall), + "getTypeLoc().getSourceRange()"); +} + TEST(Introspection, SourceLocations_Stmt) { if (!NodeIntrospection::hasIntrospectionSupport()) return; Index: clang/lib/Tooling/NodeIntrospection.cpp =================================================================== --- clang/lib/Tooling/NodeIntrospection.cpp +++ clang/lib/Tooling/NodeIntrospection.cpp @@ -66,13 +66,15 @@ else if (LHS.first.getEnd() != RHS.first.getEnd()) return false; - return LHS.second->name() < RHS.second->name(); + return LocationCallFormatterCpp::format(*LHS.second) < + LocationCallFormatterCpp::format(*RHS.second); } bool RangeLessThan::operator()( std::pair<SourceLocation, SharedLocationCall> const &LHS, std::pair<SourceLocation, SharedLocationCall> const &RHS) const { if (LHS.first == RHS.first) - return LHS.second->name() < RHS.second->name(); + return LocationCallFormatterCpp::format(*LHS.second) < + LocationCallFormatterCpp::format(*RHS.second); return LHS.first < RHS.first; } } // namespace internal
Index: clang/unittests/Introspection/IntrospectionTest.cpp =================================================================== --- clang/unittests/Introspection/IntrospectionTest.cpp +++ clang/unittests/Introspection/IntrospectionTest.cpp @@ -45,6 +45,31 @@ #define STRING_LOCATION_PAIR(INSTANCE, LOC) Pair(#LOC, INSTANCE->LOC) +TEST(Introspection, SourceLocations_CallContainer) { + SourceLocationMap slm; + SharedLocationCall Prefix; + slm.insert(std::make_pair( + SourceLocation(), + llvm::makeIntrusiveRefCnt<LocationCall>(Prefix, "getSourceRange"))); + EXPECT_EQ(slm.size(), 1u); + + auto callTypeLoc = + llvm::makeIntrusiveRefCnt<LocationCall>(Prefix, "getTypeLoc"); + slm.insert(std::make_pair( + SourceLocation(), + llvm::makeIntrusiveRefCnt<LocationCall>(callTypeLoc, "getSourceRange"))); + EXPECT_EQ(slm.size(), 2u); +} + +TEST(Introspection, SourceLocations_CallChainFormatting) { + SharedLocationCall Prefix; + auto chainedCall = llvm::makeIntrusiveRefCnt<LocationCall>( + llvm::makeIntrusiveRefCnt<LocationCall>(Prefix, "getTypeLoc"), + "getSourceRange"); + EXPECT_EQ(LocationCallFormatterCpp::format(*chainedCall), + "getTypeLoc().getSourceRange()"); +} + TEST(Introspection, SourceLocations_Stmt) { if (!NodeIntrospection::hasIntrospectionSupport()) return; Index: clang/lib/Tooling/NodeIntrospection.cpp =================================================================== --- clang/lib/Tooling/NodeIntrospection.cpp +++ clang/lib/Tooling/NodeIntrospection.cpp @@ -66,13 +66,15 @@ else if (LHS.first.getEnd() != RHS.first.getEnd()) return false; - return LHS.second->name() < RHS.second->name(); + return LocationCallFormatterCpp::format(*LHS.second) < + LocationCallFormatterCpp::format(*RHS.second); } bool RangeLessThan::operator()( std::pair<SourceLocation, SharedLocationCall> const &LHS, std::pair<SourceLocation, SharedLocationCall> const &RHS) const { if (LHS.first == RHS.first) - return LHS.second->name() < RHS.second->name(); + return LocationCallFormatterCpp::format(*LHS.second) < + LocationCallFormatterCpp::format(*RHS.second); return LHS.first < RHS.first; } } // namespace internal
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits