octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: octave-forge loadpath


From: John W. Eaton
Subject: Re: octave-forge loadpath
Date: Wed, 24 Jan 2007 15:43:07 -0500

On 17-Jan-2007, John W. Eaton wrote:

| On 17-Jan-2007, John W. Eaton wrote:
| 
| | it won't help people who just do things like
| | 
| |   LOADPATH = "~/octave:";
| | 
| | To warn for that sort of thing I think we would have to do some
| | checking in the symbol table, but I'm not sure it is worth the
| | overhead.
| 
| Wait, I hit send too soon.  Maybe we could just check when the
| assignment statement is parsed, and if the assignment is to one of the
| former built-in variables, we could warn.

I checked in the following changes to implement this feature, along
with a new file scripts/miscellaneous/news.m that will display the
installed NEWS file.  It would be helpful if someone could check to
make sure that I have the complete list of built-in variables that
have been removed.

Thanks,

jwe

ChangeLog

2007-01-24  John W. Eaton  <address@hidden>

        * octMakefile.in (install): Install NEWS file.
        (uninstall): Remove it.


Index: src/ChangeLog

2007-01-24  John W. Eaton  <address@hidden>

        * pt-assgn.cc (former_built_in_variables): New static data.
        (maybe_warn_former_built_in_variable): New static function.
        (tree_simple_assignment::tree_simple_assignment,
        tree_multi_assignment::tree_multi_assignment):
        Move definition here from pt-assign.h
        Maybe warn about assignment to obsolete built-in variables.

        * version.h (OCTAVE_STARTUP_MESSAGE): Mention "news" function.


Index: octMakefile.in
===================================================================
RCS file: /cvs/octave/octMakefile.in,v
retrieving revision 1.213
diff -u -u -r1.213 octMakefile.in
--- octMakefile.in      25 Oct 2006 21:08:54 -0000      1.213
+++ octMakefile.in      24 Jan 2007 20:36:32 -0000
@@ -113,6 +113,7 @@
        $(INSTALL_SCRIPT) mkoctfile $(DESTDIR)$(bindir)/mkoctfile-$(version)
        (cd $(DESTDIR)$(bindir); $(LN_S) mkoctfile-$(version) 
$(DESTDIR)$(bindir)/mkoctfile)
        $(INSTALL_DATA) config.h $(DESTDIR)$(octincludedir)/octave/config.h
+       $(INSTALL_DATA) $(srcdir)/NEWS 
$(DESTDIR)$(datadir)/octave/$(version)/NEWS
 
 uninstall::
        rm -f $(DESTDIR)$(bindir)/octave-bug
@@ -122,6 +123,7 @@
        rm -f $(DESTDIR)$(bindir)/mkoctfile
        rm -f $(DESTDIR)$(bindir)/mkoctfile-$(version)
        rm -f $(DESTDIR)$(octincludedir)/octave/config.h
+       rm -f $(DESTDIR)$(datadir)/octave/$(version)/NEWS
 
 maintainer-clean::
        @echo ""
Index: src/pt-assign.cc
===================================================================
RCS file: /cvs/octave/src/pt-assign.cc,v
retrieving revision 1.32
diff -u -u -r1.32 pt-assign.cc
--- src/pt-assign.cc    16 Jun 2006 05:09:41 -0000      1.32
+++ src/pt-assign.cc    24 Jan 2007 20:36:37 -0000
@@ -26,6 +26,7 @@
 #endif
 
 #include <iostream>
+#include <set>
 
 #include "defun.h"
 #include "error.h"
@@ -43,6 +44,125 @@
 
 // Simple assignment expressions.
 
