aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-09-17 14:34:13 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-09-17 14:34:13 +0000
commitc4d77cb4adaae2bab9aa015c9a0528f0abf07bbd (patch)
tree54c9fd45bb99576b62ca63c98c05124123b1ed82
parent19c312afee311fe4a753e9440e01eb614c9fbf0e (diff)
downloadruby-c4d77cb4adaae2bab9aa015c9a0528f0abf07bbd.tar.gz
* parse.y (parser_data_type): inherit the core type in ripper so
that checks in core would work. [ruby-core:39591] [Bug #5331] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33291 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--parse.y18
-rw-r--r--test/ripper/test_ripper.rb49
3 files changed, 70 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 81f3cef62e..b8e819d11a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Sep 17 23:34:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_data_type): inherit the core type in ripper so
+ that checks in core would work. [ruby-core:39591] [Bug #5331]
+
Sat Sep 17 12:44:04 2011 Kazuki Tsujimoto <kazuki@callcc.net>
* lib/find.rb (Find.find): add documentation that Find.find
diff --git a/parse.y b/parse.y
index 73aaaabf33..ab17534b36 100644
--- a/parse.y
+++ b/parse.y
@@ -5290,9 +5290,11 @@ lex_getline(struct parser_params *parser)
return line;
}
+#ifdef RIPPER
+static rb_data_type_t parser_data_type;
+#else
static const rb_data_type_t parser_data_type;
-#ifndef RIPPER
static NODE*
parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
{
@@ -10345,7 +10347,11 @@ parser_memsize(const void *ptr)
return size;
}
-static const rb_data_type_t parser_data_type = {
+static
+#ifndef RIPPER
+const
+#endif
+rb_data_type_t parser_data_type = {
"parser",
{
parser_mark,
@@ -10961,11 +10967,19 @@ ripper_value(VALUE self, VALUE obj)
}
#endif
+
+void
+InitVM_ripper(void)
+{
+ parser_data_type.parent = RTYPEDDATA_TYPE(rb_parser_new());
+}
+
void
Init_ripper(void)
{
VALUE Ripper;
+ InitVM(ripper);
Ripper = rb_define_class("Ripper", rb_cObject);
rb_define_const(Ripper, "Version", rb_usascii_str_new2(RIPPER_VERSION));
rb_define_alloc_func(Ripper, ripper_s_allocate);
diff --git a/test/ripper/test_ripper.rb b/test/ripper/test_ripper.rb
new file mode 100644
index 0000000000..72dc52d087
--- /dev/null
+++ b/test/ripper/test_ripper.rb
@@ -0,0 +1,49 @@
+begin
+ require 'ripper'
+ require 'test/unit'
+ ripper_test = true
+ module TestRipper; end
+rescue LoadError
+end
+
+class TestRipper::Ripper < Test::Unit::TestCase
+
+ def setup
+ @ripper = Ripper.new '1 + 1'
+ end
+
+ def test_column
+ assert_nil @ripper.column
+ end
+
+ def test_encoding
+ assert_equal Encoding::US_ASCII, @ripper.encoding
+ end
+
+ def test_end_seen_eh
+ refute @ripper.end_seen?
+ end
+
+ def test_filename
+ assert_equal '(ripper)', @ripper.filename
+ end
+
+ def test_lineno
+ assert_nil @ripper.lineno
+ end
+
+ def test_parse
+ refute @ripper.parse
+ end
+
+ def test_yydebug
+ refute @ripper.yydebug
+ end
+
+ def test_yydebug_equals
+ @ripper.yydebug = true
+
+ assert @ripper.yydebug
+ end
+
+end if ripper_test