sammccall added a comment. Oops, sorry for the noise.
I'd forgotten that we're really interested in *why* we reach the conclusion, not the conclusion itself - and that file/line are our proxy for "why" as writing/maintaining descriptions is a burden. ================ Comment at: clang/lib/Format/ContinuationIndenter.cpp:289 Current.closesBlockOrBlockTypeList(Style))) { + DEBUG_FORMAT_TRACE_TOKEN(Current, "!canBreak"); return false; ---------------- klimek wrote: > sammccall wrote: > > annotating all exit paths from this function and `mustBreak` seems much > > more verbose and fragile than wrapping the function (making this version > > private) and adding the annotations in the wrapper. > How do we get the exact condition that triggered? The main trick here is the > __FILE__:__LINE__ in the debug output. Doh. There *is* an a way in recent clang/gcc/msvc, though I suspect you don't want to go down this path... ``` template <typename T> struct LogReturn { T Value; #ifdef NDEBUG LogReturn(T Value) : Value(Value) {} #else const char *File; int Line; // default args are evaluated at callsite LogReturn(T Value, const char *File=__builtin_FILE(), int Line=__builtin_LINE()) : Value(Value), File(File), Line(Line) { dbgs() << ...; } #endif } LogReturn<bool> priv() { return true; } bool pub() { return priv().Value; } ``` Dunno how to get the token without resorting to TLS though. More realistically you could define `trace(bool, Token&, const char*File=..., etc)` and `return trace(true, Tok);` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D145244/new/ https://reviews.llvm.org/D145244 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits