1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

class.c: TypeError when superclass mismatch

* class.c (rb_define_class_id_under): raise TypeError exception
  same as ruby level class definition when superclass mismatch.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51048 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-06-28 03:07:37 +00:00
parent 6cdc55f4a3
commit a13ab237c7
4 changed files with 12 additions and 2 deletions

View file

@ -1,3 +1,8 @@
Sun Jun 28 12:07:35 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* class.c (rb_define_class_id_under): raise TypeError exception
same as ruby level class definition when superclass mismatch.
Sun Jun 14 19:02:03 2015 Benoit Daloze <eregontp@gmail.com>
* lib/net/ftp.rb (makeport): close the TCPServer

4
NEWS
View file

@ -143,6 +143,10 @@ with all sufficient information, see the ChangeLog file.
=== C API updates
* rb_define_class_id_under() now raises a TypeError exception when the
class is already defined but its superclass does not match the given
superclass, as well as definitions in ruby level.
=== Build system updates
=== Implementation changes

View file

@ -703,7 +703,8 @@ rb_define_class_id_under(VALUE outer, ID id, VALUE super)
rb_raise(rb_eTypeError, "%"PRIsVALUE" is not a class", rb_id2str(id));
}
if (rb_class_real(RCLASS_SUPER(klass)) != super) {
rb_name_error(id, "%"PRIsVALUE" is already defined", rb_id2str(id));
rb_raise(rb_eTypeError, "superclass mismatch for class %"PRIsVALUE"",
rb_id2str(id));
}
return klass;
}

View file

@ -228,7 +228,7 @@ class TestRequire < Test::Unit::TestCase
assert_separately([], <<-INPUT)
module Zlib; end
class Zlib::Error; end
assert_raise(NameError) do
assert_raise(TypeError) do
require 'zlib'
end
INPUT