mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* class.c (rb_class_new): move class check to rb_check_inheritable().
* class.c (rb_check_inheritable): should not allow subclass of class Class. [ruby-core:26225] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5ee251bdad
commit
5d6440c748
3 changed files with 11 additions and 5 deletions
|
|
@ -3,6 +3,13 @@ Sat Oct 24 00:36:47 2009 Tanaka Akira <akr@fsij.org>
|
||||||
* io.c (io_cntl): update max file descriptor by the result of
|
* io.c (io_cntl): update max file descriptor by the result of
|
||||||
fcntl(F_DUPFD).
|
fcntl(F_DUPFD).
|
||||||
|
|
||||||
|
Fri Oct 23 16:31:14 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* class.c (rb_class_new): move class check to rb_check_inheritable().
|
||||||
|
|
||||||
|
* class.c (rb_check_inheritable): should not allow subclass of
|
||||||
|
class Class. [ruby-core:26225]
|
||||||
|
|
||||||
Fri Oct 23 14:25:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Fri Oct 23 14:25:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* configure.in (target, target_alias): replace with real cpu.
|
* configure.in (target, target_alias): replace with real cpu.
|
||||||
|
|
|
||||||
6
class.c
6
class.c
|
|
@ -97,6 +97,9 @@ rb_check_inheritable(VALUE super)
|
||||||
if (RBASIC(super)->flags & FL_SINGLETON) {
|
if (RBASIC(super)->flags & FL_SINGLETON) {
|
||||||
rb_raise(rb_eTypeError, "can't make subclass of singleton class");
|
rb_raise(rb_eTypeError, "can't make subclass of singleton class");
|
||||||
}
|
}
|
||||||
|
if (super == rb_cClass) {
|
||||||
|
rb_raise(rb_eTypeError, "can't make subclass of Class");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -111,9 +114,6 @@ rb_class_new(VALUE super)
|
||||||
{
|
{
|
||||||
Check_Type(super, T_CLASS);
|
Check_Type(super, T_CLASS);
|
||||||
rb_check_inheritable(super);
|
rb_check_inheritable(super);
|
||||||
if (super == rb_cClass) {
|
|
||||||
rb_raise(rb_eTypeError, "can't make subclass of Class");
|
|
||||||
}
|
|
||||||
return rb_class_boot(super);
|
return rb_class_boot(super);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -170,8 +170,7 @@ class TestClass < Test::Unit::TestCase
|
||||||
o = Object.new
|
o = Object.new
|
||||||
c = class << o; self; end
|
c = class << o; self; end
|
||||||
assert_raise(TypeError) { Class.new(c) }
|
assert_raise(TypeError) { Class.new(c) }
|
||||||
|
assert_raise(TypeError) { Class.new(Class) }
|
||||||
assert_nothing_raised { Class.new(Class) } # is it OK?
|
|
||||||
assert_raise(TypeError) { eval("class Foo < Class; end") }
|
assert_raise(TypeError) { eval("class Foo < Class; end") }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue