[前][次][番号順一覧][スレッド一覧]

ruby-changes:25199

From: nobu <ko1@a...>
Date: Thu, 18 Oct 2012 10:33:55 +0900 (JST)
Subject: [ruby-changes:25199] nobu:r37251 (trunk): parse.y: fail if yyerror

nobu	2012-10-18 10:30:37 +0900 (Thu, 18 Oct 2012)

  New Revision: 37251

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37251

  Log:
    parse.y: fail if yyerror
    
    * parse.y (assignable_gen): fail if yyerror occurred.  fix a bug in
      r36973.

  Modified files:
    trunk/ChangeLog
    trunk/parse.y
    trunk/test/ruby/test_syntax.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37250)
+++ ChangeLog	(revision 37251)
@@ -1,3 +1,8 @@
+Thu Oct 18 10:30:34 2012  Nobuyoshi Nakada  <nobu@r...>
+
+	* parse.y (assignable_gen): fail if yyerror occurred.  fix a bug in
+	  r36973.
+
 Thu Oct 18 09:23:03 2012  Aaron Patterson <aaron@t...>
 
 	* hash.c (initialize_copy): duping should rehash the hash.
Index: parse.y
===================================================================
--- parse.y	(revision 37250)
+++ parse.y	(revision 37251)
@@ -8468,25 +8468,25 @@
     switch (id) {
       case keyword_self:
 	yyerror("Can't change the value of self");
-	break;
+	goto error;
       case keyword_nil:
 	yyerror("Can't assign to nil");
-	break;
+	goto error;
       case keyword_true:
 	yyerror("Can't assign to true");
-	break;
+	goto error;
       case keyword_false:
 	yyerror("Can't assign to false");
-	break;
+	goto error;
       case keyword__FILE__:
 	yyerror("Can't assign to __FILE__");
-	break;
+	goto error;
       case keyword__LINE__:
 	yyerror("Can't assign to __LINE__");
-	break;
+	goto error;
       case keyword__ENCODING__:
 	yyerror("Can't assign to __ENCODING__");
-	break;
+	goto error;
     }
     switch (id_type(id)) {
       case ID_LOCAL:
@@ -8526,6 +8526,7 @@
       default:
 	compile_error(PARSER_ARG "identifier %s is not valid to set", rb_id2name(id));
     }
+  error:
     return assignable_result(0);
 #undef assignable_result
 #undef parser_yyerror
Index: test/ruby/test_syntax.rb
===================================================================
--- test/ruby/test_syntax.rb	(revision 37250)
+++ test/ruby/test_syntax.rb	(revision 37251)
@@ -187,8 +187,10 @@
   end
 
   def test_unassignable
+    gvar = global_variables
     %w[self nil true false __FILE__ __LINE__ __ENCODING__].each do |kwd|
       assert_raise(SyntaxError) {eval("#{kwd} = nil")}
+      assert_equal(gvar, global_variables)
     end
   end
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]