125b3c049e70834cf33790a28643ab058b507b35cBen Cheng// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
225b3c049e70834cf33790a28643ab058b507b35cBen Cheng// RUN: cp %s %t
325b3c049e70834cf33790a28643ab058b507b35cBen Cheng// RUN: not %clang_cc1 -pedantic -fixit -x c %t
425b3c049e70834cf33790a28643ab058b507b35cBen Cheng// RUN: %clang_cc1 -pedantic -Werror -x c %t
525b3c049e70834cf33790a28643ab058b507b35cBen Cheng
625b3c049e70834cf33790a28643ab058b507b35cBen Cheng/* This is a test of the various code modification hints that are
725b3c049e70834cf33790a28643ab058b507b35cBen Cheng   provided as part of warning or extension diagnostics. All of the
825b3c049e70834cf33790a28643ab058b507b35cBen Cheng   warnings will be fixed by -fixit, and the resulting file should
925b3c049e70834cf33790a28643ab058b507b35cBen Cheng   compile cleanly with -Werror -pedantic. */
1025b3c049e70834cf33790a28643ab058b507b35cBen Cheng
1125b3c049e70834cf33790a28643ab058b507b35cBen Chengstruct s; // expected-note{{previous use is here}}
1225b3c049e70834cf33790a28643ab058b507b35cBen Cheng
1325b3c049e70834cf33790a28643ab058b507b35cBen Chengunion s *s1; // expected-error{{use of 's' with tag type that does not match previous declaration}}
1425b3c049e70834cf33790a28643ab058b507b35cBen Cheng
1525b3c049e70834cf33790a28643ab058b507b35cBen Chengstruct Point {
1625b3c049e70834cf33790a28643ab058b507b35cBen Cheng  float x, y, z;
1725b3c049e70834cf33790a28643ab058b507b35cBen Cheng};
1825b3c049e70834cf33790a28643ab058b507b35cBen Cheng
1925b3c049e70834cf33790a28643ab058b507b35cBen Chengstruct Point *get_origin();
2025b3c049e70834cf33790a28643ab058b507b35cBen Cheng
2125b3c049e70834cf33790a28643ab058b507b35cBen Chengvoid test_point() {
2225b3c049e70834cf33790a28643ab058b507b35cBen Cheng  (void)get_origin->x; // expected-error {{base of member reference is a function; perhaps you meant to call it with no arguments?}}
2325b3c049e70834cf33790a28643ab058b507b35cBen Cheng}
2425b3c049e70834cf33790a28643ab058b507b35cBen Cheng