OSDN Git Service

PR c/13804
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Sep 2004 19:33:55 +0000 (19:33 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Sep 2004 19:33:55 +0000 (19:33 +0000)
* 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
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr13804-1.c [new file with mode: 0644]

index 623ad70..8c0e629 100644 (file)
@@ -1,3 +1,10 @@
+2004-09-27  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       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  <dj@redhat.com>
 
        * config/stormy16/stormy16.c (xstormy16_asm_output_aligned_common):
index 7d36e7b..d744296 100644 (file)
@@ -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;
        }
index 092fb98..eb4165c 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-27  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       PR c/13804
+       * gcc.dg/pr13804-1.c: New test.
+
 2004-09-27  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
 
        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 (file)
index 0000000..2dbd731
--- /dev/null
@@ -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 <jsm@polyomino.org.uk> */
+/* { 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'" } */
+}