xref: /llvm-project/clang/test/Parser/cxx23-assume.cpp (revision 2b5f68a5f63d2342a056bf9f86bd116c100fd81a)
1*2b5f68a5SSirraide // RUN: %clang_cc1 -std=c++23 -x c++ %s -verify
2*2b5f68a5SSirraide 
f(int x,int y)3*2b5f68a5SSirraide void f(int x, int y) {
4*2b5f68a5SSirraide   [[assume(true)]];
5*2b5f68a5SSirraide   [[assume(1)]];
6*2b5f68a5SSirraide   [[assume(1.0)]];
7*2b5f68a5SSirraide   [[assume(1 + 2 == 3)]];
8*2b5f68a5SSirraide   [[assume(x ? 1 : 2)]];
9*2b5f68a5SSirraide   [[assume(x && y)]];
10*2b5f68a5SSirraide   [[assume(true)]] [[assume(true)]];
11*2b5f68a5SSirraide 
12*2b5f68a5SSirraide   [[assume]]; // expected-error {{takes one argument}}
13*2b5f68a5SSirraide   [[assume(]]; // expected-error {{expected expression}}
14*2b5f68a5SSirraide   [[assume()]]; // expected-error {{expected expression}}
15*2b5f68a5SSirraide   [[assume(2]]; // expected-error {{expected ')'}} expected-note {{to match this '('}}
16*2b5f68a5SSirraide   [[assume(x = 2)]]; // expected-error {{requires parentheses}}
17*2b5f68a5SSirraide   [[assume(2, 3)]]; // expected-error {{requires parentheses}} expected-warning {{has no effect}}
18*2b5f68a5SSirraide }
19