xref: /llvm-project/clang/test/Misc/constexpr-source-ranges.cpp (revision f6ee4e3f5562acfb11f3c36f555e37246aaeefea)
1 // RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-print-source-range-info -fcxx-exceptions %s 2>&1 | FileCheck %s
2 // RUN: not %clang_cc1 -fsyntax-only -fexperimental-new-constant-interpreter -fdiagnostics-print-source-range-info -fcxx-exceptions %s 2>&1 | FileCheck %s
3 
4 constexpr int f() {
5   throw 1;
6   return 0;
7 }
8 
9 // CHECK: constexpr-source-ranges.cpp:5:3:{5:3-5:10}
10 
11 
12 constexpr int I = 12;
13 constexpr const int *P = &I;
14 constexpr long L = (long)P;
15 // CHECK: constexpr-source-ranges.cpp:14:20:{14:20-14:27}
16 
17 constexpr int zero() {
18   return 0;
19 }
20 constexpr int divByZero() {
21   return 1 / zero();
22 }
23 static_assert(divByZero() == 0, "");
24 /// We see this twice. Once from sema and once when
25 /// evaluating the static_assert above.
26 // CHECK: constexpr-source-ranges.cpp:23:15:{23:15-23:31}
27 // CHECK: constexpr-source-ranges.cpp:21:12:{21:14-21:20}
28