gribozavr2 accepted this revision.
gribozavr2 added inline comments.
This revision is now accepted and ready to land.


================
Comment at: clang/lib/Tooling/Syntax/BuildTree.cpp:227-254
+namespace llvm {
+template <> struct DenseMapInfo<clang::NestedNameSpecifierLoc> {
+  using FirstInfo = DenseMapInfo<clang::NestedNameSpecifier *>;
+  using SecondInfo = DenseMapInfo<void *>;
+
+  static inline NestedNameSpecifierLoc getEmptyKey() {
+    return NestedNameSpecifierLoc(FirstInfo::getEmptyKey(),
----------------
eduucaldas wrote:
> Inpired on the definition of: 
> * `template<typename T> struct DenseMapInfo<T*>`
> * `template<typename T, typename U> struct DenseMapInfo<std::pair<T,U>>`
> 
> Please tell me if this is all silly.
This is the right way to use DenseMapInfo, just move the specialization into 
the file that defines NNSLoc.


================
Comment at: clang/lib/Tooling/Syntax/BuildTree.cpp:892
 
-  syntax::NestedNameSpecifier *
-  BuildNestedNameSpecifier(const NestedNameSpecifierLoc &QualifierLoc) {
+  bool TraverseNestedNameSpecifierLoc(NestedNameSpecifierLoc QualifierLoc) {
     if (!QualifierLoc)
----------------
Please add a comment that explains why we override Traverse for NNSLoc instead 
of WalkUpFrom.

Something like:

To build syntax tree nodes for NestedNameSpecifierLoc we override Traverse 
instead of WalkUpFrom because we want to traverse the children ourselves and 
build a list instead of a nested tree of name specifier prefixes.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D85439

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

Reply via email to