+static const char *former_built_in_variables[] =
+{
+  "DEFAULT_EXEC_PATH",
+  "DEFAULT_LOADPATH",
+  "EDITOR",
+  "EXEC_PATH",
+  "FFTW_WISDOM_PROGRAM",
+  "IMAGEPATH",
+  "INFO_FILE",
+  "INFO_PROGRAM",
+  "LOADPATH",
+  "MAKEINFO_PROGRAM",
+  "PAGER",
+  "PS1",
+  "PS2",
+  "PS4",
+  "__kluge_procbuf_delay__",
+  "ans",
+  "automatic_replot",
+  "beep_on_error",
+  "completion_append_char",
+  "crash_dumps_octave_core",
+  "current_script_file_name",
+  "debug_on_error",
+  "debug_on_interrupt",
+  "debug_on_warning",
+  "debug_symtab_lookups",
+  "default_save_format",
+  "echo_executing_commands",
+  "fixed_point_format",
+  "gnuplot_binary",
+  "gnuplot_command_axes",
+  "gnuplot_command_end",
+  "gnuplot_command_plot",
+  "gnuplot_command_replot",
+  "gnuplot_command_splot",
+  "gnuplot_command_title",
+  "gnuplot_command_using",
+  "gnuplot_command_with",
+  "gnuplot_has_frames",
+  "history_file",
+  "history_size",
+  "ignore_function_time_stamp",
+  "max_recursion_depth",
+  "octave_core_file_format",
+  "octave_core_file_limit",
+  "octave_core_file_name",
+  "output_max_field_width",
+  "output_precision",
+  "page_output_immediately",
+  "page_screen_output",
+  "print_answer_id_name",
+  "print_empty_dimensions",
+  "print_rhs_assign_val",
+  "save_header_format_string",
+  "save_precision",
+  "saving_history",
+  "sighup_dumps_octave_core",
+  "sigterm_dumps_octave_core",
+  "silent_functions",
+  "split_long_rows",
+  "string_fill_char",
+  "struct_levels_to_print",
+  "suppress_verbose_help_message",
+  "variables_can_hide_functions",
+  "warn_assign_as_truth_value",
+  "warn_associativity_change",
+  "warn_divide_by_zero",
+  "warn_empty_list_elements",
+  "warn_fortran_indexing",
+  "warn_function_name_clash",
+  "warn_future_time_stamp",
+  "warn_imag_to_real",
+  "warn_matlab_incompatible",
+  "warn_missing_semicolon",
+  "warn_neg_dim_as_zero",
+  "warn_num_to_str",
+  "warn_precedence_change",
+  "warn_reload_forces_clear",
+  "warn_resize_on_range_error",
+  "warn_separator_insert",
+  "warn_single_quote_string",
+  "warn_str_to_num",
+  "warn_undefined_return_values",
+  "warn_variable_switch_label",
+  "whos_line_format",
+  0,
+};
+
+static void
+maybe_warn_former_built_in_variable (const std::string& nm)
+{
+  static bool initialized = false;
+
+  static std::set<std::string> vars;
+
+  if (! initialized)
+    {
+      const char **p = former_built_in_variables;
+
+      while (*p)
+       vars.insert (*p++);
+    }
+
+  if (vars.find (nm) != vars.end ())
+    warning_with_id ("Octave:built-in-variable-assignment",
+                    "%s is no longer a built-in variable; please read the NEWS 
file or type `news' for details",
+                    nm.c_str ());
+}
+
+tree_simple_assignment::tree_simple_assignment
+  (tree_expression *le, tree_expression *re,
+   bool plhs, int l, int c, octave_value::assign_op t)
+    : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs), etype (t)
+{
+  if (lhs)
+    maybe_warn_former_built_in_variable (lhs->name ());
+}
+
 tree_simple_assignment::~tree_simple_assignment (void)
 {
   if (! preserve)
@@ -179,6 +299,20 @@
 
 // Multi-valued assignment expressions.
 
+tree_multi_assignment::tree_multi_assignment
+  (tree_argument_list *lst, tree_expression *r,
+   bool plhs, int l, int c, octave_value::assign_op t)
+    : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs), etype (t)
+{
+  for (tree_argument_list::iterator p = lhs->begin (); p != lhs->end (); p++)
+    {
+      tree_expression *lhs = *p;
+
+      if (lhs)
+       maybe_warn_former_built_in_variable (lhs->name ());
+    }
+}
+
 tree_multi_assignment::~tree_multi_assignment (void)
 {
   if (! preserve)
Index: src/pt-assign.h
===================================================================
RCS file: /cvs/octave/src/pt-assign.h,v
retrieving revision 1.16
diff -u -u -r1.16 pt-assign.h
--- src/pt-assign.h     16 Jun 2006 05:09:41 -0000      1.16
+++ src/pt-assign.h     24 Jan 2007 20:36:37 -0000
@@ -50,9 +50,7 @@
 
   tree_simple_assignment (tree_expression *le, tree_expression *re,
                          bool plhs = false, int l = -1, int c = -1,
-                         octave_value::assign_op t = octave_value::op_asn_eq)
-    : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs),
-      etype (t) { }
+                         octave_value::assign_op t = octave_value::op_asn_eq);
 
   ~tree_simple_assignment (void);
 
@@ -120,9 +118,7 @@
 
   tree_multi_assignment (tree_argument_list *lst, tree_expression *r,
                         bool plhs = false, int l = -1, int c = -1,
-                         octave_value::assign_op t = octave_value::op_asn_eq)
-    : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs),
-      etype (t) { }
+                        octave_value::assign_op t = octave_value::op_asn_eq);
 
   ~tree_multi_assignment (void);
 
Index: src/version.h
===================================================================
RCS file: /cvs/octave/src/version.h,v
retrieving revision 1.100
diff -u -u -r1.100 version.h
--- src/version.h       8 Jan 2007 16:59:35 -0000       1.100
+++ src/version.h       24 Jan 2007 20:36:37 -0000
@@ -82,7 +82,8 @@
 
 #define OCTAVE_STARTUP_MESSAGE \
   X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS \
-    ("  For details, type `warranty'.\n\n")
+    ("  For details, type `warranty'.\n\
+  For information about changes from previous versions, type `news'.\n\n")
 
 #endif
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]