ruby-changes:1830
From: ko1@a...
Date: 31 Aug 2007 03:49:12 +0900
Subject: [ruby-changes:1830] nobu - Ruby:r13321 (trunk): * parse.y (assignable_gen): ignore already erred names.
nobu 2007-08-31 03:49:00 +0900 (Fri, 31 Aug 2007)
New Revision: 13321
Modified files:
trunk/ChangeLog
trunk/bootstraptest/test_knownbug.rb
trunk/bootstraptest/test_massign.rb
trunk/parse.y
trunk/version.h
Log:
* parse.y (assignable_gen): ignore already erred names.
* parse.y (shadowing_lvar_gen): always make new block local variable
when shadowing outer local variable. [ruby-dev:31507]
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=13321&r2=13320
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y?r1=13321&r2=13320
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13321&r2=13320
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_massign.rb?r1=13321&r2=13320
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_knownbug.rb?r1=13321&r2=13320
Index: ChangeLog
===================================================================
--- ChangeLog (revision 13320)
+++ ChangeLog (revision 13321)
@@ -1,3 +1,10 @@
+Fri Aug 31 03:48:58 2007 Nobuyoshi Nakada <nobu@r...>
+
+ * parse.y (assignable_gen): ignore already erred names.
+
+ * parse.y (shadowing_lvar_gen): always make new block local variable
+ when shadowing outer local variable. [ruby-dev:31507]
+
Thu Aug 30 19:40:33 2007 NAKAMURA Usaku <usa@r...>
* regenc.h: check RUBY_EXTERN before including config.h and defines.h
Index: bootstraptest/test_massign.rb
===================================================================
--- bootstraptest/test_massign.rb (revision 13320)
+++ bootstraptest/test_massign.rb (revision 13321)
@@ -13,6 +13,12 @@
ans
}
+assert_equal 'ok', %q{
+ r = :ok
+ :ng.tap {|(r)|}
+ r
+}, '[ruby-dev:31507]'
+
=begin
# generated by this script:
Index: bootstraptest/test_knownbug.rb
===================================================================
--- bootstraptest/test_knownbug.rb (revision 13320)
+++ bootstraptest/test_knownbug.rb (revision 13321)
@@ -3,17 +3,8 @@
# So all tests will cause failure.
#
-# massign
+# catch/throw
assert_equal 'ok', %q{
- def m()
- yield :ng
- end
- r = :ok
- m {|(r)|}
- r
-}, '[ruby-dev:31507]'
-
-assert_equal 'ok', %q{
begin
catch {|t| throw t, :ok }
rescue ArgumentError
Index: parse.y
===================================================================
--- parse.y (revision 13320)
+++ parse.y (revision 13321)
@@ -1023,7 +1023,7 @@
| primary_value '[' opt_call_args rbracket tOP_ASGN command_call
{
/*%%%*/
- NODE *args = $3;
+ NODE *args;
value_expr($6);
if (!$3) $3 = NEW_ZARRAY();
@@ -6677,7 +6677,7 @@
tokadd(c);
c = nextc();
if (parser_is_identchar()) {
- tokadd(c);
+ tokadd(c);
}
else {
pushback(c);
@@ -7253,6 +7253,7 @@
static NODE*
assignable_gen(struct parser_params *parser, ID id, NODE *val)
{
+ if (!id) return 0;
if (id == keyword_self) {
yyerror("Can't change the value of self");
}
@@ -7321,6 +7322,7 @@
}
else if (dvar_defined(name) || local_id(name)) {
rb_warningS("shadowing outer local variable - %s", rb_id2name(name));
+ vtable_add(lvtbl->vars, name);
}
}
else {
Index: version.h
===================================================================
--- version.h (revision 13320)
+++ version.h (revision 13321)
@@ -1,7 +1,7 @@
#define RUBY_VERSION "1.9.0"
-#define RUBY_RELEASE_DATE "2007-08-30"
+#define RUBY_RELEASE_DATE "2007-08-31"
#define RUBY_VERSION_CODE 190
-#define RUBY_RELEASE_CODE 20070830
+#define RUBY_RELEASE_CODE 20070831
#define RUBY_PATCHLEVEL 0
#define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 8
-#define RUBY_RELEASE_DAY 30
+#define RUBY_RELEASE_DAY 31
#ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[];
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml