aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@gcc.gnu.org>2015-11-20 20:36:03 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2015-11-20 20:36:03 +0000
commit1fb19247a9d1771ffd86e27d55cb8863b32e0f52 (patch)
treed9267902f0eef3ccd76d0ca0fc72f4b33624b7df
parenta87a86e1e97610650fb4305edc76a8f4a399a46e (diff)
downloadgcc-1fb19247a9d1771ffd86e27d55cb8863b32e0f52.zip
gcc-1fb19247a9d1771ffd86e27d55cb8863b32e0f52.tar.gz
gcc-1fb19247a9d1771ffd86e27d55cb8863b32e0f52.tar.bz2
Add testcase erroneously omitted from r230638
From-SVN: r230675
-rw-r--r--gcc/testsuite/g++.dg/spellcheck-fields.C89
1 files changed, 89 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/spellcheck-fields.C b/gcc/testsuite/g++.dg/spellcheck-fields.C
new file mode 100644
index 0000000..df49c92
--- /dev/null
+++ b/gcc/testsuite/g++.dg/spellcheck-fields.C
@@ -0,0 +1,89 @@
+/* { dg-do compile } */
+
+struct foo
+{
+ int foo;
+ int bar;
+ int baz;
+};
+
+int test (struct foo *ptr)
+{
+ return ptr->m_bar; /* { dg-error "'struct foo' has no member named 'm_bar'; did you mean 'bar'?" } */
+}
+
+int test2 (void)
+{
+ struct foo instance = {0, 0, 0};
+ return instance.m_bar; /* { dg-error "'struct foo' has no member named 'm_bar'; did you mean 'bar'?" } */
+}
+
+struct s {
+ struct j { int aa; } kk;
+ int ab;
+};
+
+void test3 (struct s x)
+{
+ x.ac; /* { dg-error "'struct s' has no member named 'ac'; did you mean 'ab'?" } */
+}
+
+int test4 (struct foo *ptr)
+{
+ return sizeof (ptr->foa); /* { dg-error "'struct foo' has no member named 'foa'; did you mean 'foo'?" } */
+}
+
+/* Verify that we don't offer nonsensical suggestions. */
+
+int test5 (struct foo *ptr)
+{
+ return ptr->this_is_unlike_any_of_the_fields; /* { dg-bogus "did you mean" } */
+ /* { dg-error "has no member named" "" { target *-*-* } 40 } */
+}
+
+union u
+{
+ int color;
+ int shape;
+};
+
+int test6 (union u *ptr)
+{
+ return ptr->colour; /* { dg-error "'union u' has no member named 'colour'; did you mean 'color'?" } */
+}
+
+struct has_anon
+{
+ struct { int color; } s;
+};
+
+int test7 (struct has_anon *ptr)
+{
+ return ptr->s.colour; /* { dg-error "'struct has_anon::<anonymous>' has no member named 'colour'; did you mean 'color'?" } */
+}
+
+int test8 (foo &ref)
+{
+ return ref.m_bar; /* { dg-error "'struct foo' has no member named 'm_bar'; did you mean 'bar'?" } */
+}
+
+struct bar : public foo
+{
+ int fizz;
+ typedef int my_type;
+};
+
+int test9 (bar *ptr)
+{
+ return ptr->fuzz; /* { dg-error "'struct bar' has no member named 'fuzz'; did you mean 'fizz'?" } */
+}
+
+int test10 (bar *ptr)
+{
+ return ptr->m_foo; /* { dg-error "'struct bar' has no member named 'm_foo'; did you mean 'foo'?" } */
+}
+
+int test11 (bar *ptr)
+{
+ return ptr->mytype; /* { dg-error "'struct bar' has no member named 'mytype'; did you mean 'my_type'?" } */
+}