llvm-project/clang/test/Parser/cxx23-assume.cpp
Yanzuo Liu b39160ddfb
[Clang][Sema] Expression in assumption attribute should be full expression (#150814)
Add missing `ActOnFinishFullExpr` to `BuildCXXAssumeExpr`. We did it
during template instantiation but forgot non-template case.
2025-07-29 11:53:02 +08:00

19 lines
777 B
C++

// RUN: %clang_cc1 -std=c++23 -x c++ %s -verify
void f(int x, int y) {
[[assume(true)]];
[[assume(1)]];
[[assume(1.0)]];
[[assume(1 + 2 == 3)]];
[[assume(x ? 1 : 2)]]; // expected-warning {{converting the result of '?:' with integer constants to a boolean always evaluates to 'true'}}
[[assume(x && y)]];
[[assume(true)]] [[assume(true)]];
[[assume]]; // expected-error {{takes one argument}}
[[assume(]]; // expected-error {{expected expression}}
[[assume()]]; // expected-error {{expected expression}}
[[assume(2]]; // expected-error {{expected ')'}} expected-note {{to match this '('}}
[[assume(x = 2)]]; // expected-error {{requires parentheses}}
[[assume(2, 3)]]; // expected-error {{requires parentheses}} expected-warning {{has no effect}}
}