diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-21 15:50:58 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-21 15:50:58 +0000 |
commit | f3ac23e422c1cd68b9be355b82c495047786c268 (patch) | |
tree | 5371f890ce149e79537baa0ad634f52b4a121fdf | |
parent | 8715551b9c187f86e16764a6de1af62763eb37f0 (diff) |
merge revision(s) r45375,r48260,r48320,r48746: [Backport #10526]
* complax.c: [DOC] Document number conversion of `nil` by @skade [fix GH-570] [ci skip]
* object.c, rational.c: ditto.
* object.c: fix document of Kernel.Stirng by @suzukaze
[fix GH-743][ci skip]
* object.c (Module#const_defined?): [DOC] Revise the documentation.
Patch by Xavier Noria.
[Fixes GH-754] https://github.com/ruby/ruby/pull/754
* object.c: [DOC] Revise documentation by Marcus Stollsteimer at
[ruby-core:66368]. [Bug #10526]
* #inspect: be more specific about generated string, remove
obsolete example.
* #nil?: use code examples instead of different call-seq's.
* #tap: clarify what is yielded.
* Integer(): be more specific about to_int and to_i, remove
reference to Ruby 1.8.
* Array(): fix error.
* Class: fix variable name style and indentation in example.
* improve consistency, fix typos and formatting.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@49367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 26 | ||||
-rw-r--r-- | complex.c | 2 | ||||
-rw-r--r-- | object.c | 182 | ||||
-rw-r--r-- | rational.c | 2 | ||||
-rw-r--r-- | version.h | 2 |
5 files changed, 130 insertions, 84 deletions
@@ -1,3 +1,29 @@ +Thu Jan 22 00:49:52 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * object.c: [DOC] Revise documentation by Marcus Stollsteimer at + [ruby-core:66368]. [Bug #10526] + + * #inspect: be more specific about generated string, remove + obsolete example. + * #nil?: use code examples instead of different call-seq's. + * #tap: clarify what is yielded. + * Integer(): be more specific about to_int and to_i, remove + reference to Ruby 1.8. + * Array(): fix error. + * Class: fix variable name style and indentation in example. + * improve consistency, fix typos and formatting. + +Thu Jan 22 00:49:52 2015 Benoit Daloze <eregontp@gmail.com> + + * object.c (Module#const_defined?): [DOC] Revise the documentation. + Patch by Xavier Noria. + [Fixes GH-754] https://github.com/ruby/ruby/pull/754 + +Thu Jan 22 00:49:52 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com> + + * object.c: fix document of Kernel.Stirng by @suzukaze + [fix GH-743][ci skip] + Thu Jan 22 00:25:15 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> * load.c (rb_f_load): path name needs to be transcoded to OS path @@ -433,6 +433,8 @@ f_complex_new2(VALUE klass, VALUE x, VALUE y) * * Complex(1, 2) #=> (1+2i) * Complex('1+2i') #=> (1+2i) + * Complex(nil) #=> TypeError + * Complex(1, nil) #=> TypeError * * Syntax of string form: * @@ -154,7 +154,7 @@ rb_obj_equal(VALUE obj1, VALUE obj2) * capacity of a Fixnum will be truncated before being used. * * The hash value for an object may not be identical across invocations or - * implementations of ruby. If you need a stable identifier across ruby + * implementations of Ruby. If you need a stable identifier across Ruby * invocations and implementations you will need to generate one with a custom * method. */ @@ -233,7 +233,7 @@ rb_obj_class(VALUE obj) * obj.singleton_class -> class * * Returns the singleton class of <i>obj</i>. This method creates - * a new singleton class if <i>obj</i> does not have it. + * a new singleton class if <i>obj</i> does not have one. * * If <i>obj</i> is <code>nil</code>, <code>true</code>, or * <code>false</code>, it returns NilClass, TrueClass, or FalseClass, @@ -314,9 +314,9 @@ init_copy(VALUE dest, VALUE obj) * obj.clone -> an_object * * Produces a shallow copy of <i>obj</i>---the instance variables of - * <i>obj</i> are copied, but not the objects they reference. Copies - * the frozen and tainted state of <i>obj</i>. See also the discussion - * under <code>Object#dup</code>. + * <i>obj</i> are copied, but not the objects they reference. + * <code>clone</code> copies the frozen and tainted state of <i>obj</i>. + * See also the discussion under <code>Object#dup</code>. * * class Klass * attr_accessor :str @@ -364,8 +364,8 @@ rb_obj_clone(VALUE obj) * obj.dup -> an_object * * Produces a shallow copy of <i>obj</i>---the instance variables of - * <i>obj</i> are copied, but not the objects they reference. <code>dup</code> - * copies the tainted state of <i>obj</i>. + * <i>obj</i> are copied, but not the objects they reference. + * <code>dup</code> copies the tainted state of <i>obj</i>. * * This method may have class-specific behavior. If so, that * behavior will be documented under the #+initialize_copy+ method of @@ -379,7 +379,7 @@ rb_obj_clone(VALUE obj) * typically uses the class of the descendant object to create the new * instance. * - * When using #dup any modules that the object has been extended with will not + * When using #dup, any modules that the object has been extended with will not * be copied. * * class Klass @@ -445,7 +445,7 @@ rb_obj_init_dup_clone(VALUE obj, VALUE orig) * Returns a string representing <i>obj</i>. The default * <code>to_s</code> prints the object's class and an encoding of the * object id. As a special case, the top-level object that is the - * initial execution context of Ruby programs returns ``main.'' + * initial execution context of Ruby programs returns ``main''. */ VALUE @@ -462,7 +462,7 @@ rb_any_to_s(VALUE obj) /* * If the default external encoding is ASCII compatible, the encoding of - * inspected result must be compatible with it. + * the inspected result must be compatible with it. * If the default external encoding is ASCII incompatible, * the result must be ASCII only. */ @@ -531,9 +531,10 @@ inspect_obj(VALUE obj, VALUE str, int recur) * obj.inspect -> string * * Returns a string containing a human-readable representation of <i>obj</i>. - * By default, show the class name and the list of the instance variables and + * The default <code>inspect</code> shows the object's class name, + * an encoding of the object id, and a list of the instance variables and * their values (by calling #inspect on each of them). - * User defined classes should override this method to make better + * User defined classes should override this method to provide a better * representation of <i>obj</i>. When overriding this method, it should * return a string whose encoding is compatible with the default external * encoding. @@ -551,13 +552,6 @@ inspect_obj(VALUE obj, VALUE str, int recur) * end * end * Bar.new.inspect #=> "#<Bar:0x0300c868 @bar=1>" - * - * class Baz - * def to_s - * "baz" - * end - * end - * Baz.new.inspect #=> "#<Baz:0x0300c868>" */ static VALUE @@ -680,14 +674,14 @@ rb_class_search_ancestor(VALUE cl, VALUE c) * call-seq: * obj.tap{|x|...} -> obj * - * Yields <code>x</code> to the block, and then returns <code>x</code>. + * Yields self to the block, and then returns self. * The primary purpose of this method is to "tap into" a method chain, * in order to perform operations on intermediate results within the chain. * * (1..10) .tap {|x| puts "original: #{x.inspect}"} * .to_a .tap {|x| puts "array: #{x.inspect}"} * .select {|x| x%2==0} .tap {|x| puts "evens: #{x.inspect}"} - * .map { |x| x*x } .tap {|x| puts "squares: #{x.inspect}"} + * .map {|x| x*x} .tap {|x| puts "squares: #{x.inspect}"} * */ @@ -721,7 +715,7 @@ rb_obj_tap(VALUE obj) * class Baz < Bar * end * - * produces: + * <em>produces:</em> * * New subclass: Bar * New subclass: Baz @@ -743,7 +737,7 @@ rb_obj_tap(VALUE obj) * def some_instance_method() end * end * - * produces: + * <em>produces:</em> * * Adding :some_instance_method * @@ -769,7 +763,7 @@ rb_obj_tap(VALUE obj) * remove_method :some_instance_method * end * - * produces: + * <em>produces:</em> * * Removing :some_instance_method * @@ -957,13 +951,13 @@ rb_obj_tainted(VALUE obj) * * Objects that are marked as tainted will be restricted from various built-in * methods. This is to prevent insecure data, such as command-line arguments - * or strings read from Kernel#gets, from inadvertently compromising the users + * or strings read from Kernel#gets, from inadvertently compromising the user's * system. * - * To check whether an object is tainted, use #tainted? + * To check whether an object is tainted, use #tainted?. * * You should only untaint a tainted object if your code has inspected it and - * determined that it is safe. To do so use #untaint + * determined that it is safe. To do so use #untaint. * * In $SAFE level 3, all newly created objects are tainted and you can't untaint * objects. @@ -1249,7 +1243,7 @@ true_and(VALUE obj, VALUE obj2) * call-seq: * true | obj -> true * - * Or---Returns <code>true</code>. As <i>anObject</i> is an argument to + * Or---Returns <code>true</code>. As <i>obj</i> is an argument to * a method call, it is always evaluated; there is no short-circuit * evaluation in this case. * @@ -1373,10 +1367,12 @@ rb_true(VALUE obj) /* * call-seq: - * nil.nil? -> true - * <anything_else>.nil? -> false + * obj.nil? -> true or false * * Only the object <i>nil</i> responds <code>true</code> to <code>nil?</code>. + * + * Object.new.nil? #=> false + * nil.nil? #=> true */ @@ -1453,7 +1449,7 @@ rb_obj_cmp(VALUE obj1, VALUE obj2) * Instance methods appear as methods in a class when the module is * included, module methods do not. Conversely, module methods may be * called without creating an encapsulating object, while instance - * methods may not. (See <code>Module#module_function</code>) + * methods may not. (See <code>Module#module_function</code>.) * * In the descriptions that follow, the parameter <i>sym</i> refers * to a symbol, which is either a quoted string or a @@ -1476,7 +1472,7 @@ rb_obj_cmp(VALUE obj1, VALUE obj2) * call-seq: * mod.to_s -> string * - * Return a string representing this module or class. For basic + * Returns a string representing this module or class. For basic * classes and modules, this is the name. For singletons, we * show information on the thing we're attached to as well. */ @@ -1536,7 +1532,7 @@ rb_mod_freeze(VALUE mod) * call-seq: * mod === obj -> true or false * - * Case Equality---Returns <code>true</code> if <i>anObject</i> is an + * Case Equality---Returns <code>true</code> if <i>obj</i> is an * instance of <i>mod</i> or one of <i>mod</i>'s descendants. Of * limited use for modules, but can be used in <code>case</code> * statements to classify objects by class. @@ -1556,7 +1552,7 @@ rb_mod_eqq(VALUE mod, VALUE arg) * is the same as <i>other</i>. Returns * <code>nil</code> if there's no relationship between the two. * (Think of the relationship in terms of the class definition: - * "class A<B" implies "A<B"). + * "class A<B" implies "A<B".) * */ @@ -1587,7 +1583,7 @@ rb_class_inherited_p(VALUE mod, VALUE arg) * Returns true if <i>mod</i> is a subclass of <i>other</i>. Returns * <code>nil</code> if there's no relationship between the two. * (Think of the relationship in terms of the class definition: - * "class A<B" implies "A<B"). + * "class A<B" implies "A<B".) * */ @@ -1607,7 +1603,7 @@ rb_mod_lt(VALUE mod, VALUE arg) * two modules are the same. Returns * <code>nil</code> if there's no relationship between the two. * (Think of the relationship in terms of the class definition: - * "class A<B" implies "B>A"). + * "class A<B" implies "B>A".) * */ @@ -1628,7 +1624,7 @@ rb_mod_ge(VALUE mod, VALUE arg) * Returns true if <i>mod</i> is an ancestor of <i>other</i>. Returns * <code>nil</code> if there's no relationship between the two. * (Think of the relationship in terms of the class definition: - * "class A<B" implies "B>A"). + * "class A<B" implies "B>A".) * */ @@ -1875,7 +1871,7 @@ rb_class_new_instance(int argc, VALUE *argv, VALUE klass) * class Bar < Foo; end * Bar.superclass #=> Foo * - * returns nil when the given class hasn't a parent class: + * Returns nil when the given class does not have a parent class: * * BasicObject.superclass #=> nil * @@ -2050,9 +2046,9 @@ rb_mod_attr_accessor(int argc, VALUE *argv, VALUE klass) * mod.const_get(sym, inherit=true) -> obj * mod.const_get(str, inherit=true) -> obj * - * Checks for a constant with the given name in <i>mod</i> + * Checks for a constant with the given name in <i>mod</i>. * If +inherit+ is set, the lookup will also search - * the ancestors (and +Object+ if <i>mod</i> is a +Module+.) + * the ancestors (and +Object+ if <i>mod</i> is a +Module+). * * The value of the constant is returned if a definition is found, * otherwise a +NameError+ is raised. @@ -2078,7 +2074,7 @@ rb_mod_attr_accessor(int argc, VALUE *argv, VALUE klass) * Object.const_get 'Foo::Baz::VAL' # => 10 * Object.const_get 'Foo::Baz::VAL', false # => NameError * - * If neither +sym+ nor +str+ is not a valid constant name a NameError will be + * If the argument is not a valid constant name a +NameError+ will be * raised with a warning "wrong constant name". * * Object.const_get 'foobar' #=> NameError: wrong constant name foobar @@ -2190,7 +2186,7 @@ rb_mod_const_get(int argc, VALUE *argv, VALUE mod) * Math.const_set("HIGH_SCHOOL_PI", 22.0/7.0) #=> 3.14285714285714 * Math::HIGH_SCHOOL_PI - Math::PI #=> 0.00126448926734968 * - * If neither +sym+ nor +str+ is not a valid constant name a NameError will be + * If +sym+ or +str+ is not a valid constant name a +NameError+ will be * raised with a warning "wrong constant name". * * Object.const_set('foobar', 42) #=> NameError: wrong constant name foobar @@ -2210,20 +2206,39 @@ rb_mod_const_set(VALUE mod, VALUE name, VALUE value) * mod.const_defined?(sym, inherit=true) -> true or false * mod.const_defined?(str, inherit=true) -> true or false * - * Checks for a constant with the given name in <i>mod</i> - * If +inherit+ is set, the lookup will also search - * the ancestors (and +Object+ if <i>mod</i> is a +Module+.) + * Says whether _mod_ or its ancestors have a constant with the given name: * - * Returns whether or not a definition is found: + * Float.const_defined?(:EPSILON) #=> true, found in Float itself + * Float.const_defined?("String") #=> true, found in Object (ancestor) + * BasicObject.const_defined?(:Hash) #=> false * - * Math.const_defined? "PI" #=> true - * IO.const_defined? :SYNC #=> true - * IO.const_defined? :SYNC, false #=> false + * If _mod_ is a +Module+, additionally +Object+ and its ancestors are checked: * - * If neither +sym+ nor +str+ is not a valid constant name a NameError will be - * raised with a warning "wrong constant name". + * Math.const_defined?(:String) #=> true, found in Object + * + * In each of the checked classes or modules, if the constant is not present + * but there is an autoload for it, +true+ is returned directly without + * autoloading: + * + * module Admin + * autoload :User, 'admin/user' + * end + * Admin.const_defined?(:User) #=> true + * + * If the constant is not found the callback +const_missing+ is *not* called + * and the method returns +false+. + * + * If +inherit+ is false, the lookup only checks the constants in the receiver: * - * Hash.const_defined? 'foobar' #=> NameError: wrong constant name foobar + * IO.const_defined?(:SYNC) #=> true, found in File::Constants (ancestor) + * IO.const_defined?(:SYNC, false) #=> false, not found in IO itself + * + * In this case, the same logic for autoloading applies. + * + * If the argument is not a valid constant name a +NameError+ is raised with the + * message "wrong constant name _name_": + * + * Hash.const_defined? 'foobar' #=> NameError: wrong constant name foobar * */ @@ -2373,10 +2388,10 @@ rb_obj_ivar_get(VALUE obj, VALUE iv) * obj.instance_variable_set(symbol, obj) -> obj * obj.instance_variable_set(string, obj) -> obj * - * Sets the instance variable names by <i>symbol</i> to - * <i>object</i>, thereby frustrating the efforts of the class's + * Sets the instance variable named by <i>symbol</i> to the given + * object, thereby frustrating the efforts of the class's * author to attempt to provide proper encapsulation. The variable - * did not have to exist prior to this call. + * does not have to exist prior to this call. * If the instance variable name is passed as a string, that string * is converted to a symbol. * @@ -2446,7 +2461,7 @@ rb_obj_ivar_defined(VALUE obj, VALUE iv) * * Returns the value of the given class variable (or throws a * <code>NameError</code> exception). The <code>@@</code> part of the - * variable name should be included for regular class variables + * variable name should be included for regular class variables. * String arguments are converted to symbols. * * class Fred @@ -2482,8 +2497,8 @@ rb_mod_cvar_get(VALUE obj, VALUE iv) * obj.class_variable_set(symbol, obj) -> obj * obj.class_variable_set(string, obj) -> obj * - * Sets the class variable names by <i>symbol</i> to - * <i>object</i>. + * Sets the class variable named by <i>symbol</i> to the given + * object. * If the class variable name is passed as a string, that string * is converted to a symbol. * @@ -2740,24 +2755,26 @@ rb_Integer(VALUE val) /* * call-seq: - * Integer(arg,base=0) -> integer + * Integer(arg, base=0) -> integer * * Converts <i>arg</i> to a <code>Fixnum</code> or <code>Bignum</code>. * Numeric types are converted directly (with floating point numbers - * being truncated). <i>base</i> (0, or between 2 and 36) is a base for + * being truncated). <i>base</i> (0, or between 2 and 36) is a base for * integer string representation. If <i>arg</i> is a <code>String</code>, - * when <i>base</i> is omitted or equals to zero, radix indicators + * when <i>base</i> is omitted or equals zero, radix indicators * (<code>0</code>, <code>0b</code>, and <code>0x</code>) are honored. * In any case, strings should be strictly conformed to numeric * representation. This behavior is different from that of - * <code>String#to_i</code>. Non string values will be converted using - * <code>to_int</code>, and <code>to_i</code>. + * <code>String#to_i</code>. Non string values will be converted by first + * trying <code>to_int</code>, then <code>to_i</code>. Passing <code>nil</code> + * raises a TypeError. * * Integer(123.999) #=> 123 * Integer("0x1a") #=> 26 * Integer(Time.new) #=> 1204973019 * Integer("0930", 10) #=> 930 * Integer("111", 2) #=> 7 + * Integer(nil) #=> TypeError */ static VALUE @@ -2923,8 +2940,8 @@ rb_Float(VALUE val) * Float(arg) -> float * * Returns <i>arg</i> converted to a float. Numeric types are converted - * directly, the rest are converted using <i>arg</i>.to_f. As of Ruby - * 1.8, converting <code>nil</code> generates a <code>TypeError</code>. + * directly, the rest are converted using <i>arg</i>.to_f. + * Converting <code>nil</code> generates a <code>TypeError</code>. * * Float(1) #=> 1.0 * Float("123.456") #=> 123.456 @@ -2996,8 +3013,9 @@ rb_String(VALUE val) * call-seq: * String(arg) -> string * - * Converts <i>arg</i> to a <code>String</code> by calling its - * <code>to_s</code> method. + * Returns <i>arg</i> as a <code>String</code>. + * + * First tries to call its <code>to_str</code> method, then its <code>to_s</code> method. * * String(self) #=> "main" * String(self.class) #=> "Object" @@ -3030,7 +3048,7 @@ rb_Array(VALUE val) * * Returns +arg+ as an Array. * - * First tries to call Array#to_ary on +arg+, then Array#to_a. + * First tries to call <code>to_ary</code> on +arg+, then <code>to_a</code>. * * Array(1..5) #=> [1, 2, 3, 4, 5] */ @@ -3085,7 +3103,7 @@ rb_f_hash(VALUE obj, VALUE arg) * Typically, you create a new class by using: * * class Name - * # some class describing the class behavior + * # some code describing the class behavior * end * * When a new class is created, an object of type Class is initialized and @@ -3097,19 +3115,17 @@ rb_f_hash(VALUE obj, VALUE arg) * <code>Class</code>: * * class Class - * alias oldNew new - * def new(*args) - * print "Creating a new ", self.name, "\n" - * oldNew(*args) - * end - * end - * - * - * class Name - * end + * alias old_new new + * def new(*args) + * print "Creating a new ", self.name, "\n" + * old_new(*args) + * end + * end * + * class Name + * end * - * n = Name.new + * n = Name.new * * <em>produces:</em> * @@ -3117,7 +3133,7 @@ rb_f_hash(VALUE obj, VALUE arg) * * Classes, modules, and objects are interrelated. In the diagram * that follows, the vertical arrows represent inheritance, and the - * parentheses meta-classes. All metaclasses are instances + * parentheses metaclasses. All metaclasses are instances * of the class `Class'. * +---------+ +-... * | | | @@ -3178,7 +3194,7 @@ rb_f_hash(VALUE obj, VALUE arg) * * BasicObject does not include Kernel (for methods like +puts+) and * BasicObject is outside of the namespace of the standard library so common - * classes will not be found without a using a full class path. + * classes will not be found without using a full class path. * * A variety of strategies can be used to provide useful portions of the * standard library to subclasses of BasicObject. A subclass could @@ -3216,7 +3232,7 @@ rb_f_hash(VALUE obj, VALUE arg) * * Object is the default root of all Ruby objects. Object inherits from * BasicObject which allows creating alternate object hierarchies. Methods - * on object are available to all classes unless explicitly overridden. + * on Object are available to all classes unless explicitly overridden. * * Object mixes in the Kernel module, making the built-in kernel functions * globally accessible. Although the instance methods of Object are defined diff --git a/rational.c b/rational.c index 7bc7206376..d8bee601e0 100644 --- a/rational.c +++ b/rational.c @@ -584,6 +584,8 @@ f_rational_new_no_reduce2(VALUE klass, VALUE x, VALUE y) * * Rational(1, 2) #=> (1/2) * Rational('1/2') #=> (1/2) + * Rational(nil) #=> TypeError + * Rational(1, nil) #=> TypeError * * Syntax of string form: * @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.1.5" #define RUBY_RELEASE_DATE "2015-01-22" -#define RUBY_PATCHLEVEL 280 +#define RUBY_PATCHLEVEL 281 #define RUBY_RELEASE_YEAR 2015 #define RUBY_RELEASE_MONTH 1 |