Forum: Ruby-dev [ruby-trunk - Bug #9962] Numeric.new

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
B11f10c4cd9d53970e7be20caa43f940?d=identicon&s=25 unknown (Guest)
on 2015-01-04 16:41
(Received via mailing list)
Issue #9962 has been updated by Akira Tanaka.


ふと検索したところ、Numeric からの継承を使っている gem はそれなりに存在するようです。
(結果を下につけます。スコープの都合により ::Numeric ではないものを参照しているのが混じっているかもしれません。)

Numeric.new をできないようにすると、こういうのは動かなくなるんでしょうか。
もし動かなくなるとしたら、その問題以上の利点が必要だと思いますが、どんな利点があるでしょうか。

```
M500-0.9.2/lib/M500.rb:644:class Natural < Numeric
M500-0.9.2/lib/M500.rb:1389:class Quotient < Numeric
M500-0.9.2/lib/M500.rb:1692:class Decimal < Numeric
M500-0.9.2/lib/M500.rb:2069:class Fraction < Numeric #Mixed fraction
M500-0.9.2/lib/M500.rb:2647:class Real < Numeric
appmath-0.0.1/lib/cnum.rb:37:class C < Numeric
appmath-0.0.1/lib/rnum.rb:380:class R < Numeric
ardm-0.2.0/lib/ardm/property/decimal.rb:5:    class Decimal < Numeric
ardm-0.2.0/lib/ardm/property/float.rb:5:    class Float < Numeric
ardm-0.2.0/lib/ardm/property/integer.rb:5:    class Integer < Numeric
artoo-1.8.0/lib/artoo/ext/numeric.rb:2:class Integer < Numeric
axiom-0.2.0/lib/axiom/attribute/decimal.rb:7:    class Decimal < Numeric
axiom-0.2.0/lib/axiom/attribute/float.rb:7:    class Float < Numeric
axiom-0.2.0/lib/axiom/attribute/integer.rb:7:    class Integer < Numeric
axiom-0.2.0/lib/axiom/function/numeric/absolute.rb:8:      class
Absolute < Numeric
axiom-0.2.0/lib/axiom/function/numeric/addition.rb:8:      class
Addition < Numeric
axiom-0.2.0/lib/axiom/function/numeric/division.rb:8:      class
Division < Numeric
axiom-0.2.0/lib/axiom/function/numeric/exponentiation.rb:8:      class
Exponentiation < Numeric
axiom-0.2.0/lib/axiom/function/numeric/modulo.rb:8:      class Modulo <
Numeric
axiom-0.2.0/lib/axiom/function/numeric/multiplication.rb:8:      class
Multiplication < Numeric
axiom-0.2.0/lib/axiom/function/numeric/square_root.rb:8:      class
SquareRoot < Numeric
axiom-0.2.0/lib/axiom/function/numeric/subtraction.rb:8:      class
Subtraction < Numeric
axiom-0.2.0/lib/axiom/function/numeric/unary_minus.rb:8:      class
UnaryMinus < Numeric
axiom-0.2.0/lib/axiom/function/numeric/unary_plus.rb:8:      class
UnaryPlus < Numeric
axiom-types-0.1.1/lib/axiom/types/decimal.rb:7:    class Decimal <
Numeric
axiom-types-0.1.1/lib/axiom/types/float.rb:7:    class Float < Numeric
axiom-types-0.1.1/lib/axiom/types/integer.rb:7:    class Integer <
Numeric
backports-3.6.3/lib/backports/1.9.2/stdlib/matrix.rb:1426:  class Scalar
< Numeric # :nodoc:
bahuvrihi-constants-0.1.0/lib/constants/constant.rb:8:class Unit <
Numeric
bahuvrihi-molecules-0.2.0/lib/molecules/calc.rb:6:class Unit < Numeric #
:nodoc:
bigdecimal-1.2.5/lib/bigdecimal/util.rb:5:class Integer < Numeric
bigdecimal-1.2.5/lib/bigdecimal/util.rb:26:class Float < Numeric
bigdecimal-1.2.5/lib/bigdecimal/util.rb:69:class BigDecimal < Numeric
bigdecimal-1.2.5/lib/bigdecimal/util.rb:105:class Rational < Numeric
caisson-0.0.3/lib/caisson/implants/mongoid.rb:1:class Percent < Numeric
carats-0.3.0/lib/carat-dev/quaternion/quaternion.rb:205:class Quaternion
< Numeric
carats-0.3.0/lib/carat/infinity.rb:20:class Infinity < Numeric
cbor-0.5.6.4/doclib/cbor/core_ext.rb:52:class Float < Numeric
cgen-0.16.12/examples/complex.rb:3:class MyComplex < Numeric
cgen-0.16.12/examples/complex2.rb:3:class MyComplex2 < Numeric
cgen-0.16.12/examples/example-ruby-talk-26July2009.rb:3:class Complex <
Numeric
cgen-0.16.12/examples/modular-def.rb:69:class MyComplex < Numeric
chrisk-protopuffs-0.3.0/lib/protopuffs/message/field.rb:90:  class
VarInt < Numeric
chrisk-protopuffs-0.3.0/lib/protopuffs/message/field.rb:133:  class
Fixed32Base < Numeric
chrisk-protopuffs-0.3.0/lib/protopuffs/message/field.rb:156:  class
Fixed64Base < Numeric
clj-0.0.8.2/lib/clj/types.rb:190:class BigDecimal < Numeric
closest_fib_gem-0.1.0/lib/closest_fib_gem.rb:7:class Integer < Numeric
coercible-1.0.0/lib/coercible/coercer/decimal.rb:5:    class Decimal <
Numeric
coercible-1.0.0/lib/coercible/coercer/float.rb:5:    class Float <
Numeric
coercible-1.0.0/lib/coercible/coercer/integer.rb:5:    class Integer <
Numeric
concordia-publishing-house-syck-1.0.0.4/test/test_yaml.rb:1352:    class
NumericTest < Numeric
constants-0.1.1/lib/constants/constant.rb:8:class Unit < Numeric
cssensible-0.3.0/lib/cssensible/em_value.rb:5:  class EmValue < Numeric
dead_simple_cms-0.12.7/lib/dead_simple_cms/attribute/type/all.rb:37:
class Float < Numeric
dead_simple_cms-0.12.7/lib/dead_simple_cms/attribute/type/all.rb:42:
class Integer < Numeric
dec_number-0.2.1/ext/dec_number/_test_numeric.rb:4:  class DummyNumeric
< Numeric
dm-core-1.2.1/lib/dm-core/property/decimal.rb:3:    class Decimal <
Numeric
dm-core-1.2.1/lib/dm-core/property/float.rb:3:    class Float < Numeric
dm-core-1.2.1/lib/dm-core/property/integer.rb:3:    class Integer <
Numeric
dyi-1.3.0/lib/ironruby.rb:30:class BigDecimal < Numeric
fiddle-0.6.3/lib/fiddle/data_type.rb:63:  class Integer < Numeric
flt-1.3.2/lib/flt/num.rb:143:class Num < Numeric
fort-2.0.6/lib/fort/type.rb:97:  class Integer < Numeric
fort-2.0.6/lib/fort/type.rb:103:  class Real < Numeric
fort-2.0.6/lib/fort/type.rb:109:  class Complex < Numeric
fractional-1.0.1/lib/fractional.rb:4:class Fractional < Numeric
hms-0.0.3/lib/hms/duration.rb:9:  class Duration < Numeric
home_run-1.0.9/lib/date.rb:9:  class Infinity < Numeric # :nodoc:
huia-0.3.0/lib/huia/ast/float.rb:3:    class Float < Numeric
huia-0.3.0/lib/huia/ast/integer.rb:3:    class Integer < Numeric
intervals-0.5.83/test/test_interval.rb:563:  class PoorMansRational <
Numeric
ircsupport-0.2.0/lib/ircsupport/message.rb:48:    class Numeric005 <
Numeric
ircsupport-0.2.0/lib/ircsupport/message.rb:116:    class Numeric353 <
Numeric
ircsupport-0.2.0/lib/ircsupport/message.rb:143:    class Numeric352 <
Numeric
is-fixed-0.2.0/lib/is/fixed.rb:3:class Fixed < Numeric
jvyaml-0.0.1/test/test_yaml_two.rb:1236:    class NumericTest < Numeric
km-psych-0.1.0/test/psych/test_yaml.rb:1205:    class NumericTest <
Numeric
long-decimal-1.00.01/lib/long-decimal.rb:355:class LongDecimalBase <
Numeric
mega-0.3.1/lib/mega/infinity.rb:50:class Infinity < Numeric
minad-units-0.1.3/lib/units.rb:4:class Unit < Numeric
molecules-0.2.0/lib/molecules/calc.rb:6:class Unit < Numeric # :nodoc:
momomoto-0.2.1/lib/momomoto/datatype/real.rb:5:    class Real < Numeric
mongoid_money-0.2.1/lib/mongoid_money/money.rb:1:class Money < Numeric
motion_coercible-0.2.0.2/lib/project/coercer/decimal.rb:7:    class
Decimal < Numeric
motion_coercible-0.2.0.2/lib/project/coercer/float.rb:7:    class Float
< Numeric
motion_coercible-0.2.0.2/lib/project/coercer/integer.rb:8:    class
Integer < Numeric
msgpack-0.5.9/doclib/msgpack/core_ext.rb:52:class Float < Numeric
mspec-1.5.21/lib/mspec/mocks/proxy.rb:13:class NumericMockObject <
Numeric
mudrat_projector-0.9.8/test/test_helper.rb:32:class BigDecimal < Numeric
opal-0.6.2/opal/corelib/complex.rb:1:class Complex < Numeric
opal-0.6.2/opal/corelib/numeric.rb:503:class Integer < Numeric
opal-0.6.2/opal/corelib/numeric.rb:515:class Float < Numeric
opal-0.6.2/opal/corelib/rational.rb:1:class Rational < Numeric
openlogic-rdf-0.3.7/lib/rdf/model/literal/decimal.rb:13:  class Decimal
< Numeric
openlogic-rdf-0.3.7/lib/rdf/model/literal/double.rb:13:  class Double <
Numeric
plusminus-0.2.0/lib/plusminus/plusminus_float.rb:1:class
Plusminus::PlusminusFloat < Numeric
protopuffs-0.3.0/lib/protopuffs/message/field.rb:90:  class VarInt <
Numeric
protopuffs-0.3.0/lib/protopuffs/message/field.rb:133:  class Fixed32Base
< Numeric
protopuffs-0.3.0/lib/protopuffs/message/field.rb:156:  class Fixed64Base
< Numeric
psych-2.0.6/test/psych/test_yaml.rb:1222:    class NumericTest < Numeric
psych-shopifork-2.0.5/test/psych/test_yaml.rb:1222:    class NumericTest
< Numeric
puppet-3.7.1/lib/puppet/vendor/semantic/lib/semantic/version.rb:7:
class Version < Numeric
puppet-3.7.1/lib/semver.rb:6:class SemVer < Numeric
puppet-parse-0.1.0/lib/vendor/semver.rb:6:class SemVer < Numeric
r10k-1.3.4/lib/r10k/semver.rb:7:class SemVer < Numeric
r_type-0.0.3/lib/r_type/type/integer.rb:2:  class Integer < Numeric
radix-2.2.0/lib/radix/float.rb:18:  class Float < Numeric
radix-2.2.0/lib/radix/integer.rb:15:  class Integer < Numeric
radix-2.2.0/lib/radix/rational.rb:15:  class Rational < Numeric
radix-firstbanco-2.2.0/lib/radix/float.rb:18:  class Float < Numeric
radix-firstbanco-2.2.0/lib/radix/integer.rb:15:  class Integer < Numeric
radix-firstbanco-2.2.0/lib/radix/rational.rb:15:  class Rational <
Numeric
rails-units-1.6.0/lib/rails_units/cache.rb:1:class Unit < Numeric
rails-units-1.6.0/lib/rails_units/unit.rb:35:#  class Unit < Numeric
rails-units-1.6.0/lib/rails_units/unit.rb:41:class Unit < Numeric
rails-units-1.6.0/lib/rails_units/unit_definitions.rb:1:class Unit <
Numeric
rails-units-1.6.0/lib/rails_units/version.rb:1:class Unit < Numeric
rails-units-1.6.0/test/test_rails-units.rb:17:class Unit < Numeric
ratio-1.0.1/lib/ratio.rb:4:class Ratio < Numeric
rdf-1.1.6/lib/rdf/model/literal/decimal.rb:13:  class Decimal < Numeric
rdf-1.1.6/lib/rdf/model/literal/double.rb:13:  class Double < Numeric
rhodes-3.5.1.12/lib/extensions/mspec/mspec/mocks/proxy.rb:13:class
NumericMockObject < Numeric
rhodes-3.5.1.12/lib/framework/builtinME.rb:528:class Integer < Numeric
rhodes-3.5.1.12/lib/framework/dateOrig.rb:255:  class Infinity < Numeric
# :nodoc:
rhodes-3.5.1.12/lib/framework/rational18.rb:64:class Rational < Numeric
rhodes-3.5.1.12/lib/framework/rationalME.rb:64:class Rational < Numeric
rhodes-3.5.1.12/platform/shared/xruby/src/builtin.rb:639:class Integer <
Numeric
rhodes-3.5.1.12/spec/framework_spec/app/spec/core/math/fixtures/classes.rb:6:
class Float < Numeric
rhodes-3.5.1.12/spec/framework_spec/app/spec/core/numeric/fixtures/classes.rb:2:
class Comparison < Numeric
rhodes-3.5.1.12/spec/framework_spec/app/spec/core/numeric/fixtures/classes.rb:12:
class Subclass < Numeric
rhodes-framework-1.2.1/lib/builtinME.rb:445:class Integer < Numeric
rhodes-framework-1.2.1/lib/date.rb:255:  class Infinity < Numeric #
:nodoc:
rhodes-framework-1.2.1/lib/rationalME.rb:64:class Rational < Numeric
robject-0.0.2/lib/robject/type/integer.rb:2:  class Integer < Numeric
roman-0.2.0/lib/roman.rb:2:class RomanNumeral < Numeric
rsense-core-0.6.6/stubs/1.8/bigdecimal.rb:1:class BigDecimal < Numeric
rsense-core-0.6.6/stubs/1.8/rational.rb:1:class Rational < Numeric
rtanque-0.1.2/lib/rtanque/heading.rb:32:  class Heading < Numeric
ruby-mpc-0.0.9/lib/mpc/version.rb:1:class MPC < Numeric
ruby-mpfi-0.0.10/lib/mpfi.rb:4:class MPFI < Numeric
ruby-mpfi-0.0.10/lib/mpfi/matrix.rb:6:class MPFI < Numeric
ruby-mpfi-0.0.10/lib/mpfi/version.rb:1:class MPFI < Numeric
ruby-mpfr-0.0.17/lib/mpfr/matrix.rb:4:class MPFR < Numeric
ruby-mpfr-0.0.17/lib/mpfr/rspec.rb:1:class MPFR < Numeric
ruby-mpfr-0.0.17/lib/mpfr/version.rb:1:class MPFR < Numeric
ruby-units-1.4.5/lib/ruby_units/cache.rb:1:class RubyUnits::Unit <
Numeric
ruby-units-1.4.5/lib/ruby_units/definition.rb:1:class RubyUnits::Unit <
Numeric
ruby-units-1.4.5/lib/ruby_units/unit.rb:36:  class Unit < Numeric
ruby-units-1.4.5/lib/ruby_units/version.rb:2:  class Unit < Numeric
ruby-units-brewpoo-1.3.0/lib/ruby_units/complex.rb:1:class Complex <
Numeric
ruby-units-brewpoo-1.3.0/lib/ruby_units/ruby-units.rb:35:#  class Unit <
Numeric
ruby-units-brewpoo-1.3.0/lib/ruby_units/ruby-units.rb:41:class Unit <
Numeric
ruby-units-brewpoo-1.3.0/lib/ruby_units/units.rb:3:class Unit < Numeric
ruby-units-brewpoo-1.3.0/test/test_ruby-units.rb:17:class Unit < Numeric
ruby_on_ruby-0.0.1/vendor/javascripts/emscripted-ruby/lib/complex.rb:101:class
Complex < Numeric
ruby_on_ruby-0.0.1/vendor/javascripts/emscripted-ruby/lib/date.rb:256:
class Infinity < Numeric # :nodoc:
ruby_on_ruby-0.0.1/vendor/javascripts/emscripted-ruby/lib/matrix.rb:876:
class Scalar < Numeric # :nodoc:
ruby_on_ruby-0.0.1/vendor/javascripts/emscripted-ruby/lib/rational.rb:64:class
Rational < Numeric
rubysl-bigdecimal-2.0.2/lib/bigdecimal/util.rb:1:class Integer < Numeric
rubysl-bigdecimal-2.0.2/lib/bigdecimal/util.rb:18:class Float < Numeric
rubysl-bigdecimal-2.0.2/lib/bigdecimal/util.rb:52:class BigDecimal <
Numeric
rubysl-bigdecimal-2.0.2/lib/bigdecimal/util.rb:84:class Rational <
Numeric
rubysl-date-2.0.8/lib/rubysl/date/date.rb:255:  class Infinity < Numeric
# :nodoc:
rubysl-matrix-2.1.0/lib/rubysl/matrix/matrix.rb:1425:  class Scalar <
Numeric # :nodoc:
rubysl-rational-2.0.1/lib/rubysl/rational/rational.rb:3:class Rational <
Numeric
scimath-1.2.0/lib/scimath/numeric.rb:14:class Rational < Numeric
scimath-1.2.0/lib/scimath/numeric.rb:18:class Integer < Numeric
scout_realtime-1.0.5/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/matrix.rb:1426:
class Scalar < Numeric # :nodoc:
shoesgem-0.1514.0/shoes/ruby/lib/bigdecimal/util.rb:18:class Float <
Numeric
shoesgem-0.1514.0/shoes/ruby/lib/bigdecimal/util.rb:30:class BigDecimal
< Numeric
shoesgem-0.1514.0/shoes/ruby/lib/bigdecimal/util.rb:44:class Rational <
Numeric
shoesgem-0.1514.0/shoes/ruby/lib/date.rb:255:  class Infinity < Numeric
# :nodoc:
shoesgem-0.1514.0/shoes/ruby/lib/matrix.rb:961:  class Scalar < Numeric
# :nodoc:
simple_units-0.0.0/lib/simple_units/unit.rb:2:  class Unit < Numeric
smml-0.1.13/lib/smml/msm.rb:154:class MyLength < Numeric
stick-1.3.3/lib/stick/matrix/core.rb:983:  class Scalar < Numeric #
:nodoc:
stick-1.3.3/lib/stick/quaternion.rb:230:class Quaternion < Numeric
stick-1.3.3/lib/stick/units/base.rb:363:  class Value < Numeric
syck-1.0.4/test/test_yaml.rb:1352:    class NumericTest < Numeric
to_bn-2.0.1/lib/to_bn.rb:76:class Integer < Numeric
to_bn-2.0.1/lib/to_bn.rb:115:class Float < Numeric
trafaret-1.5.9/lib/trafaret/numeric.rb:30:  class Integer < Numeric
trafaret-1.5.9/lib/trafaret/numeric.rb:40:  class Float < Numeric
uncertain-0.1.0/lib/uncertain.rb:12:class Uncertain < Numeric
unit-0.4.1/lib/unit/class.rb:2:class Unit < Numeric
unit-0.4.1/lib/unit/dsl.rb:11:class Unit < Numeric
unit-0.4.1/lib/unit/system.rb:4:class Unit < Numeric
unit-0.4.1/lib/unit/version.rb:1:class Unit < Numeric
vanunits-1.5.0/lib/van/units/base.rb:363:  class Value < Numeric
veritas-0.0.7/lib/veritas/attribute/decimal.rb:7:    class Decimal <
Numeric
veritas-0.0.7/lib/veritas/attribute/float.rb:7:    class Float < Numeric
veritas-0.0.7/lib/veritas/attribute/integer.rb:7:    class Integer <
Numeric
veritas-0.0.7/lib/veritas/function/numeric/absolute.rb:8:      class
Absolute < Numeric
veritas-0.0.7/lib/veritas/function/numeric/addition.rb:8:      class
Addition < Numeric
veritas-0.0.7/lib/veritas/function/numeric/division.rb:8:      class
Division < Numeric
veritas-0.0.7/lib/veritas/function/numeric/exponentiation.rb:8:
class Exponentiation < Numeric
veritas-0.0.7/lib/veritas/function/numeric/modulo.rb:8:      class
Modulo < Numeric
veritas-0.0.7/lib/veritas/function/numeric/multiplication.rb:8:
class Multiplication < Numeric
veritas-0.0.7/lib/veritas/function/numeric/square_root.rb:8:      class
SquareRoot < Numeric
veritas-0.0.7/lib/veritas/function/numeric/subtraction.rb:8:      class
Subtraction < Numeric
veritas-0.0.7/lib/veritas/function/numeric/unary_minus.rb:8:      class
UnaryMinus < Numeric
veritas-0.0.7/lib/veritas/function/numeric/unary_plus.rb:8:      class
UnaryPlus < Numeric
vlaah-0.9.1/lib/vlaah/unit.rb:3:  class Unit < Numeric
when_exe-0.3.9/lib/when_exe/coordinates.rb:772:  class Pair < Numeric
workbook-0.4.7/lib/workbook/types/Numeric.rb:5:    class Numeric <
Numeric
```



----------------------------------------
Bug #9962: Numeric.new
https://bugs.ruby-lang.org/issues/9962#change-50786

* Author: Usaku NAKAMURA
* Status: Open
* Priority: Normal
* Assignee:
* Category: core
* Target version: current: 2.2.0
* ruby -v: -
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
This topic is locked and can not be replied to.