From 74e7c4aa0b89fd58ba6d2db484a8eaec291bdada Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Tue, 3 Sep 2019 21:51:15 +0900 Subject: Add to `doc/limitations.md` about `nil?` redefinition; ref 4996709 [ci skip] --- doc/limitations.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'doc/limitations.md') diff --git a/doc/limitations.md b/doc/limitations.md index 20e2dc52f..e6f40a942 100644 --- a/doc/limitations.md +++ b/doc/limitations.md @@ -126,7 +126,7 @@ true true ``` -## defined? +## `defined?` The `defined?` keyword is considered too complex to be fully implemented. It is recommended to use `const_defined?` and @@ -186,7 +186,7 @@ The re-defined `+` operator does not accept any arguments. ` 'ab' ` Behavior of the operator wasn't changed. -## Kernel#binding is not supported +## `Kernel#binding` is not supported `Kernel#binding` method is not supported. @@ -238,7 +238,7 @@ Destructured arguments (`b` and `c` in above example) cannot be accessed from the default expression of optional arguments and keyword arguments, since actual assignment is done after the evaluation of those default expressions. Thus: - + ```ruby def f(a,(b,c),d=b) p [a,b,c,d] @@ -247,3 +247,17 @@ f(1,[2,3]) ``` CRuby gives `[1,2,3,nil]`. mruby raises `NoMethodError` for `b`. + +## `nil?` redefinition in conditional expressions + +Redefinition of `nil?` is ignored in conditional expressions. + +```ruby +a = "a" +def a.nil? + true +end +puts(a.nil? ? "truthy" : "falsy") +``` + +Ruby outputs `falsy`. mruby outputs `truthy`. -- cgit v1.2.3