Bug #7471

character class has duplicated range warning for "" =~ /[\w\W]/

Added by Eric Hodel over 1 year ago. Updated over 1 year ago.

[ruby-core:50344]
Status:Closed
Priority:Normal
Assignee:Yui NARUSE
Category:core
Target version:2.0.0
ruby -v:- Backport:

Description

=begin
The warning seems bogus, \w and \W do not overlap.

$ cat test.rb
$-w = true

""=~/[\w\W]/
$ make runruby
/Users/drbrain/Work/svn/ruby/trunk/test.rb:3: warning: character class has duplicated range: /[\w\W]/

There is no warning with 1.9.3:

$ ~/.multiruby/install/1.9.3-p194/bin/ruby -v test.rb
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.1.0]
[no output]

This affects abbrev.rb:

/usr/local/lib/ruby/2.0.0/abbrev.rb:77: warning: character class has duplicated range: /[\w\W]\z/

=end

Associated revisions

Revision 38028
Added by Akinori MUSHA over 1 year ago

Stop using a regexp that causes a false warning.

  • lib/abbrev.rb (Abbrev#abbrev): Stop using a regexp that causes a false warning. [Bug #7471]

Revision 38805
Added by Yui NARUSE over 1 year ago

  • regparse.c (addctypeto_cc): don't check dup warn on adding negative ctype to cclass. [Bug #7471]

History

#1 Updated by Akinori MUSHA over 1 year ago

  • Assignee changed from Usaku NAKAMURA to Akinori MUSHA

#2 Updated by Akinori MUSHA over 1 year ago

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

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


Stop using a regexp that causes a false warning.

  • lib/abbrev.rb (Abbrev#abbrev): Stop using a regexp that causes a false warning. [Bug #7471]

#3 Updated by Akinori MUSHA over 1 year ago

  • Status changed from Closed to Open
  • Assignee changed from Akinori MUSHA to Yui NARUSE

While I worked around this, the warning itself looks like a bug in our regexp engine (Onigmo?).

#4 Updated by Akinori MUSHA over 1 year ago

Onigmo doesn't have the code for detecting duplication in character class, so this problem seems to be on our own.

I narrowed the problem down:

% ruby@2.0.0 -EUS-ASCII -W2 -e '/[\D]/=~""'
-e:1: warning: character class has duplicated range: /[\D]/
% ruby@2.0.0 -EUS-ASCII -W2 -e '/[\W]/=~""'
-e:1: warning: character class has duplicated range: /[\W]/

Looks like CTYPE + NOT = FAIL.

#5 Updated by Usaku NAKAMURA over 1 year ago

  • Status changed from Open to Assigned

#6 Updated by Yui NARUSE over 1 year ago

  • Status changed from Assigned to Closed

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


  • regparse.c (addctypeto_cc): don't check dup warn on adding negative ctype to cclass. [Bug #7471]

Also available in: Atom PDF