semantics.c (finish_switch_cond): Improve error message location.
authorPaolo Carlini <paolo.carlini@oracle.com>
Sat, 24 Aug 2019 19:39:44 +0000 (19:39 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 24 Aug 2019 19:39:44 +0000 (19:39 +0000)
/cp
2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>

* semantics.c (finish_switch_cond): Improve error message location.

/testsuite
2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/conversion/simd4.C: Test all the locations.

From-SVN: r274901

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/conversion/simd4.C

index 86d1849acc4b31bfd5e1a7c442c61c91b406de3a..d0a8c7745a242427b4cbd27f24151bdd9e011aa8 100644 (file)
@@ -1,3 +1,7 @@
+2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * semantics.c (finish_switch_cond): Improve error message location.
+
 2019-08-22  Jason Merrill  <jason@redhat.com>
 
        * decl2.c (decl_dependent_p): New.
index 8aec4eff9b3bc17a018158f69b7b17d5ad493433..1f7745933f95aff9378b3d19034c53c30b0b792f 100644 (file)
@@ -1185,10 +1185,12 @@ finish_switch_cond (tree cond, tree switch_stmt)
   if (!processing_template_decl)
     {
       /* Convert the condition to an integer or enumeration type.  */
+      tree orig_cond = cond;
       cond = build_expr_type_conversion (WANT_INT | WANT_ENUM, cond, true);
       if (cond == NULL_TREE)
        {
-         error ("switch quantity not an integer");
+         error_at (cp_expr_loc_or_input_loc (orig_cond),
+                   "switch quantity not an integer");
          cond = error_mark_node;
        }
       /* We want unlowered type here to handle enum bit-fields.  */
index 2162fcf40f43efa5083ba32d54863765e858a238..af6fe82bfbfe83508ba4536794bc5926a37a3def 100644 (file)
@@ -1,3 +1,7 @@
+2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * g++.dg/conversion/simd4.C: Test all the locations.
+
 2019-08-23  Marek Polacek  <polacek@redhat.com>
 
        PR c++/91521 - wrong error with operator->.
index 22274a1783811d1dd1a2d8ad146e94fc025f93c2..9d43b02db30093a3628f4933faf1d6faf516e9ca 100644 (file)
@@ -20,15 +20,15 @@ foo ()
   v[b];                // { dg-error "4:invalid types" }
   w[b];                // { dg-error "4:invalid types" }
   new int[t];
-  new int[u];  // { dg-error "new-declarator must have integral" }
-  new int[v];  // { dg-error "new-declarator must have integral" }
-  new int[w];  // { dg-error "new-declarator must have integral" }
+  new int[u];  // { dg-error "11:expression in new-declarator must have integral" }
+  new int[v];  // { dg-error "11:expression in new-declarator must have integral" }
+  new int[w];  // { dg-error "11:expression in new-declarator must have integral" }
   switch (t) { default: break; }
-  switch (u) { default: break; }       // { dg-error "switch quantity not an integer" }
-  switch (v) { default: break; }       // { dg-error "switch quantity not an integer" }
-  switch (w) { default: break; }       // { dg-error "switch quantity not an integer" }
+  switch (u) { default: break; }       // { dg-error "11:switch quantity not an integer" }
+  switch (v) { default: break; }       // { dg-error "11:switch quantity not an integer" }
+  switch (w) { default: break; }       // { dg-error "11:switch quantity not an integer" }
   t = ~t;
-  u = ~u;      // { dg-error "wrong type argument to bit-complement" }
+  u = ~u;      // { dg-error "8:wrong type argument to bit-complement" }
   v = ~v;
-  w = ~w;      // { dg-error "wrong type argument to bit-complement" }
+  w = ~w;      // { dg-error "8:wrong type argument to bit-complement" }
 }