aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/warn-static-const-float.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-01-25 04:22:16 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-01-25 04:22:16 +0000
commitb4b1d69f19f32e8aeb2ce1e0239c6e20a7f9e952 (patch)
treee1717236cdb76c023a6a69d168008ad1ba1d69d5 /test/SemaCXX/warn-static-const-float.cpp
parenteab6652b7e417c8e46b21c7d340f3a7d41492d6e (diff)
Sync 'in class initialization of static const double' extension up with GCC,
and split it out of -Wgnu into its own warning flag. * In C++11, this is now a hard error (GCC has no extension here in C++11 mode). The error can be disabled with -Wno-static-float-init, and has a fixit to add 'constexpr'. * In C++98, this is still an ExtWarn, but is now controlled by -Wstatic-float-init as well as -Wgnu. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173414 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaCXX/warn-static-const-float.cpp')
-rw-r--r--test/SemaCXX/warn-static-const-float.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/SemaCXX/warn-static-const-float.cpp b/test/SemaCXX/warn-static-const-float.cpp
new file mode 100644
index 0000000000..a669c85903
--- /dev/null
+++ b/test/SemaCXX/warn-static-const-float.cpp
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -verify %s -std=c++98 -DEXT
+// RUN: %clang_cc1 -verify %s -std=c++98 -Wno-gnu -DNONE
+// RUN: %clang_cc1 -verify %s -std=c++98 -Wno-static-float-init -DNONE
+// RUN: %clang_cc1 -verify %s -std=c++98 -Wno-gnu-static-float-init -DNONE
+// RUN: %clang_cc1 -verify %s -std=c++11 -DERR
+// RUN: %clang_cc1 -verify %s -std=c++11 -Wno-gnu -DERR
+// RUN: %clang_cc1 -verify %s -std=c++11 -Wno-static-float-init -DNONE
+// RUN: %clang_cc1 -verify %s -std=c++11 -Wno-gnu-static-float-init -DERR
+
+#if NONE
+// expected-no-diagnostics
+#elif ERR
+// expected-error@19 {{in-class initializer for static data member of type 'const double' requires 'constexpr' specifier}}
+#elif EXT
+// expected-warning@19 {{in-class initializer for static data member of type 'const double' is a GNU extension}}
+#endif
+
+struct X {
+ static const double x = 0.0;
+};