[PATCH] D42895: [libclang] Add `CXSymbolRole role` to CXIdxEntityRefInfo

Ilya Biryukov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 7 09:36:39 PST 2018


ilya-biryukov added inline comments.


================
Comment at: include/clang-c/Index.h:6159
+   */
+  CXSymbolRole role;
 } CXIdxEntityRefInfo;
----------------
Why do we need to store both `CXIdxEntityRefKind` and `CXSymbolRole`? Can we store just `CXSymbolRole`?
Is this for compatibility with existing clients?

If so, maybe we could:
- remove `Implicit` and `Direct` from the `CXSymbolRole`
- keep it only in `CXIdxEntityRefKind`
- not deprecate the `CXIdxEntityRefKind`


================
Comment at: tools/libclang/CXIndexDataConsumer.cpp:154
+  // CXSymbolRole is synchronized with clang::index::SymbolRole.
+  return CXSymbolRole(static_cast<uint32_t>(Role));
+}
----------------
`SymbolRoleSet` seems to have more roles not covered by `CXSymbolRole`.
Should they be accepted by this function? 
If yes, maybe zero those bits?
If no, maybe add an assert?


The extra roles are:
```
  RelationChildOf     = 1 << 9,
  RelationBaseOf      = 1 << 10,
  RelationOverrideOf  = 1 << 11,
  RelationReceivedBy  = 1 << 12,
  RelationCalledBy    = 1 << 13,
  RelationExtendedBy  = 1 << 14,
  RelationAccessorOf  = 1 << 15,
  RelationContainedBy = 1 << 16,
  RelationIBTypeOf    = 1 << 17,
  RelationSpecializationOf = 1 << 18,
```


Repository:
  rC Clang

https://reviews.llvm.org/D42895





More information about the cfe-commits mailing list