hazohelet added inline comments.
================ Comment at: clang/lib/AST/ExprConstant.cpp:2422 + << BS.getType(); + Info.Note(BS.getBeginLoc(), diag::note_constexpr_base_inherited_here); + return false; ---------------- tbaeder wrote: > Can you pass `<< BS.getSourceRange()` here? Does that improve things? Currently, `DiagLoc` points to the variable declaration and the `BS.getSourceRange` covers the line where the base class is inherited. This causes distant source range and thus unnecessarily many lines of snippet printing. e.g. ``` struct Base { Base() = delete; }; struct Derived : Base { constexpr Derived() {} }; constexpr Derived dd; ``` Output: ``` source.cpp:7:19: error: constexpr variable 'dd' must be initialized by a constant expression 7 | constexpr Derived dd; | ^~ source.cpp:7:19: note: constructor of base class 'Base' is not called 7 | struct Derived : Base { | ~~~~ 8 | constexpr Derived() {} 9 | }; 10 | constexpr Derived dd; | ^ source.cpp:4:18: note: base class inherited here 4 | struct Derived : Base { | ^ ``` (The line numbers seem incorrect but is already reported in https://github.com/llvm/llvm-project/issues/63524) I think we don't need two notes here because the error is already pointing to the variable declaration. Having something like the following would be succint. ``` source.cpp:7:19: error: constexpr variable 'dd' must be initialized by a constant expression 7 | constexpr Derived dd; | ^~ source.cpp:4:18: note: constructor of base class 'Base' is not called 4 | struct Derived : Base { | ^~~~ ``` Providing source range would be beneficial because the inherited class often spans in a few lines (the code in the crashing report, for example) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D153969/new/ https://reviews.llvm.org/D153969 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits