erichkeane wrote: > @Rajveer100 I think instead of looking at the context, we should check if the > expression (`Ex`) is instantiation dependent
I don't think we can just check the expression, the 'throw' itself could be completely fine. Consider: ``` template<typename T> void foo() { throw 1; ``` The expression is NOT dependent, but we don't wanna diagnose anyway unless it is instantiated. > @erichkeane As expected the following case is being accepted, which shouldn't > happen, let me know what you recommend to diagnose this: > > ```c++ > template <typename T> void foo() { > try { > } catch (...) { > } > throw 1; > } > void bar2() { foo<int>(); } > ``` What we will have to do likely is move the checking for this to some piece of common code that is used by TreeTransform for these two. I haven't looked at a good place, but you'll probably see `TransformCXXThrowExpr` (and an equiv for `try`) that will call a rebuild/etc type function, which should then call the `build` (or some variety of a check function). Also note, even in THOSE cases we have to properly check the decl context, since it could be a partial specialization/instantiation, so please make sure those are tested as well! https://github.com/llvm/llvm-project/pull/139859 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits