shafik requested changes to this revision. shafik added a comment. This revision now requires changes to proceed.
The current approach of mixing bytes and indices in the same diagnostic is too confusing. I think we see some acceptable messages for out of bounds access by looking at three different implementations diagnostic for OOB access in a constant expression context: int main() { constexpr int arr[1]{}; constexpr int x = arr[3]; } We have clang which produces: <source>:3:23: note: cannot refer to element 3 of array of 1 element in a constant expression constexpr int x = arr[3]; ^ gcc produces: <source>:3:28: error: array subscript value '3' is outside the bounds of array 'arr' of type 'const int [1]' 3 | constexpr int x = arr[3]; | ~~~~~^ and MSVC produces: <source>(3): note: failure was caused by out of range index 3; allowed range is 0 <= index < 1 I think any approach similar to this would be acceptable. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135920/new/ https://reviews.llvm.org/D135920 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits