2012-05-04 Tristan Gingold <gingold@adacore.com>
authorTristan Gingold <gingold@adacore.com>
Fri, 4 May 2012 07:58:00 +0000 (07:58 +0000)
committerTristan Gingold <gingold@adacore.com>
Fri, 4 May 2012 07:58:00 +0000 (07:58 +0000)
* printcmd.c (set_command): Emit a warning if the expression is not
an assignment.

testsuite/
2012-05-04  Tristan Gingold  <gingold@adacore.com>

* gdb.base/set-noassign.exp: New test.

gdb/ChangeLog
gdb/printcmd.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/set-noassign.exp [new file with mode: 0644]

index b02c026b821d54fa1d4363880a9796830bbf626e..a073454d0ed64ab174e04486e0cb00371dbb59f1 100644 (file)
@@ -1,3 +1,8 @@
+2012-05-04  Tristan Gingold  <gingold@adacore.com>
+
+       * printcmd.c (set_command): Emit a warning if the expression is not
+       an assignment.
+
 2012-05-03  Joel Brobecker  <brobecker@adacore.com>
 
        * nto-procfs.c (procfs_find_new_threads, procfs_pid_to_str):
index d441dfe52444b6534553a3c781767cdcff1df569..79e38f21d57019a11de8d3a6f1e255263985bf13 100644 (file)
@@ -1080,6 +1080,12 @@ set_command (char *exp, int from_tty)
   struct cleanup *old_chain =
     make_cleanup (free_current_contents, &expr);
 
+  if (expr->nelts >= 1
+      && expr->elts[0].opcode != BINOP_ASSIGN
+      && expr->elts[0].opcode != BINOP_ASSIGN_MODIFY
+      && expr->elts[0].opcode != BINOP_COMMA)
+    warning (_("Expression is not an assignment (and might have no effect)"));
+
   evaluate_expression (expr);
   do_cleanups (old_chain);
 }
index c89e6b9b41f435bc71dd52839b42017b36a77bce..ca5641144ed71b958cb82254a26a3a06c49d9144 100644 (file)
@@ -1,3 +1,7 @@
+2012-05-04  Tristan Gingold  <gingold@adacore.com>
+
+       * gdb.base/set-noassign.exp: New test.
+
 2012-05-03  Siva Chandra Reddy  <sivachandra@google.com>
 
        * gdb.python/py-symbol.exp: Add tests to test the new methods
diff --git a/gdb/testsuite/gdb.base/set-noassign.exp b/gdb/testsuite/gdb.base/set-noassign.exp
new file mode 100644 (file)
index 0000000..5eba870
--- /dev/null
@@ -0,0 +1,32 @@
+# Copyright 2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+if { [prepare_for_testing set-noassign.exp "set-noassign" start.c {debug nowarnings}] } {
+    return -1
+}
+
+if ![runto_main] then {
+    fail "Can't run to main"
+    return 0
+}
+
+# Verify that set command without assignment emits a warning.
+#
+gdb_test "set language ada" ".*" "set language ada"
+
+gdb_test "set x=3" \
+       "warning: Expression is not an assignment \\(and might have no effect\\)" \
+       "warning for set without assignment"
This page took 0.040604 seconds and 4 git commands to generate.