[macruby-changes] [5058] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Mon Dec 20 07:14:00 PST 2010
Revision: 5058
http://trac.macosforge.org/projects/ruby/changeset/5058
Author: watson1978 at gmail.com
Date: 2010-12-20 07:13:57 -0800 (Mon, 20 Dec 2010)
Log Message:
-----------
will throw a NameError when $FILENAME, $* and $-W are changed.
Test Script:
{{{
require 'test/unit/assertions.rb'
include Test::Unit::Assertions
assert_raise(NameError){ $FILENAME = "aaa" }
assert_raise(NameError){ $* = ["hello", "world"] }
assert_raise(NameError){ $-W = 1 }
puts :ok
}}}
Modified Paths:
--------------
MacRuby/trunk/include/ruby/ruby.h
MacRuby/trunk/io.c
MacRuby/trunk/ruby.c
MacRuby/trunk/variable.c
Modified: MacRuby/trunk/include/ruby/ruby.h
===================================================================
--- MacRuby/trunk/include/ruby/ruby.h 2010-12-20 08:49:27 UTC (rev 5057)
+++ MacRuby/trunk/include/ruby/ruby.h 2010-12-20 15:13:57 UTC (rev 5058)
@@ -773,6 +773,8 @@
void rb_objc_define_module_function(VALUE klass, const char *name, void *imp, const int arity);
void rb_objc_undef_method(VALUE klass, const char *name);
+void rb_gvar_readonly_setter(VALUE val, ID id, void *var);
+
void rb_global_variable(VALUE*);
void rb_register_mark_object(VALUE);
void rb_gc_register_address(VALUE*);
Modified: MacRuby/trunk/io.c
===================================================================
--- MacRuby/trunk/io.c 2010-12-20 08:49:27 UTC (rev 5057)
+++ MacRuby/trunk/io.c 2010-12-20 15:13:57 UTC (rev 5058)
@@ -5068,11 +5068,11 @@
rb_define_global_const("ARGF", argf);
rb_define_hooked_variable("$.", &argf, argf_lineno_getter, argf_lineno_setter);
- rb_define_hooked_variable("$FILENAME", &argf, argf_filename_getter, 0);
+ rb_define_hooked_variable("$FILENAME", &argf, argf_filename_getter, rb_gvar_readonly_setter);
GC_WB(&(ARGF.filename), rb_str_new2("-"));
rb_define_hooked_variable("$-i", &argf, opt_i_get, opt_i_set);
- rb_define_hooked_variable("$*", &argf, argf_argv_getter, 0);
+ rb_define_hooked_variable("$*", &argf, argf_argv_getter, rb_gvar_readonly_setter);
Init_File();
Modified: MacRuby/trunk/ruby.c
===================================================================
--- MacRuby/trunk/ruby.c 2010-12-20 08:49:27 UTC (rev 5057)
+++ MacRuby/trunk/ruby.c 2010-12-20 15:13:57 UTC (rev 5058)
@@ -1452,7 +1452,7 @@
rb_define_hooked_variable("$VERBOSE", &ruby_verbose, 0, verbose_setter);
rb_define_hooked_variable("$-v", &ruby_verbose, 0, verbose_setter);
rb_define_hooked_variable("$-w", &ruby_verbose, 0, verbose_setter);
- rb_define_virtual_variable("$-W", opt_W_getter, 0);
+ rb_define_virtual_variable("$-W", opt_W_getter, rb_gvar_readonly_setter);
rb_define_variable("$DEBUG", &ruby_debug);
rb_define_variable("$-d", &ruby_debug);
Modified: MacRuby/trunk/variable.c
===================================================================
--- MacRuby/trunk/variable.c 2010-12-20 08:49:27 UTC (rev 5057)
+++ MacRuby/trunk/variable.c 2010-12-20 15:13:57 UTC (rev 5058)
@@ -383,6 +383,8 @@
static void var_setter(VALUE val, ID id, VALUE *var);
static void var_marker(VALUE *var);
+#define readonly_setter rb_gvar_readonly_setter
+
struct global_entry*
rb_global_entry(ID id)
{
@@ -481,7 +483,7 @@
}
}
-static void
+void
readonly_setter(VALUE val, ID id, void *var)
{
rb_name_error(id, "%s is a read-only variable", rb_id2name(id));
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101220/cace881a/attachment.html>
More information about the macruby-changes
mailing list