Mercurial > hg > octave-lyh
diff src/pt-assign.cc @ 6253:f1676652d808
[project @ 2007-01-24 20:43:36 by jwe]
author | jwe |
---|---|
date | Wed, 24 Jan 2007 20:43:37 +0000 |
parents | 2a6cb4ed8f1e |
children | d00da2148c53 |
line wrap: on
line diff
--- a/src/pt-assign.cc +++ b/src/pt-assign.cc @@ -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)