[#51213] [ruby-trunk - Bug #7645][Open] BigDecimal#== slow when compared to true/false — "mathie (Graeme Mathieson)" <mathie@...>

11 messages 2013/01/01

[#51328] [ruby-trunk - Bug #7676][Open] Comparison of Float::NAN in array behaves unexpectedly — "simonrussell (Simon Russell)" <spam+ruby@...>

11 messages 2013/01/09

[#51347] [ruby-trunk - Bug #7679][Open] IRB history is broken — "zzak (Zachary Scott)" <zachary@...>

15 messages 2013/01/10

[#51389] [ruby-trunk - Bug #7688][Open] Error hiding with rb_rescue() on Comparable#==, #coerce and others — "Eregon (Benoit Daloze)" <redmine@...>

34 messages 2013/01/11

[#51430] [ruby-trunk - Bug #7696][Open] Lazy enumerators with state can't be rewound — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>

15 messages 2013/01/14

[#51437] [ruby-trunk - Bug #7698][Open] RubyGems 2.0 has an incompatibility about installation of extension libraries — "mrkn (Kenta Murata)" <muraken@...>

21 messages 2013/01/15

[#51454] [CommonRuby - Feature #7701][Open] Non-optional (required) keyword args — "headius (Charles Nutter)" <headius@...>

31 messages 2013/01/15

[#51499] [ruby-trunk - Feature #7712][Open] Add .txt extensions to all plain-text documentation files for Windows users — "postmodern (Hal Brodigan)" <postmodern.mod3@...>

9 messages 2013/01/18

[#51619] [ruby-trunk - Feature #7738][Open] Deprecate Set#+ as an alias of Set#|, use it for symmetric difference. Introduce Hash#| for Hash#reverse_merge in Rails. — "alexeymuranov (Alexey Muranov)" <redmine@...>

11 messages 2013/01/24

[#51623] [ruby-trunk - Feature #7739][Open] Define Hash#| as Hash#reverse_merge in Rails — "alexeymuranov (Alexey Muranov)" <redmine@...>

24 messages 2013/01/24

[#51714] [CommonRuby - Feature #7747][Open] Expanded API for Binding semantics — "jballanc (Joshua Ballanco)" <jballanc@...>

19 messages 2013/01/27

[#51742] [ruby-trunk - Bug #7756][Open] clang 3.2 sees through UNINITIALIZED_VAR macro, gives warning — "drbrain (Eric Hodel)" <drbrain@...7.net>

10 messages 2013/01/29

[#51763] [ruby-trunk - Bug #7758][Open] Ruby on Windows crashes when active codepage is codepage 65001 and outputting unicode character — "joshc (Josh C)" <josh.nw@...>

16 messages 2013/01/30

[ruby-core:51223] [ruby-trunk - Bug #7566] Escape (\u{}) forms in Regexp literals

From: "phluid61 (Matthew Kerwin)" <matthew@...>
Date: 2013-01-02 20:42:40 UTC
List: ruby-core #51223
Issue #7566 has been updated by phluid61 (Matthew Kerwin).


brixen (Brian Ford) wrote:
> But as my example shows, if the bytes were in a literal String used to create the Regexp, they are already converted. And everything works just fine.

No it doesn't.  There are no literal strings in your example.  The closest I can see is you extracting a source string from the Regexp, but I don't think that's doing what you think it is.

  irb(main):001:0> re = /[\\\u{5d}]/
  => /[\\\u{5d}]/
  irb(main):002:0> re.source
  => "[\\\\\\u{5d}]"

If you meant this:

  irb(main):003:0> s = "[\\\u{5d}]"
  => "[\\]]"
  irb(main):004:0> re2 = Regexp.new s
  => /[\]]/

You get an entirely different Regexp.  They will both match the string "ab]c" because they both include the ']' character in their character class. Incidentally:

irb(main):005:0> re =~ "ab\\c"
=> 2
irb(main):006:0> re2 =~ "ab\\c"
=> nil

> What's the rationale for not converting \u{}? Just because it is *an* escape sequence doesn't mean it is a *Regexp* escape sequence. Why are they treated the same?

They aren't.  If it helps, consider that _no_ Regexp escape sequences are treated the same as String escapes.

  \\ is a String literal escape sequence that is interpolated to the byte \x5C
  \\ is a Regexp literal escape sequence that instructs the engine to match the byte \x5C
  
  \u{} is a String literal escape sequence that is interpolated to a codepoint
  \u{} is a Regexp literal escape sequence that instructs the engine to match a codepoint
  
  \b is a String literal that is interpolated to the byte \x08
  \b is a Regexp literal that instructs the engine to match a word boundary

> It creates inconsistency between two identical Regexps except that one came from a String or Regexp literal with interpolation.

No, if the Regexps were identical they would be identical.  As you can see above, re and re2 are not identical, and no one should expect them to be.
----------------------------------------
Bug #7566: Escape (\u{}) forms in Regexp literals
https://bugs.ruby-lang.org/issues/7566#change-35183

Author: brixen (Brian Ford)
Status: Rejected
Priority: Normal
Assignee: 
Category: core
Target version: 2.0.0
ruby -v: ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin10.8.0]


Why are \u{} escape sequences in Regexp literals not converted to bytes like they are in String literals?

https://gist.github.com/4290155

Thanks,
Brian


-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next