diff options
author | David Malcolm <dmalcolm@gcc.gnu.org> | 2015-11-20 20:36:03 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2015-11-20 20:36:03 +0000 |
commit | 1fb19247a9d1771ffd86e27d55cb8863b32e0f52 (patch) | |
tree | d9267902f0eef3ccd76d0ca0fc72f4b33624b7df | |
parent | a87a86e1e97610650fb4305edc76a8f4a399a46e (diff) | |
download | gcc-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.C | 89 |
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'?" } */ +} |