aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/warn-missing-variable-declarations.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2012-10-24 20:14:09 +0000
committerEli Friedman <eli.friedman@gmail.com>2012-10-24 20:14:09 +0000
commit6c8b6498bed5f378018285c42b367dc2e06a98cd (patch)
tree2547c74cc46a29af812806d6202c3301fb7f6b6f /test/SemaCXX/warn-missing-variable-declarations.cpp
parenta71a7d8a1ce4474e7bdb680658fb58b6caf391d3 (diff)
Add an additional test for namespaces and -Wmissing-variable-declarations. Move C++ test into SemaCXX.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166616 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaCXX/warn-missing-variable-declarations.cpp')
-rw-r--r--test/SemaCXX/warn-missing-variable-declarations.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/SemaCXX/warn-missing-variable-declarations.cpp b/test/SemaCXX/warn-missing-variable-declarations.cpp
new file mode 100644
index 0000000000..12af9735d1
--- /dev/null
+++ b/test/SemaCXX/warn-missing-variable-declarations.cpp
@@ -0,0 +1,43 @@
+// RUN: %clang -Wmissing-variable-declarations -fsyntax-only -Xclang -verify %s
+
+// Variable declarations that should trigger a warning.
+int vbad1; // expected-warning{{no previous extern declaration for non-static variable 'vbad1'}}
+int vbad2 = 10; // expected-warning{{no previous extern declaration for non-static variable 'vbad2'}}
+
+namespace x {
+ int vbad3; // expected-warning{{no previous extern declaration for non-static variable 'vbad3'}}
+}
+
+// Variable declarations that should not trigger a warning.
+static int vgood1;
+extern int vgood2;
+int vgood2;
+static struct {
+ int mgood1;
+} vgood3;
+
+// Functions should never trigger a warning.
+void fgood1(void);
+void fgood2(void) {
+ int lgood1;
+ static int lgood2;
+}
+static void fgood3(void) {
+ int lgood3;
+ static int lgood4;
+}
+
+// Structures, namespaces and classes should be unaffected.
+struct sgood1 {
+ int mgood2;
+};
+struct {
+ int mgood3;
+} sgood2;
+class CGood1 {
+ static int MGood1;
+};
+int CGood1::MGood1;
+namespace {
+ int mgood4;
+}