blob: dc1c52fa4ba76d587835d4f22c9ef77c4e53aa27 [file] [log] [blame]
Benjamin Kramer28bdbf02013-08-21 11:45:27 +00001// RUN: %clang_cc1 -std=c++1y -fblocks -fsyntax-only -verify %s
2// PR16946
3// expected-no-diagnostics
4
5auto foo() {
6 static_assert(sizeof(__func__) == 4, "foo");
7 static_assert(sizeof(__FUNCTION__) == 4, "foo");
8 static_assert(sizeof(__PRETTY_FUNCTION__) == 11, "auto foo()");
9 return 0;
10}
11
12auto bar() -> decltype(42) {
13 static_assert(sizeof(__func__) == 4, "bar");
14 static_assert(sizeof(__FUNCTION__) == 4, "bar");
15 static_assert(sizeof(__PRETTY_FUNCTION__) == 10, "int bar()");
16 return 0;
17}
18
19int main() {
20 static_assert(sizeof(__func__) == 5, "main");
21 static_assert(sizeof(__FUNCTION__) == 5, "main");
22 static_assert(sizeof(__PRETTY_FUNCTION__) == 11, "int main()");
23
24 []() {
25 static_assert(sizeof(__func__) == 11, "operator()");
26 static_assert(sizeof(__FUNCTION__) == 11, "operator()");
27 static_assert(sizeof(__PRETTY_FUNCTION__) == 51,
28 "auto main()::<anonymous class>::operator()() const");
29 return 0;
30 }
31 ();
32
33 ^{
34 // FIXME: This is obviously wrong.
35 static_assert(sizeof(__func__) == 1, "__main_block_invoke");
36 static_assert(sizeof(__FUNCTION__) == 1, "__main_block_invoke");
37 static_assert(sizeof(__PRETTY_FUNCTION__) == 1, "__main_block_invoke");
38 }
39 ();
40}