Skip to content

Commit 25dd774

Browse files
committed
Add alias String#dedup to String#-@ for Ruby v3.2.
1 parent 2beb695 commit 25dd774

File tree

7 files changed

+11
-1
lines changed

7 files changed

+11
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Compatibility:
1414
* Add support for array pattern matching. This is opt-in via `--pattern-matching` since pattern matching is not fully supported yet. (#2683, @razetime).
1515
* Fix `Array#[]` with `ArithmeticSequence` argument when step is negative (@itarato).
1616
* Fix `Range#size` and return `nil` for beginningless Range when end isn't Numeric (@rwstauner).
17+
* Alias `String#-@` to `String#dedup` (@itarato).
1718

1819
Performance:
1920

spec/tags/core/string/dedup_tags.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fails:String#dedup interns the provided string if it is frozen

spec/truffle/methods/String.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ codepoints
3131
concat
3232
count
3333
crypt
34+
dedup
3435
delete
3536
delete!
3637
delete_prefix

spec/truffleruby.next-specs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ spec/ruby/core/array/element_reference_spec.rb
1414

1515
spec/ruby/core/hash/shift_spec.rb
1616
spec/ruby/core/range/size_spec.rb
17+
18+
spec/ruby/core/string/dedup_spec.rb

src/main/java/org/truffleruby/parser/BodyTranslator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ public RubyNode visitCallNode(CallParseNode node) {
491491
final String methodName = node.getName();
492492

493493
if (receiver instanceof StrParseNode &&
494-
(methodName.equals("freeze") || methodName.equals("-@"))) {
494+
(methodName.equals("freeze") || methodName.equals("-@") || methodName.equals("dedup"))) {
495495
final StrParseNode strNode = (StrParseNode) receiver;
496496
final TruffleString tstring = strNode.getValue();
497497
final ImmutableRubyString frozenString = language.getFrozenStringLiteral(tstring, strNode.encoding);

src/main/ruby/truffleruby/core/string.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,6 +1232,7 @@ def -@
12321232
Primitive.string_intern(str)
12331233
end
12341234
end
1235+
alias_method :dedup, :-@
12351236

12361237
def <=>(other)
12371238
if Primitive.is_a?(other, String)

src/main/ruby/truffleruby/core/truffle/polyglot_methods.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ def crypt(...)
148148
to_s.crypt(...)
149149
end
150150

151+
def dedup(...)
152+
to_s.dedup(...)
153+
end
154+
151155
def delete(...)
152156
to_s.delete(...)
153157
end

0 commit comments

Comments
 (0)