asoffer added inline comments.

================
Comment at: clang/include/clang/Tooling/Transformer/Transformer.h:103-108
+  template <typename ConsumerFn,
+            std::enable_if_t<
+                llvm::is_invocable<
+                    ConsumerFn,
+                    
llvm::Expected<llvm::MutableArrayRef<AtomicChange>>>::value,
+                int> = 0>
----------------
Given that we're simply passing this off to the NoMetadataImpl which accepts a 
std::function, I don't see any reason to accept a generic parameter via sfinae. 
We could just accept the std::function and move it. Then the implicit 
conversion from whatever is passed in to std::function will do the heavy sfinae 
lifting.


================
Comment at: clang/include/clang/Tooling/Transformer/Transformer.h:116
+  explicit Transformer(transformer::RewriteRuleWith<T> Rule,
+                       ConsumerFn Consumer);
 
----------------
li.zhe.hua wrote:
> ymandel wrote:
> > why won't we have the same SFINAE here to ensure ConsumerFn is invocable?
> I can't figure out how to implement the SFINAE without instantiating 
> `Result<void>` (which is invalid because `T Metadata` is illegal then). My 
> current attempt is
> 
> ```
>   template <
>       typename T, typename ConsumerFn,
>       std::enable_if_t<
>           std::conjunction<
>               std::negation<std::is_same<T, void>>,
>               llvm::is_invocable<ConsumerFn, 
> llvm::Expected<Result<T>>>>::value,
>           int> = 0>
>   explicit Transformer(transformer::RewriteRuleWith<T> Rule,
>                        ConsumerFn Consumer);
> ```
> 
> I suppose I could provide a specialization of `Result<void>` that is valid? I 
> guess I'll go with that, and just document why it exists?
Accepting the std:function directly should simplify this and avoid the need for 
the Result<void> specialization.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D120360

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

Reply via email to