https://github.com/benlangmuir commented:

I'm skeptical that treating `FileEntryRef` as `FileEntry *` for the purposes of 
equality and hashing is a good idea.  To me, the obvious interpretation of 
`FileEntryRef ==` is that the path must be equal, and having it based on the 
dev/inode is surprising.  I know that's not something you're *introducing* in 
this PR, but I would prefer we remove that functionality rather than build more 
on top of it.

Here are some alternative ways we could handle this that I think are more 
principled:
* We could do `DenseMap<FileEntry *, FileEntryRef>` instead of the DenseSet, 
and similarly embed the FileEntryRef into the RHS type in cases with DenseMap
* Alternatively, we could add a wrapper type for FileEntryRef that continues to 
have the `FileEntry *` equality/hashing semantics, but where the name of that 
wrapper and/or the fact you need to unwrap it explicitly makes it obvious that 
the semantics are not "just" FileEntryRef.  If we can figure out a good name 
for this I think it would be a good solution.

https://github.com/llvm/llvm-project/pull/67742
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to