From ff97051093ddfbca9b9e513209e929b4d4fada7f Mon Sep 17 00:00:00 2001 From: jsm28 Date: Mon, 27 Sep 2004 19:33:55 +0000 Subject: [PATCH] PR c/13804 * c-typeck.c (build_component_ref): Name type involved in diagnostic for structure or union without a member of the given name. testsuite: * gcc.dg/pr13804-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88195 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/c-typeck.c | 3 +-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr13804-1.c | 28 ++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr13804-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 623ad706e8d..8c0e62927b3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-09-27 Joseph S. Myers + + PR c/13804 + * c-typeck.c (build_component_ref): Name type involved in + diagnostic for structure or union without a member of the given + name. + 2004-09-27 DJ Delorie * config/stormy16/stormy16.c (xstormy16_asm_output_aligned_common): diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 7d36e7bdde1..d744296aa13 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -1466,8 +1466,7 @@ build_component_ref (tree datum, tree component) if (!field) { - error ("%s has no member named %qs", - code == RECORD_TYPE ? "structure" : "union", + error ("%qT has no member named %qs", type, IDENTIFIER_POINTER (component)); return error_mark_node; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 092fb986ecf..eb4165c93b3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-09-27 Joseph S. Myers + + PR c/13804 + * gcc.dg/pr13804-1.c: New test. + 2004-09-27 Tobias Schlueter PR fortran/16938 diff --git a/gcc/testsuite/gcc.dg/pr13804-1.c b/gcc/testsuite/gcc.dg/pr13804-1.c new file mode 100644 index 00000000000..2dbd731fd69 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr13804-1.c @@ -0,0 +1,28 @@ +/* Diagnostics for attempts to access a member not in a structure or + union should name the type involved. Bug 13804. */ +/* Origin: Joseph Myers */ +/* { dg-do compile } */ +/* { dg-options "" } */ + +struct s0 { int a; }; +union u0 { long b; }; +typedef struct s0 S0; +typedef union u0 U0; + +struct s0 x0; +S0 x1; +union u0 x2; +U0 x3; +struct s0 *x4; +union u0 *x5; + +void +f (void) +{ + x0.c; /* { dg-error "error: 'struct s0' has no member named 'c'" } */ + x1.c; /* { dg-error "error: 'S0' has no member named 'c'" } */ + x2.c; /* { dg-error "error: 'union u0' has no member named 'c'" } */ + x3.c; /* { dg-error "error: 'U0' has no member named 'c'" } */ + x4->c; /* { dg-error "error: 'struct s0' has no member named 'c'" } */ + x5->c; /* { dg-error "error: 'union u0' has no member named 'c'" } */ +} -- 2.11.4.GIT