summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--parse.y1
-rw-r--r--test/ripper/test_parser_events.rb9
3 files changed, 9 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 953e3b7394..6b35175e08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Apr 26 13:11:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_get_value): escape Qundef.
+
Mon Apr 26 12:42:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (warn_balanced): warn according to last state.
diff --git a/parse.y b/parse.y
index f542d875f9..8dd7de3bda 100644
--- a/parse.y
+++ b/parse.y
@@ -10351,6 +10351,7 @@ static VALUE
ripper_get_value(VALUE v)
{
NODE *nd;
+ if (v == Qundef) return Qnil;
if (!RB_TYPE_P(v, T_NODE)) return v;
nd = (NODE *)v;
if (nd_type(nd) != NODE_LASGN) return Qnil;
diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb
index 02183129b0..2ac623f76d 100644
--- a/test/ripper/test_parser_events.rb
+++ b/test/ripper/test_parser_events.rb
@@ -463,6 +463,7 @@ class TestRipper::ParserEvents < Test::Unit::TestCase
thru_def = true
}
assert_equal true, thru_def
+ assert_equal '[def(foo,[],bodystmt([void()]))]', parse('def foo ;end')
end
def test_defined
@@ -1102,10 +1103,8 @@ class TestRipper::ParserEvents < Test::Unit::TestCase
end
def test_unterminated_regexp
- assert_normal_exit(<<"SRC")
-$:.unshift(File.dirname(#{File.expand_path(__FILE__).dump}))
-require 'dummyparser'
-DummyParser.new('/').parse.to_s
-SRC
+ compile_error = false
+ parse('/', :compile_error) {|msg| compile_error = msg}
+ assert_equal("unterminated regexp meets end of file", compile_error)
end
end if ripper_test