summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-22 06:30:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-22 06:30:12 +0000
commita356fe1c3550892902103f66928426ac8279e072 (patch)
treebee931e36267315487d45d5776ae8f4a568feddf /NEWS
parent5a599dde0c43b62ff32c8a0c36a05a758a309818 (diff)
Safe navigation operator
* compile.c (iseq_peephole_optimize): peephole optimization for branchnil jumps. * compile.c (iseq_compile_each): generate save navigation operator code. * insns.def (branchnil): new opcode to pop the tos and branch if it is nil. * parse.y (NEW_QCALL, call_op, parser_yylex): parse token '.?'. [Feature #11537] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS11
1 files changed, 11 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 800974e..8a2c7f5 100644
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,17 @@ with all sufficient information, see the ChangeLog file.
* besides, --enable/--disable=frozen-string-literal options also have
been introduced.
+* safe navigation operator:
+
+ * new method call syntax, `object.?foo', method #foo is called on
+ `object' if it is not nil.
+ this is similar to `try!' in ActiveSupport, except for:
+ * method name is syntactically required
+ obj.try! {} # valid
+ obj.? {} # syntax error
+ * attribute assignment is valid
+ obj.?attr += 1
+
=== Core classes updates (outstanding ones only)
* ARGF