diff libinterp/parse-tree/pt-mat.cc @ 19433:2304ddfd736f stable

Restore warning Octave:num-to-str missing since 3.2.4 (bug #43814). * data.cc (do_cat): New variable all_strings_p. Check and set all_strings_p in for loop checking type of each argument to be concatenated. Call gripe_implicit_conversion if ! all_strings_p and result_type is "char". * pt-mat.cc: Include "gripes.h" * pt-mat.cc (tree_matrix::rvalue1): New variable all_strings_p. Call all_strings_p () to set all_strings_p. Call gripe_implicit_conversion if ! all_strings_p and result_type is "char".
author Rik <rik@octave.org>
date Sun, 14 Dec 2014 21:14:36 -0800
parents 04b4fb217b1a
children 9035a36736af
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-mat.cc	Sat Dec 06 07:42:18 2014 -0800
+++ b/libinterp/parse-tree/pt-mat.cc	Sun Dec 14 21:14:36 2014 -0800
@@ -31,6 +31,7 @@
 #include "data.h"
 #include "defun.h"
 #include "error.h"
+#include "gripes.h"
 #include "oct-obj.h"
 #include "pt-arg-list.h"
 #include "pt-bp.h"
@@ -926,6 +927,7 @@
 {
   octave_value retval = Matrix ();
 
+  bool all_strings_p = false;
   bool all_sq_strings_p = false;
   bool all_dq_strings_p = false;
   bool all_empty_p = false;
@@ -939,6 +941,7 @@
   if (tmp && ! tmp.empty ())
     {
       dim_vector dv = tmp.dims ();
+      all_strings_p = tmp.all_strings_p ();
       all_sq_strings_p = tmp.all_sq_strings_p ();
       all_dq_strings_p = tmp.all_dq_strings_p ();
       all_empty_p = tmp.all_empty_p ();
@@ -983,7 +986,11 @@
         {
           char type = all_dq_strings_p ? '"' : '\'';
 
-          maybe_warn_string_concat (all_dq_strings_p, all_sq_strings_p);
+          if (! all_strings_p)
+            gripe_implicit_conversion ("Octave:num-to-str",
+                                       "numeric", result_type);
+          else
+            maybe_warn_string_concat (all_dq_strings_p, all_sq_strings_p);
 
           charNDArray result (dv, Vstring_fill_char);