summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-09-04 22:18:59 +0900
committerGitHub <noreply@github.com>2020-09-04 22:18:59 +0900
commiteb67c603ca7e435181684857e650b4633fda5bb6 (patch)
tree2a7079315d7143010d9f561a2bb322f6378a96e9
parentd7406ccc2c99009cc2af56d5b01c411f8bb673f6 (diff)
Added Symbol#name
https://bugs.ruby-lang.org/issues/16150#change-87446
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3514 Merged-By: nobu <nobu@ruby-lang.org>
-rw-r--r--NEWS.md7
-rw-r--r--string.c1
-rw-r--r--test/ruby/test_symbol.rb6
3 files changed, 14 insertions, 0 deletions
diff --git a/NEWS.md b/NEWS.md
index 1bc19e83e1..4b4d13a0c6 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -165,6 +165,12 @@ Outstanding ones only.
* Symbol#to_proc now returns a lambda Proc.
[[Feature #16260]]
+ * New method
+
+ * Symbol#name, which returns the name of the symbol if it is
+ named. The returned string cannot be modified.
+ [[Feature #16150]]
+
* Warning
* Modified method
@@ -343,6 +349,7 @@ Excluding feature bug fixes.
[Feature #16378]: https://bugs.ruby-lang.org/issues/16378
[Feature #16828]: https://bugs.ruby-lang.org/issues/16828
[Bug #14541]: https://bugs.ruby-lang.org/issues/14541
+[Feature #16150]: https://bugs.ruby-lang.org/issues/16150
[Feature #16175]: https://bugs.ruby-lang.org/issues/16175
[Feature #15973]: https://bugs.ruby-lang.org/issues/15973
[Feature #16614]: https://bugs.ruby-lang.org/issues/16614
diff --git a/string.c b/string.c
index b9cc0486bc..7cfeaae180 100644
--- a/string.c
+++ b/string.c
@@ -11539,6 +11539,7 @@ Init_String(void)
rb_define_method(rb_cSymbol, "inspect", sym_inspect, 0);
rb_define_method(rb_cSymbol, "to_s", rb_sym_to_s, 0);
rb_define_method(rb_cSymbol, "id2name", rb_sym_to_s, 0);
+ rb_define_method(rb_cSymbol, "name", rb_sym2str, 0);
rb_define_method(rb_cSymbol, "intern", sym_to_sym, 0);
rb_define_method(rb_cSymbol, "to_sym", sym_to_sym, 0);
rb_define_method(rb_cSymbol, "to_proc", rb_sym_to_proc, 0);
diff --git a/test/ruby/test_symbol.rb b/test/ruby/test_symbol.rb
index f6ef70f3df..f7f17b8d67 100644
--- a/test/ruby/test_symbol.rb
+++ b/test/ruby/test_symbol.rb
@@ -105,6 +105,12 @@ class TestSymbol < Test::Unit::TestCase
end
end
+ def test_name
+ assert_equal("foo", :foo.name)
+ assert_same(:foo.name, :foo.name)
+ assert_predicate(:foo.name, :frozen?)
+ end
+
def test_to_proc
assert_equal %w(1 2 3), (1..3).map(&:to_s)
[