re PR c/13804 (Error message enhancement Request)
authorJoseph Myers <jsm@polyomino.org.uk>
Mon, 27 Sep 2004 19:33:55 +0000 (20:33 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Mon, 27 Sep 2004 19:33:55 +0000 (20:33 +0100)
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.

From-SVN: r88195

gcc/ChangeLog
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr13804-1.c [new file with mode: 0644]

index 623ad706e8d9ad1e37d9508dcec861cffc35f66b..8c0e62927b35d48956715efd0fec58bc5ff4f8b3 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 7d36e7bdde1373912a3f594ac4bde5b171b98b12..d744296aa13da5efb7810285ed7c1626afc27a70 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 092fb986ecf1517366cffaa59a1122059bd99f7e..eb4165c93b3e3dd976f596ccdf86380214740709 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'" } */
+}