Bug #8205

Regexp.union behavior and Regexp.try_convert

Added by Alexander Yunin about 2 years ago. Updated over 1 year ago.

[ruby-core:53895]
Status:Closed
Priority:Low
Assignee:Zachary Scott
ruby -v:1.9.3p374 Backport:

Description

Hi! Why Regexp.union('/../') trying to convert string with directly call rb_check_regexp_type(arg) (re.c:3139) instead of rb_reg_s_try_convert (re.c:3122)? I think second variant would be more correct, and i would be able to rewrite Regexp.try_convert in my code for changing behavior as i need.
For example: i have the code where was implemented String#to_regexp which breaks default behavior of Regexp.union and i got incorrect regexp. But i can't (for some reasons) to rewrite to_regexp method. Yes, stupid example, but it's real situation.

Associated revisions

Revision 43061
Added by Zachary Scott over 1 year ago

  • re.c: [DOC] arguments of Regexp::union receive #to_regexp [Bug #8205]

Revision 43061
Added by Zachary Scott over 1 year ago

  • re.c: [DOC] arguments of Regexp::union receive #to_regexp [Bug #8205]

History

#1 Updated by Tomoyuki Chikanaga about 2 years ago

  • Status changed from Open to Feedback

Hello,

Could you show us a reproducive code or a testcase?

#2 Updated by Alexander Yunin over 1 year ago

Hello,

Bug description is incorrect, sorry. Now i want to say that implementation of String#to_regexp can breaks behavior of Regexp::union.

class String
def to_regexp
/regexp/
end
end
Regexp.union('/some_regexp/') #=> /regexp/

And it's not documented now.

#3 Updated by Tomoyuki Chikanaga over 1 year ago

  • Target version set to 2.1.0
  • Status changed from Feedback to Assigned
  • Assignee set to Zachary Scott
  • Category set to doc

Hello, avyy.

That makes sense.
I think it's spec that Regexp.union internally convert arguments with to_regexp, but it is undocumented behavior. I think it's a documentation issue.

#4 Updated by Zachary Scott over 1 year ago

  • % Done changed from 0 to 100
  • Status changed from Assigned to Closed

This issue was solved with changeset r43061.
Alexander, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • re.c: [DOC] arguments of Regexp::union receive #to_regexp [Bug #8205]

Also available in: Atom PDF